非常相似的图像的图像哈希

9
我正在对一个应用程序进行截屏,并尝试检测是否之前已经出现过相同的图片。我希望能够将微小的变化视为不同 - 例如,如果图像中有文本,并且拼写发生更改,则会被视为不匹配。
我一直在成功地使用屏幕截图图像内容的MD5哈希值来查找已知图像数据库,并检测其是否已经出现过。
现在,我已经将它移植到另一台机器上,尽管我尝试了完全匹配配置,但我得到的图像与旧机器略有不同。当我说不同时,这些变化是微小的 - 如果我将旧图像和新图像放大并在它们之间切换,我看不到任何区别!尽管如此,ImageMagick的“compare”命令可以看到一些像素是不同的。
因此,我的MD5哈希值不再匹配。我需要一种image hash而不是简单的MD5哈希值。
在我的研究中,我发现大多数图像哈希都试图非常宽松——它们接受调整大小、变形和带有水印的图像,并相应地产生误报匹配。我想要一个更加严格的图像哈希——允许的唯一变化是颜色微小变化。
有人可以推荐一个图像哈希库或算法吗?(不是像dupdetector这样的应用程序。)
请记住:我的要求与许多类似问题不同,我不想要像shrinkingpHash这样的自由算法,也不想要像structural similarityImageMagick的compare这样的比较工具。
我想要一个哈希值,使非常相似的图像给出相同的哈希值。那真的可能吗?

2
不,这是不可能的。没有办法知道要丢弃什么。可能的是开发一个图像比较工具,该工具具有可调节的阈值,用于确定两个图像有多相似。(要了解为什么不可能,请想象尝试对戏剧进行类似的操作。例如,检测某人是否只是在戏剧中更改了几个单词。数字必须依赖于每个单词或不依赖于每个单词。因此,您不能仅比较哈希值是否相等,而必须测量它们之间的距离。) - David Schwartz
有趣。比较数百或数千个可能的匹配是不可行的。这有点令人担忧。谢谢。 - Oddthinking
你不必比较成百上千个可能的匹配。你只需比较通常相似的那些。完全不同的那些肯定无法匹配。 - David Schwartz
“自由算法”是什么?还有dhash和idhash(我对dhash的改进)。 - Nakilon
你应该能够使用imagehash完成这个任务:https://pypi.org/project/ImageHash - Robert
1个回答

1
你可以看一下以下名为“谱哈希”的论文。它是一种算法,旨在从图像中生成哈希码,以便将相似的图像分组在一起(请参见论文末尾的检索示例)。这是一个很好的起点。
链接:http://www.cs.huji.ac.il/~yweiss/SpectralHashing/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接