私の愛犬は副腎腫瘍がありました。そのCT画像を使って3Dを構築してみます。犬・猫も、CTをとれる病院が少しずつ増えてきましたね。しかも高度化した病院では、かなり高精度のCTが導入されてきました。獣医療においても、CTから3D構築する技術も一般的になっていくのでしょうか。整形だと3Dプリンターで印刷し術前計画を構想するにも使えそうです。MacだとOsirixというソフトがかなり簡単に3D構築できますが、今回はMacでもWindowsでも無料で使用できる3DSlicerを使用します。また、仕上げにBlenderを使用します。
今回の作成方法で構築した3Dの注意点:
課題1:腫瘍境界の不正確さがあります。CTだと腫瘍の境界があいまいなところがありますが、3Dを構築するにあたって境界が半ば自動的・強制的に選択されます。そのため、3Dでは微細な浸潤などは見逃されてしまう可能性があります。
課題2:再現性の乏しさがあります。3D構築工程にマニュアル操作があります。そのため、同一人物でさえ同じものを作ろうとしても同じものができません。腫瘍の形に再現性がないというのは、大きな欠点です。




この記事目次
- 3D Slicerを使って、3Dを作成
1-1. Segment Editorで、PaintとGrow from seedsを使って臓器と腫瘍の形を選択し3D化
1-2. Scissors、Smoothingで3Dを微修正
1-3. Segmentationで、STLファイルを書出 - Blenderでを使って、3Dを仕上げ (次の記事)
2-1. STLファイルを読込
2-2. 色付け
2-3. レンダリング
1.3D Slicerを使って、3Dを作成
基本的な3D Slicerの使い方はこちら
今回のチュートリアルは、バージョン4.11.20200930を使用しています。
1-1 Segment Editorで、PaintとGrow from seedsを使って臓器と腫瘍の形を選択し3D化
CTデータを読み込んで、Segment Editorを開く

+Addを6回押す。腫瘍mass、右腎臓Rkidney、左腎臓Lkidney、大動脈Aorta、大静脈IVC、Backgroundと名前を変更する。backgroundは、不必要な領域です。


流れとして、手動で臓器・腫瘍の範囲をいくつか選択。その後、自動で選択範囲を拡大していくという流れです。
腫瘍の範囲をPaintを使って指定してきます。massを選択して、その下のEffectsのうちのPaintを押す。その後、CTのスライス上で、腫瘍の範囲をドラッグしていく。CTの複数の断面で(Sagittal、Axial、Coronal)、選択してくと効率がいいです。スクロールして、違う断面でも色を付けていきます。

下は、background以外(腫瘍mass、右腎臓Rkidney、左腎臓Lkidney、大動脈Aorta、大静脈IVC)に、色を付けたところ。それぞれ左のパネル上で名前を選択してから色を付けます。選択は、なかなか根気のいる作業で、時間がかかります。ただ、ここで丁寧にやると後が楽です。

左のパネルでbackgroundを選択し、不必要な領域に色を付けます。腎臓外側や、腫瘍外側や血管外側を丁寧に塗ります。全部のスライスで色付けするのは大変なので、私は、関心領域の前後を適当に全部塗って、関心領域の真ん中で丁寧に塗るという、3スライスで色塗りしています。

下は、関心領域の真ん中で丁寧に色塗りをしているところ。

多くのスライドで色塗りが終わったら(疲れたら)Effectsのうちの、Grow from seedsを選択し、Initializeを押します。するとそれぞれの色塗り範囲から、似た輝度に基づいて範囲が自動で拡大されます。この時にbackgroundが、関心臓器・腫瘍の境界をあぶり出すことに役に立っています。

以下のように、領域が自動的に拡大して色塗りされます。紫はbackground。

拡大すると、うまく領域が色塗りされていないところがあることがわかります。パネルからbackgroundを選択し、EffectsからPaintを選択し、不要部分に色塗りを続けます。


ここで丁寧に色塗りしても、色塗りしたスライスしか改善されず、前後の領域が拡大して選択されません。そのため、再度Grow from seedsをします。1回実行していると、さきほどのようにInitializeがないので、以下のCancelを押します。すると、UpdateがInitializeになるので、Initializeを押します。
この作業を何回か繰り返して、結果に満足したらApplyを押します。

上の方の亀のようなアイコンのShow 3Dを押します。

3Dのパネルに何も表示されないので、驚くと思います。表示させるには、下の画像の左上の太陽みたいなマークを押します。すると急に以下の塊みたいなのが現れます。

紫はバックグラウンドなので、backgroundを非表示にします。左のパネルで、backgroundの目玉を閉じます。

ようやく、以下のように3Dが現れます。

必要に応じて、右側のパネルの表示方法を切り替えます。主に使うのは、3D onlyと、Four-Up。

1-2 Scissors、Smoothingで3Dを微修正
不要な部分は除去します。消したい臓器を左側のパネル上で名前を選択し、左側のEffectの中からScissorsを選択します。そして、右上のように3Dのパネル上で、不要な部分を選択します。

他の臓器を消したいときは、左のパネル状で名前を選択することを忘れずに。

よく見ると、以下のように血管がギザギザで表面が荒いです。なめらかにしましょう。

滑らかにしたい臓器を左のパネルから選択し、Smoothingを選択し、Smoothing methodはmedianにして、applyを押します。効果が弱いと思ったら、Kernel sizeを大きくします。それぞれの臓器において、Smoothingを実施します。以下の図は、腫瘍以外にSmoothingを実施したところです。腫瘍はSmoothingしない方がよいと思います。理由は、腫瘍の境界が不明瞭であることが分からなくなってしまうからです。Smoothingすると、微小なマージンが削除されてしまいます。

骨を追加して、関心領域の相対的な位置を把握しやすくしたいです。ここは必須ではないパートですので、骨が不必なら読み飛ばしてください。骨は、今までのやり方でもできますが、もっと簡単な方法があるので、紹介します。+Addを押して、名前を骨(Bone)とします。

Boneを選択して、EffectsからThresholdを選択します。すると、右のパネルのCTスライス上で骨の色が点滅し始めます。ただ、骨以外の色んな所が光っています。このままだと、骨以外も骨になってしまいます。

調整するためにThreshold Rangeの左端を調整して、骨だけが選択されるようにします。

いい感じに骨だけ選択されたら、Applyを押します。すると、3Dでも骨が出てきます。

骨ではないデブリが空間に浮いていることがわかります。左のパネルからBoneを選択して、Effectsから、Islandsを選択して、keep largest islandが選択されているのを確認してApplyを押します。

すると、デブリが除去されます。

1 – 3 Segmentationで、STLファイルを書出
左上のプルダウンから、Segmantationsを選択。

Output typeがLabelmapになっているので、Modelsに変更する。

Exportを押す。そして、左上のSAVEを押す。

自分で作った臓器・腫瘍の名前の横のチェックボックスにチェックを入れて、File FormatをSTLに変更する。そしてSaveを押す。

続きは、次の記事で。
以下の記事も参考にしてください。