视觉相似性搜索算法

Emr*_*rah 8 algorithm search search-engine image-processing similarity

我正在尝试构建像http://labs.ideeinc.com/multicolr这样的实用程序,但我不知道他们使用的是哪种算法,有谁知道?

joh*_*ash 5

他们所做的只是匹配直方图.

因此,为您的图像构建直方图.按图像大小标准化直方图.甲直方图是一样多的元素的颜色的向量.你不需要32,24,甚至可能不是16位的准确度,这只会减慢你的速度.出于性能原因,我将直方图映射到4,8和10-12位.

  • least distance compare在所有4位直方图和样本颜色之间做一个模糊.
  • 然后取该组并进行8位直方图比较.
  • 然后可以将10或12位直方图与剩余集进行比较.这将是性能最高的搜索,因为您要将总集与非常少量的计算进行比较,以找到一个小子集.
  • 然后你处理具有更多计算等的小子集.

真正的大诀窍是找到匹配类似直方图的最佳算法.

  • 从距离计算开始.在3个方面,我认为它是:

    SQRT((x1-x2)^ 2 +(y1-y2)^ 2 +(z1-z2)^ 2)

我是从记忆中做到的,所以请仔细检查以确保.

  • 出于您的目的,您将拥有超过3个维度,因此您将拥有更多条款.4位直方图有16个项,8位有256个项,等等.请记住,这种数学运算速度慢,所以实际上不做这SQRT部分.如果你将图像的大小标准化得足够小,比如说低至10,000像素,那么你知道你只需要x^2为0..10,0000的值做.预先计算x^2x从0..10,000开始的查找表.然后你的计算会很快.

  • 从调色板中选择颜色时,只需使用该颜色= 10,0000制作直方图.选择2时,制作color1 = 5000,color2 = 5000等的直方图.

  • 最后,您将不得不添加软糖因子以使应用程序与现实世界相匹配,但您可以通过测试找到这些因素.