CloudCompare点云配准基本操作

CloudCompare基本介绍

官方网站
https://cloudcompare.org/
官方文档
https://cloudcompare.org/doc/qCC/CloudCompare%20v2.6.1%20-%20User%20manual.pdf

文章目录

  • CloudCompare基本介绍
  • CloudCompare基本技巧
  • 点云数据读入
  • 点云对象的颜色设置
  • 点云对象的拖动,旋转
  • CloudCompare点云配准流程
  • 粗配准
  • 精配准

  • CloudCompare基本技巧

    点云数据读入

    由于本人主要从事图像处理方面的工作,平时一般使用tif格式的数据。但CloudCompare软件对于tif格式的不能直接读入,因此暂且使用txt格式文件对数据进行转换写入。

    转换的代码也很简单,这里贴上本人的python代码:

    import os
    import numpy as np
    import SimpleITK as sitk
    from skimage import io
    
    if __name__ =="__main__":
    	# file name
        name = "tif_file"
        # resolution setting
        resolution = [1, 1, 4]
    
        path = name + ".tif"
        # read file
        label_volum = io.imread(path)
        # find meshes
        label_pts = np.argwhere(label_volum == 1)
        with open(name + ".txt","w") as f:
            for pt_index in range(label_pts.shape[0]):
                # x, y, z
                f.write("%d %d %d\r\n"%(label_pts[pt_index, 2] * resolution[-3], 
                label_pts[pt_index, 1] * resolution[-2], 
                label_pts[pt_index, 0] * resolution[-1]))
        print("OK")
    

    转换后会有同名的txt文件出现,将其拖入CloudCompare中,即可完成读入工作。

    点云对象的颜色设置

    上一步骤我们将两个点云文件拖入软件中,两个点云文件是microCT图像的血管分割图,一个是全局分割,一个是局部分割。由于软件默认点云对象是白色,且两者坐标一致,因此难以区分。这里可以采用不同的颜色设置,进行区分
    颜色设置首先选择其中一个对象

    选择Edit->Color->set unique对单一对象设置颜色。

    对两个对象分别设置红色与绿色

    点云对象的拖动,旋转

    左键:整体点云对象的旋转
    右键:整体点云对象的平移
    滚轮:整体点云对象的缩放
    单一对象的操作需要先选中对象
    选择Edit->Translate/Rotate

    出现右上角小窗口后即可对单一目标使用左右键进行平移旋转操作

    变换完成后,点击右上角的小勾即可。

    CloudCompare点云配准流程

    粗配准

    Registration > Align (point pairs picking)
    用户手册p102

    这里根据手册上进行简要说明一下
    选中两个对象,选择Align

    选择被匹配对象

    在两个点云对象之间选择对应的三个及以上的点,可以放大视图进行选择,点最好分散一点。

    选择完成后点击图片中的“Align”按钮,即可进行手动粗配。
    点击小勾即可输出变换矩阵。可以看出,效果尚可。
    高级参数adjust scale可以确定两个点集之间的最佳比例因子。要允许优化比例参数,只需取消选中固定比例复选框。如果两个云具有不同的比例,而你不知道它们之间的比例因子,则这非常有用。警告:如果比例系数不同,完成此工具后得到的是4×4的仿射矩阵。这样的话使用该矩阵的逆就无法将点云恢复到未配准之前的状态。

    参考链接:https://blog.csdn.net/qq_36686437/article/details/119966436

    精配准

    点击ICP

    注意局部与整体配准时,一定要选好to-be-aligned与reference对象,两者互换可以点击swap按钮。

    Number of iterations/RMS difference:ICP是一个迭代过程。在此过程中,配准误差(缓慢)减少。我们可以告诉CC在最大迭代次数后停止此过程,或者在两次迭代之间的误差(RMS)差低于给定阈值时停止此过程。该阈值越小,收敛所需的时间越长,但结果应该越精细(注意:由于CC使用32位浮点值,1e-8阈值已经接近计算精度极限,因此不必再降低)。
    Final overlap:设置待配准点云之间的重叠度。
    Adjust scale:如果待配准的两个点云尺寸不一致,可以选上该选项。


    Random sampling limit:为了大幅度提高计算速度,CC使用了一种优化方案。它包括在每次迭代时对数据云进行随机子采样。此参数是子采样点的最大数量。默认值(50000)通常是一个很好的猜测,其对结果的影响是不可感知的。然而,对于数据量非常大的点云来说,它可能是不够的。因此,如果您对结果有疑问,或者如果您想进一步精细化配准,并且不害怕等待很长时间,请毫不犹豫地增加此值(要完全停用此优化方案,只需输入一个大于点云点数的数字即可)。
    Rotation:增加指定轴(X、Y或Z)旋转约束。
    Translation:增加平移方向的约束。
    Enable farthest point removal:剔除距离较远的点,对于噪声点有一定的抑制性。
    Use displayed model/data scalar field as weights:此选项应允许用户使用标量值作为权重(主要用于点云与模型的配准,不建议用于两个点云的配准。)

    点击OK,得到最终精配结果

    物联沃分享整理
    物联沃-IOTWORD物联网 » CloudCompare点云配准基本操作

    发表评论