コンテンツにスキップ

骨のセグメンテーション

CT から骨だけを取り出して、3Dモデルにします。

所要時間の目安: 20分

解説動画(未収録)
ここに YouTube の埋め込みが入ります

手順の全体像

graph TD
    A[CT を読み込む] --> B[Segment Editor を開く]
    B --> C[Threshold で骨を拾う]
    C --> D[Islands で骨片を分離]
    D --> E[Smoothing で整える]
    E --> F[3Dモデルとして書き出す]

1. Segment Editor を開く

モジュール一覧 → Segmentation → Segment Editor

Add ボタンで新しいセグメントを作ります。名前は Bone などにしておきます。

2. Threshold(閾値)で骨を拾う

Threshold エフェクトを選び、下限値を設定します。

部位 下限 HU の目安
皮質骨がしっかりした長管骨 200〜300
骨粗鬆症のある椎体 130〜200
小児・海綿骨中心 100〜150

閾値に「正解」はありません

HU 値は撮影装置・撮影条件・再構成関数によって変わります。 上の数値はあくまで出発点です。 プレビューを見ながら、皮質骨の外形が滑らかに出る値に調整してください。

迷ったら少し高めから

低すぎる閾値にすると軟部組織を巻き込み、後の分離作業が大変になります。 まず高めの値で骨だけを確実に拾い、足りない部分を後から補う方が早く終わります。

Apply を押して確定します。

3. 骨片を分離する

骨折で骨片が複数ある場合、Islands エフェクトで分けます。

Islands → Split islands to segments を実行すると、 つながっていない塊が別々のセグメントに分割されます。

うまく分かれないとき

骨片同士が1ボクセルでも接触していると、1つの塊として扱われます。

対処法:

  1. Scissors エフェクトで接触部分を手動で切る
  2. Margin エフェクトで少し縮めてから Islands を実行し、その後 Margin で戻す
  3. 閾値を少し上げて、接触部の低density部分を切る

詳しくは つまずきポイント集 を参照してください。

4. 形を整える

Smoothing エフェクトで表面のギザギザを取ります。

方式 特徴
Median 小さなノイズ除去。形状をあまり変えない
Closing (fill holes) 小さな穴を埋める
Joint smoothing 複数セグメントの境界を保ったまま平滑化

かけすぎに注意

平滑化を強くかけると、骨折線や細かい骨片が消えます。 術前計画では形状の正確さが重要なので、最小限にとどめてください。

5. 3Dモデルとして書き出す

Show 3D ボタンで3D表示を確認したら、書き出します。

Segmentations モジュール → Export to files で STL / OBJ として保存できます。

# スクリプトで一括書き出しする場合
segmentationNode = slicer.util.getNode("Segmentation")
slicer.modules.segmentations.logic().ExportSegmentsClosedSurfaceRepresentationToFiles(
    r"D:\output", segmentationNode, None, "STL")

書き出す前にファイル名を確認

ノード名やファイル名に患者名・患者IDが残っていないか確認してください。 STL ファイル自体にメタデータは入りませんが、ファイル名は残ります

次のステップ

骨のモデルができたら、プレートの形状を検討します。

仮想プレートベンディングへ進む :material-arrow-right: