MATLAB 中关于点云的几个函数的简单应用。作者使用的是 MATLAB R2015b,
这几个函数应该是在 Computer Vison 包里。
全文都是作者自己结合 MATLAB 文档的理解,欢迎指教。
1. pcread: 输入文件名,返回 pointCloud 类(用于存储点云)。eg: pcloud =
pcread(“filename.ply”)
2. pcshow: 输入 pointCloud 类,展示该点云图。eg: pcshow(pcloud)
3. pcshowpair: 输入两个 pointCloud 类,一起展示两个点云图。eg: pcshowpa
ir(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');