matlab点云粗配准,(Matlab)3D点云配准与拼接

3D点云配准与拼接

我们使用Matlab来拼接多组点云,使用迭代最近点(Iterative Closest Point,ICP)算法生成重构的3D场景。样例中所使用的点云数据来自于Kinect捕获的3D场景。

配准两组点云数据

dataFile = fullfile(toolboxdir('vision'), 'visiondata', 'livingRoom.mat');

load(dataFile);

ptCloudRef = livingRoomData{1};

ptCloudCurrent = livingRoomData{2};

配准的质量依赖于数据的噪声处理,以及ICP算法的初始设置。为了更好地提高配准效果,我们采用下采样的与处理方式对噪声进行滤波。我们使用盒装网格滤波器,并且把格子大小设置为10cm。网格滤波器将点云空间分成小块,并且把每个方块中的点进行平均,生成新的数据。

gridSize = 0.1;

fixed = pcdownsample(ptCloudRed, 'gridAverage', gridSize);

moving = pcdownsample(ptcloudCurrent, 'gridAverage', gridSize);

我们使用ICP来对两个点云进行配准,然后将重叠的区域进行融合。计算刚性变换的算法如下,

tform = pcregistericp(moving, fixed, 'Metric', 'pointToPlane', 'Extrapolate', true);

pcCloudAligned = pctr

你可能感兴趣的:(matlab点云粗配准)