三维扫描仪[12] |
您所在的位置:网站首页 › 为什么扫描仪扫描不出完整的内容呢 › 三维扫描仪[12] |
我觉得有必要专门把这段心路历程拿出来分享一下。 在这个简易三维扫描项目中,我们并没有实战拼接。但是我提到了贴点以及其他的拼接办法。现在,我将简单介绍ICP——迭代最近点(Iterative Closest Point, ICP)算法。 ICP算法简介ICP算法是点云精确匹配中一种重要的算法。 1992年,由Besl首先提出,该算法是通过迭代计算,使两片点云上对应点对或点面距离的均方误差最小。其核心算法步骤主要包括: 1)需要找到两幅要匹配点云的最近匹配点。 2)计算两幅匹配点云的旋转矩阵。 3)计算两幅图像的平移矩阵。 4)如果两组点云距离小于给定的阈值或超过最大迭代次数,迭代停止。 放在本项目中,整体会经历四个过程: 1)对原始点云数据进行采样 2)确定初始对应点集 3)去除错误对应点对 4)坐标变换的求解。 其实你只需要百度一下 ICP算法 就可以得到很多很多很详细的说明了。 唯一需要注意的一点! PCL自带OpenNI,和我博客里给出的,也就是MIT那个SampleOpenNI库以及同时安装的OpenNI有冲突!想安装PCL得先把你之前安装的开源玩意删干净。 贴点在被测物体上贴点,或是在被测物体旁边贴点,在拼接时就可以不用ICP迭代迭代再迭代,效率高得很。 但是贴点的话实在是太累了… 最累的其实还不是往上贴的时候,而是向下撕的时候……那个丧心病狂啊! 但是效果还是很好的。 那么什么时候效果不算好呢? 想像一下,有一台这样子的人体扫描仪。 如果设计上图这种大型扫描平台,在平台上提前贴好点,被扫描到的地方都贴上点,可想而知是很多很多点,使用多台扫描仪,在瞬间完成扫描,即可完成拼接。但是如果扫描时间过长,有可能被测物体会移动,导致拼接不准。但是如果不会动就没有这个问题了。 同样是大型扫描平台,如果是要扫汽车,还要贴点,那么就是先贴编码点(理解为大点),再贴小圆点(小点),拿个单反拍整个大点,把大半辆车都拍进去,得到稀疏框架/轮廓点,再拿扫描仪扫小点,最后依靠编码点和小圆点实现拼接。 回到ICP和贴点上来。 就经验来说,没有个80%-90%的重合度就不要用什么ICP了,50%的重合度那几乎一定会错误的,纵使他能返回结果也是错误的,退一步来说,如果我们已经有了这种平台, 至于贴点……真的好麻烦啊…… |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |