有很多不同的算法可以计算两幅图像之间的相似度,但我找不到任何关于如何将这些信息存储在数据库中以便快速找到相似图像的信息。
“相似”是指经过旋转(90 度增量)、颜色调整和/或重新保存(有损 jpeg 压缩)的精确副本。
我试图想出图像的“指纹”,以便我可以快速查找它们。
到目前为止,我想出的最好的方法是生成灰度直方图。使用 16 个 bin 和 256 种灰度,我可以轻松创建一个 16 字节的指纹。这工作得相当好,但它并不像我想要的那么强大。
我尝试的另一个解决方案是调整图像大小,旋转它们以使它们都以相同的方式定向,对它们进行灰度化,标准化直方图,然后将它们缩小到大约 8x8,并将颜色减少到 16 种灰度。尽管微缩图像非常相似,但它们通常相差一两个像素,这意味着精确匹配无法正常工作。
如果没有精确匹配,我认为没有任何有效的方法可以对相似的照片进行分组(无需将每张照片与其他每张照片进行比较,即 O(n^2))。
那么,(1)如何创建我创建一个与上述要求不变的指纹/签名?或者,(2)如果这不可能,我可以使用什么其他指标,以便给定单个图像,我可以在数千个数据库中找到它的最佳匹配?