在自动化测试时,经常需要截图和标准图片对比,以此判断测试是否成功,那么用什么来判断测试图片与标准图片是相似的呢?这里需要使用SSIM (Structual Similarity, 结构相似性) 用来判断图片相似度

目录

  • 一、SSIM
  • 二、代码实现
  • 三、测试效果

一、SSIM

通俗说法:
简单而言,常规的图像对比算法都是基于像素整体灰度值,亮度值进行整体对比,但当两张图片色彩相近但内容不同时这些算法就会失效,而SSIM指数是计算相邻像素之间的关系的,是基于整幅图像内容结构,所以当两张图像内容不同(即相邻像素关系与对比图像相差较大)时,SSIM指数很容易检测出来

专业术语:
结构相似性指数(Structural Similarity Index,SSIM index)是一种用以衡量两张数位影像相似程度的指标。当两张影像其中一张为无失真影像,另一张为失真后的影像,二者的结构相似性可以看成是失真影像的影像品质衡量指标。相较于传统所使用的影像品质衡量指标,像是峰值信噪比,由于SSIM是基于局部图案的亮度、对比度进行计算的,所以其在影像品质的衡量上更能符合人眼对影像品质的判断

Wikipedia-结构相似性
图像质量评价之结构相似性SSIM(上)

二、代码实现

我的所有测试脚本都是基于C#编写的,这里需要用到开源图像处理库OpenCvSharp4.Windows,它是在Window系统中对OpenCv库的C#封装。这个库有依赖于其他的库,所以在调用该库前,请确保自己电脑正确安装以下依赖:

在项目Nuget中安装OpenCvSharp4.Windows

全部代码位于这里,请自取 Image.Similarity

三、测试效果


测试的五张图片说明(图片的长宽都相同)


测试结果

所以经过测试我们可以得出以下结论

  • SSIM ≥ 0.999999
    可以认为两张图片"完全一致"。事实上在测试的时候,由于网络波动或者CPU性能原因,图片有时内容完全一致但Size有细微差别,比如标准图片为1478KB,而测试结果图片为1462KB,这个时候我们应该认为这两张图片是一样的,而经过测试显然SSIM指标完全符合这个要求
  • SSIM < 0.999999
    可以认为两张图片不一致。显然,无论是几个像素的修改还是大范围修改,甚至是不同的图片,SSIM指标都能检测出来,也符合我们的要求

当然阈值的标准要看实际应用,这里只是举个例子说明下

【OpenCvSharp】使用SSIM指数衡量图片相似度相关推荐

  1. python 图像识别_python图像识别之图片相似度计算

    作者 | a1131825850疯子 来源 | Python爬虫scrapy 原文 | python图像识别---------图片相似度计算 1.背景 要识别两张图片是否相似,首先我们可能会区分这两张 ...

  2. Python图像识别,图片相似度计算!

    1.背景 要识别两张图片是否相似,首先我们可能会区分这两张图是人物照,还是风景照等......对应的风景照是蓝天还是大海......做一系列的分类. 从机器学习的的角度来说,首先要提取图片的特征,将这 ...

  3. python图像识别之图片相似度计算

    作者 | a1131825850疯子  来源 | Python爬虫scrapy 1.背景 要识别两张图片是否相似,首先我们可能会区分这两张图是人物照,还是风景照等-对应的风景照是蓝天还是大海-做一系列 ...

  4. 利用Python轻松实现图片相似度对比(一)

    关于图片相似度,主要简单介绍以下几种方法: 一:通过图片像素来比较,比较简单,对使用场景有要求 二:通过余弦方法来比较图片 原理: 把图片表示一个向量,通过计算向量之间的余弦值来表征图片的相似度,个人 ...

  5. opencv 简单的图片相似度匹配

    目录 一.基本知识 二.常见的图片相似度去重的方法 三.代码 1.Hash 算法 与 直方图 代码(参考 python OpenCV 图片相似度 Hash算法) (1) 参照代码 (2)自定义 pHa ...

  6. Tensorflow第四课,图片相似度比较前的图片裁剪

    使用Tensorflow来对图片相似度进行比较时,发现在进行相同的一张图片之间的比较时,是可以比较得出结果的.即MSE=0,ssim=1.说明这两张图片是相同的.其中主要MSE和SSIM公式分别通过下 ...

  7. 【精心挑选】10款基于 jQuery 的图片360度旋转插件

    之前的文章向大家分享了实现网站功能的各种优秀的 jQuery 插件,今天这篇文章向大家推荐10款基于 jQuery 的图片360度旋转插件,同时还有非常详细的制作教程可以学习和参考.图片旋转展示是一种 ...

  8. 图片相似度识别_deepface:人脸识别\特征分析

    2021微众银行第三届金融科技高校技术大赛战火再次蔓延,硝烟四起,伙伴约你组团来战! 46万奖金池,名企大厂实习机会随你挑,与小伙伴一起开启属于你的人工智能新时代! deepface是python的轻 ...

  9. python两条曲线图片相似度_Python比较两个图片相似度的方法

    本文实例讲述了Python比较两个图片相似度的方法.分享给大家供大家参考.具体分析如下: 这段代码实用pil模块比较两个图片的相似度,根据实际实用,代码虽短但效果不错,还是非常靠谱的,前提是图片要大一 ...

最新文章

  1. WINCE源代码配置文件
  2. BZOJ 2115 [Wc2011] Xor ——线性基
  3. java中 inheritdoc,【Java】Javadoc的使用
  4. zookeeper系列(九)zookeeper的会话详解
  5. vue 项目:文件夹 结构 、配置详解
  6. cmake BUILD_SHARED_LIB变量
  7. css常用或不熟悉的
  8. 学习java第二天 java体系结构与表面执行流程 (one 大白(●—●))
  9. android 指南针传感器,android 传感器使用 Compass指南针的实现功能
  10. Linux 系统故障修复和修复技巧
  11. 参考文献中英文人名_参考文献中英文人名的缩写规则
  12. html向下三角箭头,CSS 实现三角形尖角箭头的实例
  13. java 多线程 实现死锁问题
  14. 麻省理工大学公开课笔记:算法导论(二)——课程简介及算法分析
  15. 关系数据库——关系操作和关系完整性
  16. labelme 批量转换json文件 详细步骤
  17. 外包:.epub格式漫画解压后图片顺序重排
  18. std::copy与memcpy比较
  19. Redis-master节点宕机后的处理方式
  20. 【全网力荐】堪称最易学的Python基础入门教程

热门文章

  1. pytest05、fixture
  2. 口袋妖怪php源码,查看“精灵宝可梦 X·Y/新宝可梦”的源代码
  3. 京东7亿美元投资兴盛优选,买到了什么?
  4. (上)小程序从0快速入门到实战项目打造个性简历,让你轻松脱颖而出吸引面试官眼球(附源码)
  5. 163/qq邮箱设置POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
  6. Likecloud—吃、吃、吃(P1508)
  7. 知识图谱学习与实践(7)——网页数据抽取(包装器的使用)
  8. Unable to negotiate with xxxxport 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss
  9. h264播放工具-VLC
  10. 花朝节汉服摄影征集、照片征集、视频征集小程序