点云处理:ICP配准

import open3d as o3d
import numpy as np

#读取电脑中的 ply 点云文件
source = o3d.io.read_point_cloud("/home/points/3.pcd")  #source 为需要配准的点云
target = o3d.io.read_point_cloud("/home/points/1.pcd")  #target 为目标点云

#为两个点云上上不同的颜色
source.paint_uniform_color([0.4, 0.6, 0.0])   #source 为黄色
target.paint_uniform_color([0.3, 0.3, 0.4])   #target 为蓝色

source = source.voxel_down_sample(voxel_size=0.05)
target = target.voxel_down_sample(voxel_size=0.05)

# source.remove_statistical_outlier(nb_neighbors=50,std_ratio=5)
# target.remove_statistical_outlier(nb_neighbors=50,std_ratio=5)

threshold = 1.5  #移动范围的阀值
trans_init = np.asarray([[1,0,0,0],   # 4x4 identity matrix,这是一个转换矩阵,
                         [0,1,0,0],   # 象征着没有任何位移,没有任何旋转,我们输入
                         [0,0,1,0],   # 这个矩阵为初始变换
                         [0,0,0,1]])

reg_p2p = o3d.pipelines.registration.registration_icp(source, target, threshold, trans_init, o3d.pipelines.registration.TransformationEstimationPointToPoint())
source.transform(reg_p2p.transformation)

# #创建一个 o3d.visualizer class
vis = o3d.visualization.Visualizer()
vis.create_window(window_name ='apple', width=1920, height=1080, left=0, top=0)

render_option = vis.get_render_option()
render_option.point_size = 1
render_option.background_color = np.asarray([0.1, 0.1, 0.2])

#将两个点云放入visualizer
vis.add_geometry(source)
vis.add_geometry(target)

vis.run()

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
点云配准是将两个或多个点云数据集对齐的过程,使它们在同一个坐标系下对齐。其中,SIFT(Scale-Invariant Feature Transform)和ICP(Iterative Closest Point)是常用的点云配准算法。 SIFT算法是一种基于特征的图像匹配算法,可以用于点云数据的特征提取和匹配。通过检测关键点和计算关键点的局部特征描述子,SIFT算法可以在不同尺度和旋转下保持特征不变性。在点云配准中,可以使用SIFT算法提取两个点云的特征点,并通过匹配这些特征点来获取初始的配准变换矩阵。 ICP算法是一种迭代最近点算法,用于将一个点云数据集与另一个点云数据集对齐。ICP通过找到两个点云之间的最佳对应点,并计算最小化它们之间距离的刚性变换矩阵,从而实现点云配准ICP算法通过迭代的方式不断优化配准结果,直到达到预设的停止条件。 综合使用SIFT和ICP可以实现更精确的点云配准。首先,使用SIFT算法提取特征点,并通过特征匹配获取初始的变换矩阵。然后,使用ICP算法迭代优化配准结果,通过最小化点云之间的距离来进一步调整变换矩阵,直到达到收敛条件。 值得注意的是,点云配准是一个复杂的问题,对于不同的应用场景和数据集可能需要选择不同的算法或调整算法参数。此外,还有其他的点云配准算法可供选择,如基于特征的描述子匹配算法、基于几何约束的配准算法等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值