检测两个图像在视觉上是否相同
image
image-processing
5
0

有时,两个图像文件在文件级别上可能不同,但是人们会认为它们在感知上是相同的。鉴于此,现在假设您有一个庞大的图像数据库,并且您想知道一个人是否会认为数据库中存在某些图像X。如果所有图像都具有可感知的哈希/指纹,则可以对图像X进行哈希处理,看一下它是否在数据库中就很简单了。

我知道围绕此问题进行了研究,并且存在一些算法,但是是否有任何工具,例如UNIX命令行工具或我可以用来计算此类哈希值的工具,而无需从头实现某些算法?

编辑:使用ImageMagick从findimagedupes中找到相关代码

try $image->Sample("160x160!");
try $image->Modulate(saturation=>-100);
try $image->Blur(radius=>3,sigma=>99);
try $image->Normalize();
try $image->Equalize();
try $image->Sample("16x16");
try $image->Threshold();
try $image->Set(magick=>'mono');
($blob) = $image->ImageToBlob();

编辑: 警告! ImageMagick $ image对象似乎包含有关已读入图像文件的创建时间的信息。这意味着即使是同一图像,如果在不同的时间检索到,您得到的Blob也会有所不同。要确保指纹保持不变,请在最后一步中使用$ image-> getImageSignature()。

参考资料:
Stack Overflow
收藏
评论
共 3 个回答
高赞 时间 活跃

互相关或相位相关将告诉您图像是否相同,即使存在噪声,降级以及水平或垂直偏移也是如此。使用基于FFT的方法将使其比问题中描述的算法快得多。

不过,通常的算法不适用于比例或旋转度不同的图像。您可以对其进行预旋转或预缩放,但这确实需要大量处理器。显然,您也可以在对数极坐标空间中进行相关,并且它对旋转,平移和缩放不变,但是我不十分了解这个细节。

MATLAB示例: 使用归一化互相关注册图像

维基百科称此为“ 相位相关 ”,还描述了使比例和旋转不变

通过首先将图像转换为对数极坐标,可以扩展该方法以确定两个图像之间的旋转和缩放比例差异。由于傅立叶变换的特性,可以以不变的方式确定旋转和缩放参数。

收藏
评论

findimagedupes很好。例如,您可以运行“ findimagedupes -v指纹图像”以使其打印“感知哈希”。

收藏
评论

颜色直方图适用于已调整大小,重新采样等的同一图像。
如果要匹配同一地标的不同人的照片,则比较棘手-查看haar分类器。 Opencv是一个很棒的免费图像处理库。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号