牛骨文教育服务平台(让学习变的简单)
博文笔记

MATLAB点云处理:读取、展示、最近邻、ICP算法求取转移矩阵、旋转

创建时间:2016-12-24 投稿人: 浏览次数:5639

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");
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。