如果点云之间,旋转的角度非常大,或者平移的距离非常远,
常规的配准都会失效,这个时候,可以考虑手动给予配准算法一个初始值,
具体做法是手动在两个点云上,选取至少三个点,
这三个点在两个点云上表示的位置是一样的,
相当于我们手动把2个点云的映射关系告诉了配准算法。
需要注意的是,三个点的选取不要在一条线上,
尽可能距离的远一些,
形成一个大的三角形最好,
选取的位置在2个点云上尽量做到一致。
# coding:utf-8
import numpy as np
import copy
import open3d as o3d
def draw_registration_result(source, target, transformation):
source_temp = copy.deepcopy(source)
target_temp = copy.deepcopy(target)
source_temp.paint_uniform_color([1, 0.706, 0])
target_temp.paint_uniform_color([0, 0.651, 0.929])
source_temp.transform(transformation)
o3d.visualization.draw_geometries([source_temp, target_temp])
def pick_points(pcd):
print("we: 394467238 ")
prin