我有超过 130 万张图像需要相互比较,并且每天都会添加数百张图像。
我的公司拍摄图像并创建一个可供我们的供应商使用的版本。
这些文件通常彼此非常相似,例如,两个不同的公司可以向我们发送两个不同的图像,一个 JPG 和一个 GIF,两者都带有麦当劳徽标,提交时间间隔几个月。
所发生的情况是,最后我们发现自己创建了两个不同时间的同一个徽标,而我们可以简单地复制/粘贴已经创建的徽标,或者至少建议将其作为艺术家可能的起点。
我已经寻找过创建指纹的算法或允许我在上传新图像时进行简单查询的算法,时间相对不是问题,如果创建指纹需要 1 秒,则需要 150 天才能完成创建指纹,但是这会节省大量费用,我们甚至可能需要 3 或 4 个服务器来完成它。
我精通 PHP,但如果算法是伪代码甚至 C,我可以阅读它并尝试翻译(除非它使用一些 C 特定库)
目前,我正在对所有图像进行 MD5 以捕获完全相同的图像,当我考虑调整图像大小并在调整大小的图像上运行 md5 以捕获已更改的图像时,出现了这个问题。以不同的格式保存并调整大小,但我仍然没有足够好的识别能力。
如果我没有提到它,我会很高兴看到一些只是建议可能的“相似”图像的东西。
EDIT
请记住,检查需要每分钟进行多次,因此最好的解决方案是为每个图像提供一些值,我可以存储这些值并在将来使用它们来与我正在查看的图像进行比较,而无需重新扫描整个服务器。
我正在阅读一些提到直方图的页面,或者将图像大小调整为非常小的尺寸,剥离可能的标签,然后将其转换为灰度,对这些文件进行哈希并使用它进行比较。如果我成功了,我将在这里发布代码/答案