MeshLab中进行点云配准
MeshLab是一個開源、可移植和可擴(kuò)展的三維幾何處理系統(tǒng),主要用于交互處理和非結(jié)構(gòu)化編輯三維三角形網(wǎng)格。它支持多種文件格式:
- import:PLY, STL, OFF, OBJ, 3DS, COLLADA, PTX, V3D, PTS, APTS, XYZ, GTS, TRI, ASC, X3D, X3DV, VRML, ALN
- export:PLY, STL, OFF, OBJ, 3DS, COLLADA, VRML, DXF, GTS, U3D, IDTF, X3D
下面來試一下MeshLab中的點云配準(zhǔn)功能,為了進(jìn)行驗證,需要先創(chuàng)建兩塊位置姿態(tài)不匹配的點云。這里使用開源的三維建模軟件Blender,首先在Blender中按X鍵刪除默認(rèn)的立方體后,按Shift+A創(chuàng)建一個猴頭suzanne(Suzanne?is?Blender's alternative to more common test models such as the Utah Teapot and the Stanford Bunny),然后添加一個修改器,Subdivision Surface將Render設(shè)置為1之后點擊Apply。
接下來將其輸出為PLY格式的文件(?PLY文件格式是Stanford大學(xué)開發(fā)的一套三維mesh模型數(shù)據(jù)格式,它允許以ASCII碼格式或二進(jìn)制形式存儲文件,在圖形學(xué)的研究領(lǐng)域中PLY是種常用且重要的文件格式)
然后將該猴頭在Blender中平移和旋轉(zhuǎn)到另一個位置,這里沿著XYZ軸分別平移了2個單位(Blender中使用鍵盤命令:GX2、GY2、GZ2),然后繞Z軸旋轉(zhuǎn)了-45°(RZ-45),最后也將其輸出為PLY文件。
?
這一變換對應(yīng)的變換矩陣T為:
在MeshLab中導(dǎo)入這兩個文件,渲染模式選為點后可以看到兩塊點云,如下圖所示。
接著點擊工具欄上的Align按鈕進(jìn)行配準(zhǔn),這時會彈出一個Align Tool的對話框。首先要選擇參考點云,這里將沒有平移旋轉(zhuǎn)的原始點云作為參考,然后點擊Glue Here Mesh,選擇好之后點云名字前面會出現(xiàn)一個星號。
然后選擇另一塊點云,點擊Point Based Glueing,這時彈出一個窗口,在兩塊點云上手動選擇匹配點,至少選4對點之后點OK確認(rèn)。雙擊鼠標(biāo)左鍵進(jìn)行選擇,按住Ctrl雙擊左鍵消除選擇。
之后會發(fā)現(xiàn),兩塊點云基本上重合在了一起,并且第二塊點云名字前也出現(xiàn)了一個星號。初始配準(zhǔn)之后,我們將進(jìn)行ICP配準(zhǔn),注意Param ICP Default中的默認(rèn)參數(shù),根據(jù)需要進(jìn)行修改。如果我們的兩塊點云大小相同,那么就要勾選Rigid matching選型。如果我們不勾選,那最終的變換矩陣中將會有一個縮放因子。
- 采樣點數(shù)目(Sample Number):this is the number of samples it pulls from each mesh to compare to the other meshes. You do not want to make this number too big. A small sample typically works quiet well. 1,000 to 5,000 is usually plenty.
- Minimal starting distance:this ignores any samples that are outside of this range. Typically for a manually aligned object you want this to be large enough to encompass your 'point picking' error. A value of 5 or 10 (in millimeters) is usually a good start. Once the initial alignements are complete, drop it down to 1mm to 'fine tune'
- Target distance(相當(dāng)于均方誤差mse):an average alignment error value that the software?will try to obtain from the process?
- 最大迭代次數(shù)(Max iteration number):the maximum number of iterations that the?software will perform?
點擊Process之后軟件開始自動計算,將工程保存為ALN文件(Align Project),之后用文本編輯器打開,可以看到Align文件中每一個點云都有一個代表其位置和姿態(tài)的旋轉(zhuǎn)矩陣。
1.ply # 1.000000 -0.000000 -0.000000 -0.000000 0.000000 1.000000 0.000000 -0.000000 0.000000 -0.000000 1.000000 -0.000000 0.000000 0.000000 0.000000 1.000000 2.ply # 0.706755 -0.707458 0.000400 0.000489 0.707458 0.706755 0.000011 -2.828475 -0.000291 0.000275 1.000000 -1.999996 0.000000 0.000000 0.000000 1.000000將猴頭從位置2變換到位置1的矩陣為T-1:
對比可以看出MeshLab中的Align配準(zhǔn)工具正確計算出了變換矩陣T-1。需要注意的是,不要想當(dāng)然的以為逆矩陣中的移動分量為(-2,-2,-2)T,參考《機(jī)器人學(xué)導(dǎo)論》中第2章——Spatial descriptions and transformations
已知B→A的齊次變換矩陣T,則A→B的齊次變換矩陣T-1如下:
?
?
?
參考:
http://blog.csdn.net/szchtx/article/details/7587999
http://download.csdn.net/detail/chx_man/6314891
轉(zhuǎn)載于:https://www.cnblogs.com/21207-iHome/p/6034792.html
總結(jié)
以上是生活随笔為你收集整理的MeshLab中进行点云配准的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [20161107]关于数据文件位图区.
- 下一篇: rrdtutorial