Edited at

MeshLabで点群データ処理

More than 1 year has passed since last update.


MeshLabとは

MeshLabはWindows、Macで使えるフリーの3Dデータ編集ソフトです。

メッシュの処理に特化したソフトであり、三角形メッシュの編集、クリーニング、フィルタリング、レンダリングなどをすることができる優れもの!

また、3次元点群処理も行うことができます!

基本的な処理であったり、プログラムを書かずにメッシュの編集がしたい場合にもってこいです!!

公式サイトより無料でダウンロードできます。

公式サイトURL:http://meshlab.sourceforge.net/

meshlab.jpg


MeshLabの使い方

基本的な使い方に関してはこちらがすごくわかりやすかったので、ご参照ください。

今回は点群データ処理の手順を書いていこうと思います。


点群データの読み込み

MeshLabが読み込めるデータには PLY, STL, OFF, OBJ, 3DS, COLLADA, PTX, V3D, PTS, APTS, XYZ, GTS, TRI, ASC, X3D, X3DV, VRML, ALN形式があります。

※PCLから点群を書き出す際にはPCDデータを使用することがありますが、PCDデータはサポートされていないようですので直接MeshLabに読むことはできません。なのでヘッダー部分を除外し、拡張子を「.pcd」→「asc」に変更するなどして読み込ませないといけません。

xyzデータの読み込み

.xyzファイル(下図)をドラックアンドドロップで読み込むことができます。

new_meshlab02.jpg

UIはこんな感じ

new_meshlab01.jpg


norm(法線)を計算

目的によっては必要ない場合もありますが、各点群からサーフェスをつくるために法線を計算します。

Filters/Point set/Compute normals for point sets/ を選択し、下図のようなダイアログが出てくるので、Neighbour num (近傍数)を設定し、Applyします。

今回は既定値の10としました。

ちなみに、各処理のパラメータの意味がよくわからなかったら、ダイアログの中にヘルプボタンがあるので押してみるとざっくりですが教えてくれます。

プログレスバーが表示されなくなったら(100%になったら)処理が終了となるので、Render/Show Normal/Curvature を押すと下図のように法線を可視化してくれます。

new_mesh3.jpg


ダウンサンプリング

今回はあまり必要ありませんが、データ数が大きいときにはダウンサンプリングを行います。

Filters/Sampling/Clustered Vertex Subsampling

Cell Sizeを1.0→0.5に変更してApplyします。


メッシング

点群を法線ベクトルを用いてメッシュを貼ります。

メッシュを貼る方法はいくつかありますが、今回はBall-Pivotingアルゴリズムを使います。

Filters/Remeshing simpleification and Reconstruction/Surface Reconstruction : Ball Pivoting

今回は既定値そのままでApplyしました。

表示をPointsからFlat Linesに変えると以下のように表示されます。

new_mesh4.jpg

ちなみにメニューバーの左上のほうにある「Show Layer Dialog」で各工程の表示/非表示が切り替えられます。メッシュなどをphotoshopみたいなレイヤーとして扱っています。なので、やり直したいときなどはここからDeleteするしかないっぽいですね。


スムージング

今回は比較的きれいな点群だったため問題ありませんが、リアルデータはガタガタになることが多いため、スムージングが必要です。

Filters/Smooth ,Fairing and Deformation/Laplacian Smooth

Smoothing steps が大きいほど滑らかになります。

今回は既定値の3としました。

new_mesh5.jpg

なんだか細くなってネズミみたいになっちゃいました…


欠損の補間

このままでは穴が開いてしまっている部分があるので、それを補間したいと思います。

メニューバーの中央付近に Fill Holeがあるのでそれをクリック。

穴埋めしたい部分をチェックボックスで決めて補間します。(けっこうめんどい)

自動でやる方法もあるはず…

new_mesh6.jpg

こんな感じで、点群からメッシュをつくる処理ができます!簡単!便利!

今後は各アルゴリズムの詳細や違いなんかも書いていこうかと思います。