MATLAB中关于点云的几个函数的简单应用。作者使用的是MATLAB R2015b,这几个函数应该是在Computer Vison包里。
全文都是作者自己结合MATLAB文档的理解,欢迎指教。
1. pcread: 输入文件名,返回pointCloud类(用于存储点云)。eg: pcloud = pcread(“filename.ply”)
2. pcshow: 输入pointCloud类,展示该点云图。eg: pcshow(pcloud)
3. pcshowpair: 输入两个pointCloud类,一起展示两个点云图。eg: pcshowpair(pcloud1,pcloud2)。
4. pcregrigid: ICP算法求取两个点云图之间的转移矩阵,输入两个点云图,返回一个转移矩阵。eg: trans = pcregrigid(moving_pcloud, fixed_pcloud)。
5. pctransform: 旋转一个点云图,输入一个需要旋转的点云图,以及旋转矩阵,返回旋转之后的点云图。eg: tranformed_cloud=pctransform(pcloud,trans)。
6. findNearestNeighbors: 在给定点云图中寻找指定点的k个最近邻,返回在点云图中的索引值以及距离。eg: [indice, dist] = findNearestNeighbors(pcloud, pointCloud.Location, k)
下面代码是作者自己一个做的一个demo,读入Stanford兔子,然后旋转270度的兔子到180度,再将两者共同展示进行比较。
%#function pcread
name_list = ['000';'045';'090';'180';'270';'315'];
for i = 1:6
name = name_list(i,:);
eval(['bun',name,'=pcread(''bun',name,'.ply'');']);
end
trans_270_180 = pcregrigid(bun270,bun180);
bun270_180trans = pctransform(bun270,trans_270_180);
figure;
subplot(2,2,1);
pcshow(bun180);
title('bun180');
subplot(2,2,2);
pcshow(bun270);
title('bun270');
subplot(2,2,3);
pcshow(bun270_180trans);
title('bun270-180trans');
subplot(2,2,4);
pcshowpair(bun180,bun270_180trans);
title('pair show');
