其实以下问题不一定要归结到SIFT的内容当中来,因为这是关于特征点匹配方面的,只是由于我是在看SIFT的时候接触到这些,并且也只是有一点粗浅的了解,将一些基础的总结性的知识储备在这里吧。不能算问题,只能是知识点。
1、特征匹配算法分类。通常特征匹配算法可以分为两类。一类是线性扫描法,即穷举法。第二类是建立数据索引,然后再进行快速匹配。索引树就是第二类中的一种,其基本思想是对搜索空间进行层次划分。根据划分的空间是否有混叠(Overlap)可以分为Clipping和Overlapping两种。前者划分的空间没有重叠部分,其代表为Kd-树,后者划分的空间有交叠,但是交叠区内的数据点只能出现在其中的一个空间中,其代表为R-树。Lowe的SIFT在进行特征匹配时采用的Kd-树结构进行匹配。
2、Kd-树建立。简单地说,Kd-树是将n维特征向量按照一定的规则在某一维中划一条“直线”,将数据分为左右两个子空间,然后再迭代地进行此过程(个人认为其思想可可能来源于二叉树,O(∩_∩)O)。具体分为以下几个步骤(非形式化描述):
(1)确定split域。对所有数据点的各个维度上的数据求方差,选择方差最大的轴(维)作为split域(即要在这个轴上“开刀”、“画直线”)。
(2)确定Node-data。根据前面所确定的那一维,取所有数据点在这一维上的中值(上取整),作为要分割的数据点,即画一条通过此点并分割此轴的“直线”。
(3)将