ボクセルデータのメッシュ化
セグメンテーション済み画像データからのメッシュ化
ボクセルデータからメッシュを作ることになるので調べものをしたところ、[Insight-users] mesh creation from segmented imageを見つけた。このアルゴリズムについてはWikipedia、Marching Cubes 作業メモ - フリーフォーム フリークアウトなどを参照する。
BinaryMask3DMeshSourceからのメッシュ取り出しの調査
Marching Cubesというアルゴリズムを使っているらしく、三角メッシュが取り出せそう。このアルゴリズム自体は有名なものなのでITK以外にも実装されているものと思われる。
関数の呼び出し追跡
- レファレンス: ITK: itk::BinaryMask3DMeshSource< TInputImage, TOutputMesh > Class Template Reference
- 実装その1: ITK/itkBinaryMask3DMeshSource.hxx at master · InsightSoftwareConsortium/ITK · GitHub
実装その2: ITK/itkBinaryMask3DMeshSource.h at master · InsightSoftwareConsortium/ITK · GitHub
.hxxファイルは実装、.hファイルは普通のヘッダファイルと役割分担されている。
BinaryMask3DSource
はImageToMeshFilter
を継承していて、このクラスにgetOutput
関数がある。
型を調べる
- BinaryMask3DSourceはテンプレート宣言されていてBinaryMask3DMeshSource<
ImageType
,MeshType
>となっている- これらの型はtypedefされていて、
- ImageTypeは
itk::Image<PixelType, Dimension>
=itk::Image<unsigned char, unsigned int Dimension = 3>
- MeshTypeは
itk::Mesh<double>
- getOutput関数は
OutputMeshType
のクラスを返す OutputMeshType
はBinaryMask3DMeshSourceに渡した型と同じ
結論
- 取り出せる型はitk::Meshになっている
- インクルードするべきファイルは
- BinaryMask3DMeshSourceを使う:
itkBinaryMask3DMeshSource.h
、itkImage.h
- itk::Meshを使う:
itkMesh.h
- BinaryMask3DMeshSourceを使う:
itk::Meshから頂点、エッジ、面を取り出す
- メンバ関数で都合のいいものを探す
- ファイルに書き出すなら
- vtkUnstructuredGridの内部構造の探索例 - Qiitaが参考になる?
MeshFileWriter
を使う?