有时,两个图像文件在文件级别上可能不同,但是人们会认为它们在感知上是相同的。鉴于此,现在假设您有一个庞大的图像数据库,并且您想知道一个人是否会认为数据库中存在某些图像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()。
findimagedupes很好。例如,您可以运行“ findimagedupes -v指纹图像”以使其打印“感知哈希”。