KD-tree学习笔记

来源:互联网 发布:如何求最大公约数 算法 编辑:程序博客网 时间:2024/05/01 08:14

来源:在ICP算法中,提到在目标点云中寻找若干特征点,然后利用K-D tree寻找这些特征点在参考点云中的最近点。此步骤目的是减少泛时间代价O(logNx


如上图(a),我们先对待识别的物体的图像进行SIFT特征点的检测和特征点的描述,然后得到了SIFT特征点集合。接下来生成物体目标描述要做的就是对特征点集合进行数据组织,形成一种特殊的表示,其作用是为了加速特征点匹配的过程。所谓的特征点匹配本质上是一个通过距离函数(例如欧式距离)在高维矢量之间进行相似性检索的问题,简单来讲就是范围查询或者K近邻查询的问题。

 

范围查询就是给定查询点和查询距离阈值,从数据集中找出所有与查询点距离小于查询距离阈值的数据;K近邻查询就是给定查询点和正整数K,从数据集中找到距离查询点最近的K个数据,当K=1时,它就是最近邻查询。

 

如上图(b)我们从输入图像中进行SIFT特征点的检测和特征点的描述后,得到了一个待查询点的集合,接下来就是要找出集合中的每一个待查询点在(a)过程得到的目标物体的特征点集合中进行2近邻查询(即得到最近邻和次近邻),得到一组特征点的匹配对<待查询点,待查询点的最近邻>;得到所有匹配对后,然后通过阈值法(与最近邻的距离要小于一个常数)和比值法(与最近邻的距离比次近邻的距离要小于一个常数)进行提纯,滤去较差的匹配对。得到最终的匹配对集合。

 

简介:k-d树(k-dimensional树的简称),是一种分割k维数据空间的数据结构。主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索)。

一、k近邻算法

K最近邻(k-Nearest Neighbour,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。

该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。 KNN方法虽然从原理上也依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关。由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。

 

 

由Bentley于1975年提出,二叉索引树的不同之处在于,KDTree的每个节点表示k为空间中的一个点,且树的每一层都根据这层的分辨器做出分枝决策。

 

KD-TREE性质:

1) 若它的左子树不为空,则左子树上所有节点的第d维的值均小于它的根节点的第d维的值,其中d为根节点的分辨器值;

2) 若它的右子树不为空,则右子树上所有节点的第d维的值均大于或等于它的根节点的第d维的值;

3) 它的左右子树也分别为KI-Tree

    基于Kd-Tree索引的近似最近邻搜索的过程如下:

    1)根据输入的k维数据点集 建立KdTree;

    2)利用优先队列,针对给定的目标点,搜索整个KD Tree,找到m个最近邻的点:从根节点开始扫描到叶子节点,错过的节点进入有限队列;然后再从队列中取出当前维度上距离最小的点,重复扫描到叶子节点,直到队列为空,或扫描次数达到设定上限值;

    3)若找到m个最近邻点,比较最近邻点和次近邻点到目标点的距离,若小于给定的阂值,则选择该最近邻点作为搜索结果;若没有找到,则返回空。为了计算简便,这里取m=2。

0 0
原创粉丝点击