当前位置:  开发笔记 > 编程语言 > 正文

如何测量两幅图像之间的相似度?

如何解决《如何测量两幅图像之间的相似度?》经验,为你挑选了8个好方法。

我想比较一个应用程序(可能是一个网页)的屏幕截图与之前拍摄的屏幕截图,以确定应用程序是否正确显示自己.我不想进行完全匹配比较,因为方面可能略有不同(在Web应用程序的情况下,取决于浏览器,某些元素可能位于稍微不同的位置).它应该衡量屏幕截图的相似程度.

是否有图书馆/工具已经做到了?你会如何实现它?



1> angry person..:

这完全取决于您希望算法的智能程度.

例如,以下是一些问题:

裁剪图像与未裁剪图像

添加了文本的图像与没有添加的文本

镜像图像

我见过的最简单,最简单的算法就是对每个图像执行以下步骤:

    缩放到小的东西,如64x64或32x32,忽略宽高比,使用组合缩放算法而不是最近的像素

    缩放颜色范围,使最暗的颜色为黑色,最亮的颜色为白色

    旋转并翻转图像,使最左边的颜色位于左上方,然后右上角是下一个较暗,左下角则是较暗(当然尽可能)

编辑一个结合缩放算法是一个缩放10个像素时下降到一个会使用一个函数,所有的10个像素的颜色和它们组合成一个做到这一点.可以使用平均,平均值或更复杂的算法(如双三次样条)等算法来完成.

然后计算两个图像之间的逐个像素的平均距离.

要在数据库中查找可能的匹配项,请将像素颜色存储为数据库中的单个列,索引其中一组(但不是全部,除非您使用非常小的图像),并执行使用每个列的范围的查询像素值,即.每个图像,其中小图像中的像素位于要查找的图像的-5到+5之间.

这很容易实现,并且运行起来相当快,但当然不会处理大多数高级差异.为此,您需要更高级的算法.


什么是"组合缩放算法"?

2> Louis Brandy..:

测量这种情况的"经典"方法是将图像分解为一些规范数量的部分(例如10x10网格),然后计算每个单元格内RGB值的直方图并比较相应的直方图.这种类型的算法是优选的,因为它的简单性和它对缩放和(小!)转换的不变性.


这不是类似于为整个图像做一个直方图,但是还有一个缺点是镜像和旋转不具有弹性?

3> Lehane..:

使用标准化颜色直方图.(阅读这里的应用程序部分),它们通常用于图像检索/匹配系统,是一种非常可靠,相对快速且易于实现的匹配图像的标准方法.

基本上,颜色直方图将捕获图像的颜色分布.然后可以将其与另一图像进行比较以查看颜色分布是否匹配.

这种类型的匹配非常适合缩放(一旦直方图被标准化),以及旋转/移位/移动等.

避免逐像素比较,就好像图像稍微旋转/移动一样,可能会导致报告的差异很大.

直方图可以直接生成自己(假设您可以访问像素值),但如果您不喜欢它,OpenCV库是执行此类内容的绝佳资源.这是一个powerpoint演示文稿,向您展示如何使用OpenCV创建直方图.



4> Mark B..:

像MPEG这样的视频编码算法不会计算视频每帧之间的差异,因此它们只能对delta进行编码吗?您可以研究视频编码算法如何计算这些帧差异.

看看这个开源图像搜索应用程序http://www.semanticmetadata.net/lire/.它描述了几种图像相似度算法,其中三种来自MPEG-7标准:ScalableColor,ColorLayout,EdgeHistogram和Auto Color Correlogram.



5> 小智..:

您可以使用纯数学方法O(n^2),但只有在您确定没有偏移或类似的情况下它才有用.(虽然如果你有一些具有均匀着色的物体,它仍然可以很好地工作.)

无论如何,这个想法是计算两个矩阵的归一化点积. C = sum(Pij*Qij)^2/(sum(Pij^2)*sum(Qij^2)).

这个公式实际上是矩阵之间角度的"余弦"(wierd).相似性越大(比如说Pij=Qij),C就会为1,如果它们完全不同,就让每一个i,j Qij = 1(避免零分割)Pij = 255,然后对于大小nxn,越大n,我们就越接近于零得到.(通过粗略计算:) C=1/n^2.



6> Konrad Rudol..:

你需要模式识别.为了确定两个图像之间的微小差异,Hopfield网络工作得相当好,并且很容易实现.不过,我不知道任何可用的实现.



7> edk750..:

这里可以找到红宝石溶液

从自述文件:

Phashion是一个围绕pHash库的Ruby包装器,"感知哈希",它可以检测重复和接近重复的多媒体文件



8> 小智..:

如何衡量两幅图像之间的相似性,完全取决于你想测量,例如什么:对比度,亮度,情态,噪声......然后选择最合适的相似性度量有你.您可以选择MAD(平均绝对差值),MSD(均方差),它们有助于测量亮度......还有可用的CR(相关系数),它可以很好地表示两个图像之间的相关性.你也可以从如基于直方图相似措施选择SDH(差分图像直方图的标准偏差)或类似的多模态相似的措施MI(互信息)或NMI(归一化互信息).

由于这种相似性测量的成本很高,因此建议在对其应用这些测量之前缩小图像.

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有