読者です 読者をやめる 読者になる 読者になる

tak0kadaの何でもノート

発声練習、生存確認用。

医学関連は 医学ノート

ボクセルデータのメッシュ化

C、C++ かたち アルゴリズム

セグメンテーション済み画像データからのメッシュ化

ボクセルデータからメッシュを作ることになるので調べものをしたところ、[Insight-users] mesh creation from segmented imageを見つけた。このアルゴリズムについてはWikipediaMarching Cubes 作業メモ - フリーフォーム フリークアウトなどを参照する。

BinaryMask3DMeshSourceからのメッシュ取り出しの調査

Marching Cubesというアルゴリズムを使っているらしく、三角メッシュが取り出せそう。このアルゴリズム自体は有名なものなのでITK以外にも実装されているものと思われる。

関数の呼び出し追跡

型を調べる

  • 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.hitkImage.h
    • itk::Meshを使う: itkMesh.h

itk::Meshから頂点、エッジ、面を取り出す