我建议您考虑不再使用RGB直方图。
如果对图像进行二维Haar小波处理(比听起来容易得多,仅进行多次平均并且使用一些平方根来加权系数),则可以获得更好的图像摘要,并且仅保留最大的k将小波中的加权系数作为稀疏矢量进行归一化,然后保存以减小其大小。您应该至少事先使用感知权重来缩放RG和B,或者我建议切换到YIQ(或YCoCg,以避免量化噪声),以便可以降低重要性的色度信息采样。
现在,您可以使用这些稀疏归一化向量中的两个的点积作为相似度。具有最大点积的图像对在结构上将非常相似。这样做的好处是对大小调整,色相移动和水印处理略有抵抗,并且真正易于实现和紧凑。
您可以通过增加或减少k来权衡存储和准确性。
对于这种分类问题,按单个数字分数进行排序将很困难。如果您考虑一下,它将要求图像只能沿一个轴“改变”,而不能。这就是为什么需要特征向量的原因。在Haar小波情况下,大约发生图像中最不连续的地方。您可以成对计算图像之间的距离,但是由于您所拥有的只是一个距离度量标准,因此线性排序无法表示3个均等距的图像的“三角形”。(例如,想象一个全是绿色的图像,一个全是红色的图像和全是蓝色的图像。)
这意味着要解决您的问题,任何真正的解决方案都需要在您拥有的图像数量中进行O(n ^ 2)个操作。如果可以线性化度量,则可以只要求O(n log n),或者如果度量适合于基数排序,则可以要求O(n)。就是说,您不需要花费O(n ^ 2),因为在实践中您不需要筛选整个集合,只需要查找比某个阈值更近的东西即可。因此,通过应用几种技术中的一种来划分稀疏向量空间,与天真地将每个图像与每个图像进行比较相比,您可以获得“发现比给定阈值更相似的图像的更快”的渐近性。您可能需要...即使不是您所要的。
无论如何,几年前,当我尝试最小化我存储的不同纹理的数量时,我亲自使用了此效果,但是在该空间中也有很多研究噪音显示了它的功效(在这种情况下,以更复杂的直方图分类形式):
http://www.cs.princeton.edu/cass/papers/spam_ceas07.pdf
如果您需要更高的检测精度,则可以将minHash和tf-idf算法与Haar小波(或直方图)一起使用,以更强大地处理编辑:
http://cmp.felk.cvut.cz/~chum/papers/chum_bmvc08.pdf
最后,斯坦福大学基于这种方法的一个更奇特的变体进行了图像搜索,它基于从小波中提取更多特征以查找旋转或缩放的图像部分等,但这可能超出了您的工作量想做。
http://wang14.ist.psu.edu/cgi-bin/zwang/regionsearch_show.cgi