点云注册模块

Icon

这里采用了注册到整体的方式进行点云注册。注册应用里,有三个地方可以导入点云,分别对应于三个变量PointCloud_Ref, PointCloud_From, PointCloud_Vector(全局那里的批量导入)。全局注册是对PointCloud_Vector里的点云进行注册,全局融合也是对PointCloud_Vector里的点云进行融合。两两注册的时候,是把PointCloud_From做刚体变换与PointCloud_Ref对齐,两两融合是把这两个点云融合在一起,并把结果赋于PointCloud_Ref,同时这两个对齐点云会放入PointCloud_Vector,用于做最后的全局注册和融合。

逐次导入的一般操作流程是 (视频演示):

  1. 导入需要注册对齐的两帧点云 (红色为固定点云,赋予PointCloud_Ref;绿色为浮动点云,赋予PointCloud_From)。
  2. 对齐-标记: 如果扫描点云有标记点,可以导入标记点“特征点-导入” (标记点文件格式为每行: markCoordX markCoordY markCoordZ). 没有标记点也可以手动在点云上标记点 (鼠标右键点击点云拾取标记点).
  3. 对齐-非标记:如果点云没有标记点,也可以进行无标记拼接。点云需要计算法线,并注意两个点云的法线定向要一致。
  4. 对齐-ICP: 点云初始对齐(标记或者无标记)后,用ICP做精细对齐。
  5. 对齐-融合:使得两个点云融合成一个红色点云,去除点云重叠部分的点。PointCloud_Ref和PointCloud_From融合成一个点云,并把这个点云赋予PointCloud_Ref,另外,对齐的PointCloud_Ref和PointCloud_From会push进PointCloud_Vector,用于做最后的全局注册。
  6. 从第二个导入按钮导入下一帧点云,重复上面的步骤: 初始对齐,ICP对齐,融合
  7. 注册融合完所有的点云后,则得到了注册好的点云序列PointCloud_Vector。点击“全局-注册”对PointCloud_Vector进行点云注册全局优化,再点击“注册-融合”把PointCloud_Vector融合成一个点云。

预处理

  • 法线(支持有序点云):这里的法线计算功能和点云工具箱的法线计算功能是一样的。
  • 特征点:主要用于带标记的扫描注册. 点云标记点格式为:Mark0_X Mark0_Y Mark0_Z ... ... ...

  • 两两注册融合

  • 对齐-标记:用于带标记点的初始对齐,点云需要有法线信息。标记点可以通过鼠标右键在点云上拾取。两个点云的标记点拾取顺序不需要一一对应,个数也不需要一样。
  • 对齐-非标记(支持有序点云):用于无标记点的初始对齐,点云需要有法线信息,参数意义为注册精度,范围是[0,1]。参数越大,对齐的可能性越大,速度也越慢。对于重叠部分较少,或者有些对称的点云,可以提高参数精度来提高对齐的稳定性。fast如果勾上,注册速度更快,但是成功率也会降低,适合特征和重叠较多的情况下使用。有序点云测试数据下载
  • 对齐-ICP(支持有序点云):ICP注册用于有初始对齐的点云,它能提升对齐精度. 目前支持无法线ICP. 建议使用带法线ICP:精度更高,速度更快。注意,有序点云ICP需要先计算法线。有序点云ICP测试数据下载
  • 对齐-非刚体:背景:ICP注册主要用于已经粗注册好的点云,提升注册精度。传统ICP注册是刚体变换。在数据有误差或者微小形变的时候,刚体变换无法完全对齐点云。为了提升注册精度,引入非刚性变换。参数意义为非刚体变换的数量,每个刚体变换作用于点云的一个子片区。数量越多,非刚性越强。数量为1时,即为刚体变换。有形变点云数据下载
  • 对齐-融合:两个点云融合成一个红色点云,去除点云重叠部分的点。这个融合不改变点云坐标。
  • 对齐-重叠检测:计算两个点云的重合度,参数为几何采样的均匀度,值越大,采样越均匀。

  • 全局注册融合

  • 全局-导入:导入多帧点云到PointCloud_Vector变量。
  • 全局-注册:点云全局注册。参数为注册的最大迭代次数,默认参数为10。数据精度越高,初始对齐越好,需要的迭代次数越少,如果数据不好,可以提高迭代次数。点云文件如果包含点云法线信息,注册的结果质量会更高
  • globalregistration
  • 全局-非刚体:非刚体全局注册。左边参数为注册的最大迭代次数,默认参数为10。下面参数为非刚体变换的数量,每个刚体变换作用于点云的一个子片区。数量越多,非刚性越强。数量为1时,即为刚体变换。有形变点云数据下载
  • global_nonrigid_car
  • 一个室内扫描数据的全局注册例子:扫描数据
  • globalregistration
  • 全局-融合:把注册后的点云融合成一个点云,去掉重叠部分的点。参数为点云去重叠的缝隙密度,数字代表点云密度的倍数。参数越大,缝隙越大,默认为1,既为点云密度。
  • 全局-点像对应:导入点像对应文件和图片。点像对应的格式为:map|mmap。几何意义为点云的点到图像中的坐标。导入点像对应文件和图像后,点云会去对应的像素点拾取颜色。可以根据点云的颜色来检验点像对应文件是否正确。
  • 全局-纹理图:把注册好的,并且带有点像对应和图像信息的点云,一键生成带有纹理的网格。输入要求:深度点云+点像对应+对应图片。测试方法:在点云注册应用里,“全局-导入”注册好的点云,然后“全局-点像对应”导入点像对应文件和图片,最后“全局-纹理图”一键创建带纹理的网格。注意:导入点像对应文件和图像后,点云会去对应的像素点拾取颜色。可以根据点云的颜色来检验点像对应文件是否正确。测试数据下载
  • GenerateTextureMesh
  • 颜色融合:单光源点云颜色修正。背景:当摄像机固定,物体自身旋转,比如在转台上,然后单光源固定于模型前面。这种方式采集的图像,有个共同的缺点,就是单帧物体的边缘颜色会比较暗。测试方法:可以导入多帧对齐好的点云,然后用这个功能去除掉黑边色差。相关细节可以参考彩色网格。参数意义为点云密度的倍数,用于判断不同帧点云是否有重叠,默认为1倍。如果点云比较密,或者对齐效果不是很理想,可以适当提升点云密度倍数。
  • color_tune_single_light
  • 全局-有序(支持有序点云):一键顺序注册点云,按照点云文件名的顺序依次注册:2->1, 3->2, 4->3......如果点云没有法线,则会自动计算法线(注意,点云的法线定向是面向相机方向。如果点云不是深度点云,或者做了变换,请先计算法线再做此功能测试)。参数意义:NoMark-是否需要无标记注册;ICP-是否需要ICP。有序无标记测试数据下载有序ICP测试数据下载

  • 如果您有任何疑问和建议,欢迎发email:

    contact