Image 特征向量划分

Image 特征向量划分,image,algorithm,opencv,search,tree,Image,Algorithm,Opencv,Search,Tree,我正在阅读有关图像搜索的书籍,我已经对特征向量有了基本的理解,对旋转不变和缩放不变特征有了非常基本的(绝对不完整的)理解。如何查看多采样图像的比例不变性和角点的旋转不变性 要搜索10亿张图片,尽管你无法进行线性搜索。我的大部分阅读似乎暗示K-d树被用作分区数据结构,以提高查找时间 K-d树拆分的标准是什么?如果使用SIFT、SURF或ORB等描述符,则无法保证相似的关键点排列在特征向量中,因此我不清楚如何确定“左”或“右”,因为对于此类特征,您需要基于相似性进行分割。我猜是欧几里德距离的“标准”

我正在阅读有关图像搜索的书籍,我已经对特征向量有了基本的理解,对旋转不变和缩放不变特征有了非常基本的(绝对不完整的)理解。如何查看多采样图像的比例不变性和角点的旋转不变性

要搜索10亿张图片,尽管你无法进行线性搜索。我的大部分阅读似乎暗示K-d树被用作分区数据结构,以提高查找时间

K-d树拆分的标准是什么?如果使用SIFT、SURF或ORB等描述符,则无法保证相似的关键点排列在特征向量中,因此我不清楚如何确定“左”或“右”,因为对于此类特征,您需要基于相似性进行分割。我猜是欧几里德距离的“标准”,然后你做一个稳健的最近邻搜索,但想知道在最近邻搜索之前如何处理KD树的初始查询。我认为KD树需要在每个维度上比较相似的特性,但我不知道在很多关键点上是如何做到的


我可以找到很多关于最近邻搜索的文章,但大多数人似乎认为你知道如何处理这个问题,所以我在这里遗漏了一些东西。

很简单。所有这些特征描述符都将图像表示为多维空间中的一个点。为了简单起见,让我们假设描述符维度为2。所有的图像都会被映射到二维平面上。然后,kd树将该平面分割为矩形区域。属于同一区域的任何图像都将被视为相似

这意味着,顺便说一句,两幅图像彼此非常接近,但位于不同的区域(kd树的叶子)不会被认为是相似的。
为了克服这个问题,可以使用余弦相似性代替欧几里得距离。您可以在中阅读有关该主题的更多信息

我从来没有在CBIR方面做过很多工作,所以我没有太多需要添加的内容,但匹配比例和旋转不变特征的一种方法是提取一个不同的特征,并计算其他特征相对于它的角度。我知道如何使用基本描述符,如最常见的颜色、最突出的色调,参数等的标准偏差。。我不知道你是如何做到这一点的SIFT,冲浪,或球的特点,当没有保证你会击中他们的顺序,它是期望在2个不同的图像,如果一个方向不同。一个orb特征是如何从另一个向左还是向右的?我不明白你是如何将它们编码到kdtree中的。对于每个关键点,你都有一个(比如)128维的描述符。您的描述符总是以相同的顺序构建的,因此它承诺您将对苹果进行比较。然后,您需要将图像的所有关键点与数据库进行匹配,并找到大多数关键点描述符与图像的关键点描述符接近的图像。我建议您阅读原始的更实用的kd树,它不用于拆分128维描述符。它将128个空间分割为超立方体,同一超立方体中的所有点都被视为密钥描述符的邻居。举个简单的例子,让我们回到二维描述符。假设kd树定义了4个区域,即4个象限。然后,如果你得到一个描述符[1,5],它的邻域将是第一象限中的所有数据点,而对于第二个描述符[-5,-12.7]——第三象限中的所有点,我看你肯定可以输入一个单独的关键点描述符。因此,如果您查询kd树中的多个关键点,则删除最近邻搜索以查找共同的图像。将问题粒化。