- @ThothChildren
- 2018.7.1
- PV 638
シンプルに点群から表面を生成したい
ー 概要 ー
比較的簡単な方法で点群データから表面を生成する方法についてまとめています.ここではMarching Cubesとmarching Cubesで起こる曖昧な箇所が少ないMarching Tetrahedronについて紹介します.点群ではなくボクセル上にしてから処理を行います.
この章を学ぶ前に必要な知識
条件
- 点群またはボクセルが入力
効果
- 表面のメッシュを出力
ポイント
- Marching Cubes法とMarching Tetrahedronを主に紹介
解 説
単純な方法で点群から表面を生成する方法について紹介します.
・近傍点と全てつなぎ、メッシュを作成
単純で高速だが、大分荒い
・Marching Cube法
高速に行えてよく使用される手法.ただし、曖昧な部分が出てきたときに穴になりうるのが問題.穴があると表裏が判定しにくくなる.それらを改善した手法も発表されている.
・Marching Tetrahedron法
marching Cubeが特許として押さえられているため、他の手法が数多く生み出された.これもその一つ.こちらの手法では曖昧な部分が発生しにくいのが特徴.
後者ふたつは点群がボクセル上に配置されていることが前提のため、何らかの方法で点群からボクセルに変換する必要があります. | シンプルに点群から表面を生成したい |
1.近傍点と全てつなぎメッシュを作成 | |
最も近い数点とメッシュをつなぐ方法が一番簡単ではありますが、
この手法はどこまでを近傍点とするか等によって結果が大きく変わってきます.
全ての点に関して、近傍点を検出します.その後、得られた近傍点から2点を選択して、注目点とその2点でメッシュを作成します.
つなげて欲しいところが人間の思ったような点にならないことも多い手法です. | 近傍点と全てつなぎメッシュを作成 |
近接点を結びつけた様子 | |
PointCloudLibraryはこの手法を提供しています.
右にリンクを張りました. | 外部リンク PCLにおける実装 |
2.Marching Cube法 | |
最も有名な手法の一つです.
手法
まず点群を等間隔なボクセル状に変換した後、各隣接ボクセル8個に注目します。その8個のうち点が占有しているものがどういう状態かによって以下のように対応した表面を選択します. | Marching Cube法 |
Marching Cube法にて
隣接ボクセルがオレンジ色の点で占有しているときに作られる表面のパターン | |
8点の点の有無を考えると全部で256通りありますが、回転を除けば上記の15個に収まることになります.
この手法の問題点は、あいまい性の残る点のパターンがあるため、正しく面を選べないことがあることです.Marching TetrahedronやMarching Cubeの改善版ではそれらを解決しようとしています. | Marching Cube特徴 |
Marching Cubeの動画 | |
3.MarchingTetrahedron法 | |
Marching Tetrahedron手法はMarching Cube手法におけるあいまい性をなくした手法になります.キューブではなくまず四面体に分割して問題を考えます.
四面体に分割したら以下のように複数の点のあり方をMarching Cube手法と同じように考えます. | Marching Tetrahedron手法の特徴 |
まずキューブを6つの四面体に分割します. | |
分割後の面の決定 |
この章を学んで新たに学べる
Comments