本系列博客將介紹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);
新聞熱點
疑難解答