05.13点云配准课堂记录—3.1Mathematical model
上次作业
以下是k-d树程序的伪代码,程序里是怎么实现顺序选取三个轴的?
![kd树程序伪代码](https://i-blog.csdnimg.cn/blog_migrate/36b4fe1d6b3646e5f9358589ada761a0.png)
辅助理解的参考链接:https://zhuanlan.zhihu.com/p/81098359
利用取余函数(mod),depth初值为0,每次循环加1,代表当前k-d树深度,k是数据的维度。实现轮流沿着每一个维度进行分割具体思想是:mod k是因为一共有k个维度,在沿着最后一个维度进行分割之后再重新回到第一个维度。
听课记录
- 点云配准实质上是计算两个坐标系之间的转换参数的过程
- 点云是绝对坐标系,获取的是绝对坐标,不存在尺度缩放参数,故7参数变6参数:3个旋转参数和3个平移参数
- 点云配准的困难点:同名点(连接点)的选取
- 单位四元数的优点:避免了欧拉角旋转表示法中遇到的万向节死锁的问题
- 同名点(连接点)的选取的方法:人工标靶、迭代最邻近点(ICP)、面特征、图像特征
- ICP的前提条件:完成粗配准后,部分地区还有些问题,要求相邻点云之间存在较大程度的重叠
- ICP对初值比较敏感体现在:它是一种精配准的方法,是需要在粗配准完成后局部配准还不是很完美,需要继续配准完善的情况下使用,通过最近邻搜索去确定同名点。
- 辅助关于时间复杂度这一概念的理解: https://blog.csdn.net/kang123488/article/details/79768205
课堂提问
构成旋转矩阵的三个转角,如果已飞机为参考如何定义,对应的中文术语分别是什么?
![三个转角](https://i-blog.csdnimg.cn/blog_migrate/b92d38f6f3debea669e90bf040efafb9.jpeg)
全站式三维激光扫描直接获取获取的三维坐标与机载、车载获取的坐标有何异同?
三维激光扫描可以直接获取坐标,全站式的激光扫描采集方式是固定的,是以仪器中心为原点为坐标系,获取的是局部坐标,每次测量的点云的坐标系都不一样。将两次测量的点云直接放到一起,得到的扫描到的同一地区的点不会重合到一起。所以在应用时,需要将在局部坐标的点云转换到同一个参考坐标系下。
机载、车载的扫描方式每次获取的是一条线,得到的数据是基于WGS-84 坐标系的,即获得的点云数据是在统一坐标系下的。
能不能直接把两个分别在不同独立坐标系的点云放在一起直接使用ICP的方法?
不能,ICP是一种精配准的方法,是需要在粗配准完成后局部配准还不是很完美,需要继续配准完善的情况下使用(也就是点云已经基本配准完毕,局部地区还有些问题),通过找近邻点去确定同名点完成粗配准的方法。
而当不同组点云数据未完成粗配准时,用最邻近点作为同名点这种方法的前提假设是不成立的,不能用这种方法去找同名点,故自然不能直接把两个分别在不同独立坐标系的点云放在一起直接使用ICP的方法。
课后作业
ICP的方法里什么地方会用到数据组织的结构?这4种结构的时间复杂度分别是什么样的?
在最近邻搜索去确定同名点时会用到,为提高最邻近点的效率,将点云做特定组织结构,常见方法有4种:2D distance images(二维影像)、Delaunay triangulation(狄罗尼三角网)、Octrees(八叉树)、k-d tree(k-d树),它们各自算法的时间复杂度如下。
-
常见的算法时间复杂度由小到大依次为:Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n2)<Ο(n3)<…<Ο(2n)<Ο(n!)
-
2D distance images(二维影像):相邻的像素对应着相近顺序的激光脉冲,要想找最邻近点时,循环遍历周围的一圈邻域的点云数据即可,时间复杂度为线性阶O(n),属于多项式时间
-
Delaunay triangulation(狄罗尼三角网):问题的规模为点云中点的总个数n(没有重合的点),循环内的基本的操作:
- 寻找插入点所在的三角形
- 不借助特殊的数据结构,按照一般顺序查找O(n2)
- 用的别的数据结构来存储三角网,减少了寻找插入点所在的三角形与寻找共测试边的第三顶点的复杂度O(nlogn)
- 测试点是否在外接圆内O(1)
- 更新三角网O(n)
- 寻找共测试边的第三顶点O(n2)
综上所述,总的时间复杂度为各部分的和,故为平方阶O(n2)或线性对数阶O(nlogn),属于多项式时间
- 寻找插入点所在的三角形
-
Octrees(八叉树):八叉树的常见查找方法一般采用分治算法,时间复杂度为对数阶O(log8n),属于多项式时间
-
k-d tree(k-d树):分层查找的时间复杂度为O(log2n),查找层中元素的时间复杂度为O(n),故k-d树的时间复杂度为线性对数阶Ο(nlog2n),属于多项式时间