Algorithm 视觉相似性搜索算法
我正试图建立一个这样的实用程序,Algorithm 视觉相似性搜索算法,algorithm,search,image-processing,search-engine,similarity,Algorithm,Search,Image Processing,Search Engine,Similarity,我正试图建立一个这样的实用程序, 但我不知道他们使用的是哪种算法,有人知道吗?可能只是创建图像中使用的颜色的直方图,然后对用户选择的颜色进行最佳匹配。他们所做的只是匹配直方图 因此,为你的图像建立一个直方图。根据图像大小对直方图进行规格化。直方图是包含与颜色一样多元素的向量。你不需要32,24,甚至可能不需要16位的准确度,这只会让你慢下来。出于性能原因,我将直方图映射到4、8和10-12位 在所有4位直方图和样本颜色之间进行模糊最小距离比较 然后取该集合并进行8位直方图比较 然后可能会上升到
但我不知道他们使用的是哪种算法,有人知道吗?可能只是创建图像中使用的颜色的直方图,然后对用户选择的颜色进行最佳匹配。他们所做的只是匹配直方图 因此,为你的图像建立一个直方图。根据图像大小对直方图进行规格化。直方图是包含与颜色一样多元素的向量。你不需要32,24,甚至可能不需要16位的准确度,这只会让你慢下来。出于性能原因,我将直方图映射到4、8和10-12位
- 在所有4位直方图和样本颜色之间进行模糊
最小距离比较李>
- 然后取该集合并进行8位直方图比较李>
- 然后可能会上升到一个10或12位的直方图,与剩余的一组进行比较。这将是性能最高的搜索,因为您要将整个集合与非常少量的计算进行比较,以找到一个小的子集李>
- 然后,您将处理计算量较大的小子集,等等
- 从距离计算开始。在3个维度上,我认为是: SQRT((x1-x2)^2+(y1-y2)^2+(z1-z2)^2)
- 出于您的目的,您将拥有3个以上的维度,因此您将拥有更多的术语。4位柱状图将有16个术语,8位柱状图将有256个术语,等等。请记住,这种数学运算速度很慢,所以实际上不要做
部分。如果将图像的大小规格化到足够小,比如说10000像素,那么您知道只需对值0..100000执行SQRT
。预先计算x^2
的查找表,其中x从0到10000。那么你的计算速度会很快x^2
- 当您从调色板中选择一种颜色时,只需制作一个颜色为100000的直方图。选择2时,制作一个颜色1=5000、颜色2=5000等的直方图
- 最后,您将不得不添加捏造因素,以使应用程序与现实世界相匹配,但您将通过测试发现这些因素
- 收集图像中每个像素的颜色
- 对收集到的颜色执行聚类(假设k-mean聚类有5个聚类)
- 将聚集的颜色存储为图像的代表性描述符
图像集合的大小是多少,因为根据大小,某些搜索索引可能比alogorith本身的问题更大?我不确定这是一种“视觉相似性”检测,更像是颜色索引(颜色和面积共享)。由于颜色是由数字组成的,您可以构建算法来进行爬网。感谢我将使用imageJ和我提到的这个程序算法进行模糊最小距离比较。我想我吸毒了。只需进行最小距离比较。:)