一尘不染

检测两个图像在视觉上是否相同

algorithm

有时,两个图像文件在文件级别上可能不同,但是人们会认为它们在感知上是相同的。鉴于此,现在假设您有一个庞大的图像数据库,并且您想知道一个人是否会认为数据库中存在某些图像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()。


阅读 277

收藏
2020-07-28

共1个答案

一尘不染

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

2020-07-28