<分区>
我在 PHP 中开发了一种简单快速的算法来比较图像的相似性。
它的散列速度很快(对于 800x600 图像每秒约 40 张),并且未经优化的搜索算法可以在 22 分钟内完成 3,000 张图像的比较(3 张/秒)。
基本概述是您获取图像,将其重新缩放为 8x8,然后将这些像素转换为 HSV。然后将色相、饱和度和值截断为 4 位,成为一个大的十六进制字符串。
比较图像基本上沿着两个字符串走,然后添加它发现的差异。如果总数低于 64,则它是相同的图像。不同的图像通常在 600 - 800 左右。低于 20 并且非常相似。
我可以使用这个模型有什么改进吗? 我还没有研究不同成分(色调、饱和度和明度)与比较的相关性。色调可能很重要,但其他呢?
为了加快搜索速度,我可能会将每个部分的 4 位分成两半,并将最高有效位放在前面,这样如果它们未通过检查,则根本不需要检查 lsb。我不知道有什么有效的方法来存储这样的位,但仍然可以轻松地搜索和比较它们。
我一直在使用包含 3,000 张照片(大部分是独一无二的)的数据集,没有出现任何误报。它完全不受调整大小的影响,并且对亮度和对比度变化有相当的抵抗力。