利用matlab处理点云
本文主要分享利用matlab點云工具的相關模塊來處理點云,并通過點云輪廓對點云體積進行簡單的估計測量。
目錄
?
- 利用matlab處理點云
-
- 目錄
- 主要的操作流程圖
- 2具體流程
- 1 點云的讀入和顯示
- 2 點云的處理
-
?
1.主要的操作流程圖
.ply點云文件讀入點云數據顯示點云數據獲取點云輪廓求得點云所占體積結束處理
2、具體流程
2.1 點云的讀入和顯示
假設有一個名為pointcloud.ply的點云文件。——ply格式簡介
pc = pcread('path\pointcloud.ply'); %讀入點云文件 pcshow(pc) %顯示點云這里需要注意.ply文件中頭文件類似這樣的格式:
element vertex 12 property float x property float y property float z property uchar blue property uchar green property uchar red其中x,y,x是三維點云的空間坐標,后面的b,g,r代表每個點的顏色,后一項目對于紋理映射和顯示很重要,可以分別提取出來,隨后用pcshow來顯示;
pcread讀入的文件后生成
Location: [850554×3 single]Color: [850554×3 uint8]Normal: [850554×3 single]Count: 850554XLimits: [6.5701 15.5542]YLimits: [-1.5363 4.2114]ZLimits: [-15.7035 0.2691]我們可以提取出其中的位置和顏色來進行紋理映射并畫圖
figure(1) pc_tmp(:,1) = pc.Location(:,3); %調整點云的方位的和xyz軸 pc_tmp(:,2) = pc.Location(:,1); pc_tmp(:,3) = pc.Location(:,2); pc_col = pc.Color pcshow(pc_tmp,pc.Color)這里利用CMVS/PMVS方法生成的點云數據作為例子:
?
2.2 點云的處理
為了求得這一建筑物的體積,通過獲得這一建筑物的輪廓包絡來得到其體積。主要利用matlab中的alphaShape函數和volum
alphaShape
此函數主要用于從離散的三維空間點云中提取邊緣并建立對應的包絡:
shp = alphaShape(x,y,z)
主要控制參數有alpha值,用于控制生產輪廓的精細程度(越小越細膩)
‘RegionThreshold’ 忽略生成包絡中的小物體,壓制小物體的閾值體積
‘HoleThreshold’ 填充包絡中的空洞,生成完整的體積形態
- *alphaShape(x,y,z,alpha,’HoleThreshold ‘,xx,’RegionThreshold’,xx)
需要注意的是需要將點云的位置坐標轉換為雙精度的類型。
x=pc.Location(:,3);y=pc.Location(:,1);z=pc.Location(:,2);%get point out x = double(x); y=double(y); z= double(z);%獲取點云坐標 alp = 5;region = 0.75;%hole = 1; region = 0.75; shp = alphaShape(x,y,z,alp);%生產點云的包絡數據 %ref:http://cn.mathworks.com/help/matlab/ref/alphashape.html plot(shp)%顯示點云包絡 v= volume(shp); title(['v= 'num2str(v) ,'m3'])?%計算體積并顯示上圖為生成的點云包絡(需要仔細條件參數以生成符合需求精度的包絡),通過volum可計算此包絡所占粗略的體積。
總結
以上是生活随笔為你收集整理的利用matlab处理点云的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab练习程序(点云表面法向量)
- 下一篇: matlab点云配准(总结性)