CTスキャンからの自然物処理

Created Date: 2017-08-19/ updated date: 2017-08-25
    Owner & Collaborators
    License
    Summary
    CTスキャンから得たCTデータを、RoiPaintを用いて処理する方法です。
    いずれのソフトウェアもWindows対応です。(試行中)

    Materials

      Tools

        Blueprints

          Making

          • RoiPaintは、
            ・ 3次元画像の可視化
            ・ 3次元画像の領域分割
            ・ 抽出した領域のメッシュデータ(OBJ, STL)への変換
            を主に行うソフトです。

            Download : http://takashiijiri.com/SoftRoiPainter/index.html

            ※ ソースコード(githubリポジトリ)は現在公開準備中です.
            • 左ドラッグ:モデルの平行移動
              右ドラッグ:モデルの回転

              CT画像の断面上でホイール回転:CT画像の断面の移動

              何もない空間上でホイール回転
              orホイールでドラッグ:ビューの拡大縮小
            • DICOMデータとは、X線CTやMRIによって撮影された多数の「断面画像」のこと。
              (拡張子は.dcm)

              RoiPaintを起動したら、
              メニューバーから[File >Open DCM slices(.dcm)]を選択し、
              全てのDICOMデータを全選択して開きます。

              ※データ量にもよりますが、読み込みには時間がかかります。
            • 画像読み込み直後、対象物(昆虫)は可視化できていません(画像参照)。

              対象物を可視化するためには、対象物のみを不透明にする必要があります。
              このため、[Volume Information]というダイアログにある[transFunc1, transFunc2]のグラフを変更します。

              ※ダイアログ上部のチェックボックスから背景色やxyz平面の表示非表示などの変更ができます。
              ※伝達関数(transfer function)とは、画素値から透明度や画素値から擬似色へ変換する関数の総称です。
            • transfunc1は、横軸が輝度値、縦軸が不透明度を表します。
              transfunc2は、横軸が画像勾配、縦軸が不透明度を表します。

              グラフをマウスでなぞるようにすると、グラフの形を変更できます。

              対象物の周りの空間は輝度値が低く、対象物自体は輝度値が高いため、参考画像のグラフのように輝度値が低い部分の不透明度を0にすることで、周りの空間が表示されなくなり対象物が浮かび上がります。

              ただし、右図の場合、対象物の乗っている地面も輝度値が高く、厳密には対象物「だけ」を浮かび上がらせることはできません。
          • ここでは、Region Growing法を用いて連続する領域を抽出する作業を行います。

            メニューバーから、
            [ ModeSwitch >Segmentation Region Growing ]
            を選択します
            • [Volume Information]ダイアログ上部の、[XY][YZ][ZX]のチェックマークを入れると、それぞれの平面が表示され、断面図を見ることができます。

              断面図上のなるべく明るいところを、ダブルクリックし赤い点を付けます。
            • [Region Growing]ダイアログの[Thresholding]の最小値・最大値を変更します。
              この値に関しては、様々な値を試して見る他ありません。

              ※目安(撮影するCT装置にも依存)
              昆虫 : 最小値3000~9000、最大値そのまま
              貝/種子: 最小値15000~20000、最大値そのまま

              値を指定し[Region Growing 6]ボタンを押しすと対象物が選択されます。

              ※Region growing法は、シード(赤点)から始め、閾値を満足する画素を追加する要用で領域を拡張していく手法です
            • [Volume Information]ダイアログの[Volume]のチェックを外す、またはVボタンを押すと、緑色で表示されたボリュームが消え、
              CT画像上で選択されている範囲が赤く表示されます。

              この赤い表示はスペースボタンを押すことで非表示にできるので、元のCT画像の選択した部分(白いところ)と、赤い選択範囲がぴったりあっているか、調整しながらRegion Growingを行うと良いです。


            • [Endo & Store Region] を押すと、右図の通り、[1:region]として先ほど分割した領域が表示されます。
          • メニューバーから、
            [ModeSwitch  > Modification Stroke Trimming]
             に移動します。

            ここでは、既に抽出した領域から不必要な部分を取り除く作業(トリミング)が可能です。

            今回は先に抽出した領域から地面の領域を取り除きます。
            この作業は時間も手間もかかる作業です作業です。
            予め輝度値の低い素材(「激落ちくん」など)を地面として用いると、CTで撮影した際に地面がうつらなくなるため好ましいです。
            • [ModeSwitch  > Modification Stroke Trimming]を選択後、編集したい領域を選択します。
              先ほど分割したregionが選択されていることを確認して、[OK]を押します。

              ※backGrndは選択できません。
            • トリミングを行っていきます。

              Shitボタンを押しながら、
              トリミングを行いたい部分を左クリックでドラッグして選択します。
            • このように選択した部分だけトリミングされます。

              ※ドラッグで選択している部分をキャンセルしたい場合は、右クリック。
              ※Zキーを押すとやり直す(Undoする)ことができますが、一回しか戻ることができません。
            • このように地面を完全に除去することができたら、
              [Finish Editing]を押して、トリミングの完了です。
            • [Finish Editing]を押すと、トリミングで除去した領域が[2:region]として分割されていることがわかります。

              [Mask IDs]ダイアログで[2:region]を選択し、[Delete]ボタンを押せば削除できます。
              [Marge To]ボタンを押し、統合させたい領域を選択すれば、2つの領域を統合させることも可能です。
          • 昆虫などの中に空洞のある物体は、空洞をそのままにすると、その後のデータの扱いがしづらくなります。
            (3Dプリンタでの出力が困難になるなど)
            RoiPaintの穴埋め機能を使い、メッシュファイルに変換する前に穴埋めを行いましょう。

            メニューバーから、
            [ModeSwitch > Visualization Mask]
            を選択します。

            右側の[Mask IDs]ダイアログ の [Morpho operation]で、
            選択した領域の穴埋め作業を行います。
            • XY, YZ, ZX平面を表示させて、断面図を確認しながら作業を行っていきます。

              先ほど領域分割をしてトリミングを行ったregionを選択してから行いましょう。

              [transparency](不透明度)を下げると、選択領域の不透明度が下がり断面が見えるので、作業が行いやすいです。
            • [Morpho operation]の
              1. [dilate]ボタンを押して領域を1画素分を太らせる
              2. [fill hole]ボタンを押して外とつながっていない中空領域を埋める
              3. [erode]ボタンを押して全体を痩せさせる(厚みを元に戻す)

              この手順を踏み、小さな穴を埋めていきます。
              場合に応じて、[dilate][erode]ボタンを複数回押しましょう。
              ※dilate -> erodeの処理は、closingと呼ばれ、小さな中空領域が自動的に埋まる効果があります。
          Add Card Order

          References

            Usages

              Project comments