Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 视觉相似性搜索算法_Algorithm_Search_Image Processing_Search Engine_Similarity - Fatal编程技术网

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个术语,等等。请记住,这种数学运算速度很慢,所以实际上不要做
    SQRT
    部分。如果将图像的大小规格化到足够小,比如说10000像素,那么您知道只需对值0..100000执行
    x^2
    。预先计算
    x^2
    的查找表,其中x从0到10000。那么你的计算速度会很快

  • 当您从调色板中选择一种颜色时,只需制作一个颜色为100000的直方图。选择2时,制作一个颜色1=5000、颜色2=5000等的直方图

  • 最后,您将不得不添加捏造因素,以使应用程序与现实世界相匹配,但您将通过测试发现这些因素


我建议您对数据库中图像中的颜色进行某种聚类。我的意思是,对于数据库中的每个图像:

  • 收集图像中每个像素的颜色
  • 对收集到的颜色执行聚类(假设k-mean聚类有5个聚类)
  • 将聚集的颜色存储为图像的代表性描述符
当用户提供一组一种或多种查询颜色时,您会进行某种贪婪匹配,在给定颜色和数据库中每个图像的颜色描述符(5种代表性颜色)之间选择最佳匹配


图像集合的大小是多少,因为根据大小,某些搜索索引可能比alogorith本身的问题更大?

我不确定这是一种“视觉相似性”检测,更像是颜色索引(颜色和面积共享)。由于颜色是由数字组成的,您可以构建算法来进行爬网。感谢我将使用imageJ和我提到的这个程序算法进行模糊最小距离比较。我想我吸毒了。只需进行最小距离比较。:)