
【画像処理】点群データとメッシュデータ
PyMeshLabライブラリを利用したメッシュ処理APIの開発にあたって、サンプルデータを作成しようと思う
その際、そもそも自分がいまいちメッシュデータについてわかっていなかったので、簡単なまとめ
追記:
相変わらずタイトル通りの内容とは言い難いものになってしまった。
しかもMeshLabとPyMeshLabについては触れてなかった・・・
また機会があればPyMeshLabのフィルタとかメッシュ処理まわりについて書いていきます(やるやる詐欺)・・・
点群データからメッシュデータの生成
web上でよく見つけるのが、点群データを3Dモデルとして扱うことで、さまざまな画像解析や数理アプローチなどを行う、というもののように思う(個人的な印象です)。
そこでまず点群データとは何か、メッシュデータとは何か、ということについて調べた中で簡単なまとめをしていく
点群データ
点群データとは、無数の「点」によって構成されたデータのことをいいます。点の集合体にあたるデータである「点群データ」は、数学的な概念としての点群と、コンピュータグラフィックスにおけるデータ形式の一つである点群がありますが、3Dスキャナーなどを用いたデータ取得においては、後者のデータ形式の点群データを指すのが一般的です。
点群データは、対象物の物体がどのような形状になっているのか、測定の結果を点で表したものになります。座標値と色によって構成されているのが特徴です。
点群データは、あらゆる業界の品質管理などの分野において使用されています。3Dスキャンされたものなどは点群データ化され、必要に応じてCADデータ化されたり、メッシュデータ化されたりすることで、3Dモデル化による品質管理が実現されるのが特徴です。
メッシュデータとは
参考までに、Blenderにおけるメッシュは
Vertex(点)、Edge(辺)、Face(面)で構成された3Dオブジェクトのこと
3DCGアプリケーションでは前述のPolygonという言い方を使わずFace等の言い方をする場合も多く、BlenderのFace=Polygonであると言える。MeshやPolygonの解釈は次にあるようにアプリケーションによって意味や位置づけが異なる場合があるので注意が必要。
頂点は、色、法線ベクトル、テクスチャ座標などの他の情報と共に位置を表す。辺は2つの頂点間の接続のことである。面とは閉じられた辺の集合であり、三角形の面は3つの辺を持ち、四角形の面は4つの辺を持つ。ポリゴンは面の集合である。多辺の面をサポートしているシステムでは、ポリゴンと面は等価である。しかし、ほとんどのレンダリングハードウェアは、わずか3辺もしくは4辺のみをサポートしていて、それゆえポリゴンは、複数の面として表現される。(Wikiのポリゴンメッシュの説明から抜粋)

ポリゴンとメッシュ
数学的な表現として, 平面の多角形のみを用いた形状表現をポリゴン(polygon)(あるいはポリゴンメッシュ(polygon mesh))と呼ぶ.
このポリゴンの中でも特にすべての面が最小構成である3角形で表されるような形状表現を3角形メッシュ(triangle mesh)(あるいは単にメッシュ(mesh))と呼ぶ.
ただし,シミュレーションの分野では,単にメッシュというと四面体メッシュや六面体メッシュのことを指す場合がある.
メッシュは平面の集まりであり, 幾何学的には区分線形曲面(piecewise linear surface)として位置づけられる.
一つの面としての表現力は乏しいが, 多くの面を使うことで滑らかで複雑な曲面形状を近似的に表現できる.
https://www.jstage.jst.go.jp/article/jjspe/84/4/84_323/_pdf
なんとなくのまとめ
上記のいくつかの参考資料にも、記載があるが、点群データが、単純に点の集合としての情報しか持たないものに比べ、メッシュ(あるいはポリゴンメッシュ)と呼ばれるデータは(少なくとも)、コンピュータビジョン、画像解析、3Dモデリングなどの分野においては、点、点と点とを繋いだ線分(辺)、辺で囲われた多角形(今回の最小構成体の場合は三角形)で表現される範囲つまり区分的に線形liner(一次関数)で定義される(うつされる)面(区分線形曲面)とそれらの集合および関係性などの情報を持つものであり、それにより立体的(3次元的)なオブジェを面の集まりとして再構成(形状表現)し、解析することが可能となる。
とぼんやりとして曖昧な感じでまとめさせていただきました。
また気が向いたら、Convex Hull(凸包)とメッシュ、凸包メッシュについてなどもまとめていきたいなと思います。
※相変わらず、語学的、論理・数理的、文学的素養及び読解力と一般的教養にかけた人間が描いておりますので、内容に不適切な表記や誤解、不備がございましたら、やんわりソフトにこっそりご指摘いただければと思います。