[動画] 3D Slicer: 粒子の分割と体積測定

動画の概要

この動画では、X線CT等で撮影した粒子状のデータを想定して、フリーの3次元画像処理ソフトウェアである3D Slicerを用いて、くっついている粒子どうしを分割する方法を説明しています。分割には距離変換と極大点抽出、Watershedといった手法を用います。また、分割した後の各粒子の体積を計算する方法も説明しています。

ポイント

file

  • Segmentation Editorでグレースケール画像を元にセグメンテーション
    • Thresholdツール
    • Applyで確定
  • ラベルデータに変換
    • Dataモジュールで、「Export visible segment to binary label map」をクリック
  • Simple Filtersモジュールで変換していく
    • Simple Filtersでは、ラベルとグレースケールの区別をしないので注意
    • マーカー画像の生成
      • SignedDanielssonDistanceMapImageFilter: 距離マップを生成
        • Inside Is Positiveにチェックを入れる
      • RegionalMaximaImageFilter: 局所最大値を取り出す
        • Fully Connectedはチェックを入れたほうがノイズ抑制できる
      • BinaryDilateImageFilter: (必要な場合のみ)近い位置にある局所最大値を接続することで、分割の細かさを下げることができる
      • ConnectedComponentImageFilter: 局所最小値ごとに別々の値を付与
    • 勾配画像の生成
      • InvertIntensityImageFilter: Watershedの入力として使うために、距離画像の反転画像を生成(粒子の境界がはっきりしている場合は、GradientMagunitudeImageFilterで元画像の勾配を計算して使ってもよい)
    • Watershedの実行
      • MorphologicalWatershedFromMarkersImageFilter: マーカーを起点に領域を拡大
    • 元のラベル画像でマスク
      • MaskImageFilter: ラベルの外側を0で埋める
  • グレースケールからラベルに変換
    • VolumesモジュールでVolume Informationを開き、Convert to label mapでConvertを実行
  • セグメンテーションデータに変換
    • Dataモジュールで、「Convert labelmap to segmentation node」をクリック
  • Segment Statisticsで体積などを計算
    • テーブルが表示される