1. Hide and Show 3-D Point Cloud Figure - 显示和隐藏3D图
player=pcplayer(ptCloud.XLimits,ptCloud.YLimits,ptCloud.ZLimits);
创建显示坐标系
>> hide(player) // 隐藏
>> show(player) // 显示
>> view(player,ptCloud); // 显示点云
点云显示也可用 pcshow(ptCloud).
2. Align Two Point Clouds -点云匹配
首先读入点云 teapot.ply , 然后创建旋转及平移矩阵 A ,使用函数 pctrandform 变换点云。 点云匹配采用函数 pcregrigid ,求出匹配成功后的矩阵。
A=[cos(pi/6) sin(pi/6) 0 0; -sin(pi/6) cos(pi/6) 0 0; 0 0 1 0; 5 5 10 1];
tform1=affine3d(A);
ptCloudTformed=pctransform(ptCloud,tform1);
figure
pcshow(ptCloudTformed);
title('Transformed Teapot');
tform=pcregrigid(ptCloudTformed,ptCloud,'Extrapolate',true); //求点云匹配矩阵
disp(tform1.T);
tform2=invert(tform);
disp(tform2.T);
可以发现矩阵完全一致,匹配正确。
3. Merge Two Identical Point Clouds Using Box Grid Filter -用网格滤波合并两个点云
>> ptCloudA=pointCloud(100*rand(1000,3));
>> ptCloudB=copy(ptCloudA);
>> ptCloudC=pcmerge(ptCloudA,ptCloudB,1);
>> pcshow(ptCloudC);
4. Remove Outliers from Noisy Point Cloud -从点云中除去离群值
gv=0:0.01:1;
[X,Y]=meshgrid(gv,gv);
ptCloud=pointCloud([X( : ),Y( : ),0.5*ones(numel(X),1)]); //创建点云平面
figure
pcshow(ptCloud);
title('Original Data');
noise=rand(500,3);
ptCloudA=pointCloud([ptCloud.Location;noise]); //生成随机噪音点
figure
pcshow(ptCloudA);
title('Noisy Data');
% Remove outliers
ptCloudB=pcdenoise(ptCloudA); //除去离群值
figure
pcshow(ptCloudB);
title('Denoised Data');
5. Downsample Point Cloud Using Box Grid Filter -用格子滤波进行降采样
ptCloud=pcread('teapot.ply');
gridStep=0.1;
ptCloudA=pcdownsample(ptCloud,'gridAverage',gridStep); //box grid filter 降采样
figure;
pcshow(ptCloud);
figure;
pcshow(ptCloudA);
stepSize=floor(ptCloud.Count/ptCloudA.Count); //固定步长降采样
indices=1:stepSize:ptCloud.Count;
ptCloudB=select(ptCloud,indices);
figure;
pcshow(ptCloudB);