本系列博客将介绍Matlab中机器视觉工具箱的应用,部分案例,主要关于点云处理方面,更多内容见Matlab官方文档。如有翻译错误请批评指正!所有代码经自己运行测试通过。转载请注明链接 :http://blog.csdn.net/kaspar1992
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);figurepcshow(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)]); //创建点云平面figurepcshow(ptCloud);title('Original Data');noise=rand(500,3);ptCloudA=pointCloud([ptCloud.Location;noise]); //生成随机噪音点figurepcshow(ptCloudA);title('Noisy Data');% Remove outliersptCloudB=pcdenoise(ptCloudA); //除去离群值figurepcshow(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);
新闻热点
疑难解答