互相关或相位相关将告诉您图像是否相同,即使存在噪声,降级以及水平或垂直偏移也是如此。使用基于FFT的方法将使其比问题中描述的算法快得多。
不过,通常的算法不适用于比例或旋转度不同的图像。您可以对其进行预旋转或预缩放,但这确实需要大量处理器。显然,您也可以在对数极坐标空间中进行相关,并且它对旋转,平移和缩放不变,但是我不十分了解这个细节。
MATLAB示例: 使用归一化互相关注册图像
维基百科称此为“ 相位相关 ”,还描述了使比例和旋转不变 :
通过首先将图像转换为对数极坐标,可以扩展该方法以确定两个图像之间的旋转和缩放比例差异。由于傅立叶变换的特性,可以以不变的方式确定旋转和缩放参数。
0
有时,两个图像文件在文件级别上可能不同,但是人们会认为它们在感知上是相同的。鉴于此,现在假设您有一个庞大的图像数据库,并且您想知道一个人是否会认为数据库中存在某些图像X。如果所有图像都具有可感知的哈希/指纹,则可以对图像X进行哈希处理,看一下它是否在数据库中就很简单了。
我知道围绕此问题进行了研究,并且存在一些算法,但是是否有任何工具,例如UNIX命令行工具或我可以用来计算此类哈希值的工具,而无需从头实现某些算法?
编辑:使用ImageMagick从findimagedupes中找到相关代码
编辑: 警告! ImageMagick $ image对象似乎包含有关已读入图像文件的创建时间的信息。这意味着即使是同一图像,如果在不同的时间检索到,您得到的Blob也会有所不同。要确保指纹保持不变,请在最后一步中使用$ image-> getImageSignature()。