我试图建立一个像这样的实用程序http://labs.ideeinc.com/multicolr, 但我不知道他们使用哪种算法,有谁知道?视觉相似性搜索算法
回答
他们所做的只是匹配直方图。
因此,为您的图像构建一个直方图。根据图像的大小对直方图进行归一化。 A 直方图是具有与颜色一样多的元素的矢量。你不需要32,24,甚至不需要16位的精度,这只会让你放慢速度。出于性能原因,我会将直方图映射到4,8和10-12位。
- 在所有4位直方图和您的样本颜色之间做一个模糊
least distance compare
。 - 然后取那个集合并做8位直方图比较。
- 然后,也许会上升到一个10或12位直方图比较其余的设置。这将是性能最高的搜索,因为您将总集与少量计算进行比较,以找到一个小子集。
- 然后你在小的子集有更大数量的计算工作,等
真正的大招是要找到匹配类似直方图最好的算法。
以距离计算开始。在3个维度,我认为它是:
SQRT((X1-X2)^ 2 +(Y1-Y2)^ 2 +(Z1-Z2)^ 2)
我这样做从记忆中,所以看看它确保。
为了您的目的,您将有超过3个维度,因此您将拥有更多条款。一个4位的直方图可能有16个项,8位的有256个项,等等。请记住,这种数学运算速度很慢,所以实际上并没有做
SQRT
部分。如果将图像的大小标准化得足够小,请将其降至10,000像素,然后您就知道只有对于值0..10,0000才会执行x^2
。预先计算x^2
的查找表,其中x从0..10,000变化。然后你的计算会很快。当您从调色板中选择一种颜色时,只需制作一个颜色为10,0000的直方图即可。当选择2时,使用color1 = 5000,color2 = 5000等制作直方图。
最后,您将不得不添加模糊因素以使应用程序与现实世界相匹配,但您会发现这些使用测试。
谢谢我将使用imageJ和这个程序算法 http://rsb.info.nih.gov/ij/plugins/color-inspector.html – Emrah 2009-06-12 19:37:56
可能只是创建图像中使用的颜色的直方图,然后做最适合用户选择的颜色。
我建议你对数据库中的图像中存在的颜色进行某种聚类。我的意思是,在你的数据库中的每个图像:
- 收集每个像素的颜色的图像
- 进行聚类中(假设有5群K均值聚类)对所收集的颜色
- 店聚集颜色的图像
当用户提供了一组你做某种贪婪匹配的选择给出颜色和颜色描述(5种reprsentative色彩之间的最佳匹配一个或多个查询的颜色代表描述符)的数据库中的每个图像。
你的图像集的大小是多少,因为根据大小,一些搜索索引可能比alogorith本身更大的问题?
- 1. 视觉相似度算法(用于CBIR)
- 2. 视觉相似性的反向图像搜索API?
- 3. 搜索颜色相似性
- 4. 心理视觉图像相似度算法/库
- 5. 视觉算法
- 6. 沃森视觉识别与图像批量相关的相似度搜索API
- 7. 在搜索算法将类似数据
- 8. 相似和语义搜索
- 9. 离散相似性度量算法
- 10. 立体视觉算法
- 11. 我似乎无法得到面搜索弹性搜索
- 12. 搜索算法
- 13. 搜索算法
- 14. 在vim中搜索视觉选择
- 15. 视觉工作室喜欢搜索
- 16. 使用索引搜索相似单词
- 17. .net搜索算法?
- 18. 图搜索算法
- 19. 搜索算法 - Java
- 20. 跳搜索算法
- 21. 试图计算搜索词之间的相似度
- 22. 文字相似度算法
- 23. 字符串相似算法
- 24. 搜索最佳点搜索算法
- 25. Zend Lucene搜索相关性
- 26. Azure搜索相关性
- 27. Ruby - 搜索相似字的文件
- 28. 如何用Python搜索相似的列?
- 29. 如何高效地实现文档相似性搜索系统?
- 30. MySQL/PHP全文搜索1个词的相似性
我不确定这是一种“视觉相似性”检测,更像是颜色索引(颜色和面积份额)。由于颜色是由数字组件构成的,因此您可以构建算法来抓取这些数据。 – 2009-06-12 17:09:46