kumpei.ikuta.me

脳 MRI を 3D プリントする

こんにちは。先日脳の MRI を撮影して、そのデータをもとに 3D プリンタで実寸大の自分の脳を作ったので、必要な手順を紹介します。

完成した脳
完成した脳

撮影

クリニックの選択

何はともあれ MRI を撮影する必要があります。私は以下の理由から メディカルスキャニング で撮ってもらうことにしました。

  • 安い
    • メディカルスキャニングは画像検査と診断を専門にしているクリニックで、外来などは受け付けていないからか、保険適用外(自由診療)でも比較的安価に撮影してもらうことができます。今回私が申し込んだのは「脳MRI・MRA・DWI」のプランで、28,800 円でした。
  • データを貰える
    • 他の病院や検査機関でも大抵は貰えると思いますが、データの提供がサービスの一環として Web ページに記載されていたので安心感がありました。
  • 3 テスラ MRI がある
    • 3D プリントすることを考えると、撮影する画像の(空間/コントラスト)分解能は高ければ高いほど好ましいです。メディカルスキャニングでは、多くのクリニックで SIEMENS 製の 3.0 テスラ MRI を導入しているため、品質の良い画像が得られることが期待できました。
    • 3.0 テスラは、民生用 MRI としては最大の値であるため、これ以上のスキャナを持つ施設を探すのは大変困難になると思います。

撮影シーケンスの指定

脳の組織を 3D プリントしたいので、主な関心は T1 強調画像ということになります。この T1 像の撮影には、主に SPACE または MPRAGE のいずれかのシーケンスが使われますが、今回は解像度の高い画像を得たいので、MPRAGE シーケンスを利用するのが望ましいです。

Web サイトには使用される撮影シーケンスについての記載は特になかったので、電話で「T1 を MPRAGE で撮影してもらうことは可能か」と問い合わせたところ、可能であるとの返答が得られました。

  • ただし、これは私が撮影してもらったクリニック/タイミングでの話です。クリニックの持っている設備や、予約した時刻のタイミングによっては MPRAGE での撮影ができない可能性もあるので、事前に電話で確認することをおすすめします。

余談ですが、撮影の際、担当いただいた放射線技師の方が、完全に同業者に話すような言葉選びで「T1 を MPRAGE で…とのことですが、sagittal の isovoxel で大丈夫ですか?」と聞いてきたのが面白かったです。

データの処理

撮影されたデータは DICOM という医療画像用のフォーマットになっており、そのまま 3D プリントすることはできません。また、画像は脳以外にも、頭蓋骨や皮膚、眼球、各種筋肉など、プリントしたくない領域も含んでいます。これらの不要な領域を除去したうえで、STL や OBJ などの 3D プリンタ用スライサソフトウェアで読み込める形式に変換する必要があります。

NIfTI フォーマットへの変換

NIfTI は比較的新しい医療画像フォーマットで、DICOM と異なり 3D 画像を 1 ファイルで格納できたり、ヘッダーに入れられる情報の種類が多いというアドバンテージがあります。後段の変換処理では NIfTI ファイルを使う必要があるため、まずは DICOM データを NIfTI に変換します。

ここでは、Neuroimaging Tools and Resources Collaboratory (NITRC) が公開している MRIcroGL というソフトウェアを利用します。このソフトウェアは NIfTI 用の画像ビューワという位置づけなんですが、dcm2niix という変換ツールが付属しており、これを使って一連の DICOM 画像群を単一の NIfTI ファイルに変換することができます。

変換した NIfTI ファイルは、MRIcroGL で開いて確認することができます。

NIfTI ファイルを MRIcroGL で開いた画面
NIfTI ファイルを MRIcroGL で開いた画面

不要な組織の除去

無事 NIfTI ファイルが得られましたが、上記スクリーンショットのとおり、このファイルには脳以外の組織の情報がたくさん含まれています。これらの不要な組織を除去するプロセスは skull-stripping と呼ばれているのですが、今回は OpenMAP-T1 という手法を使って skull-stripping を実施します。

  • この OpenMAP-T1 は、実は skull-stripping だけではなく、脳領域を JHU Atlas に分割する手法なんですが、今回は細かなアトラス情報は不要なので、得られたラベルを(ほぼ)すべて合算し、脳領域を抽出する手法として用いました。

不要組織を除去した NIfTI ファイルを見てみると、きれいに脳だけ抽出できていることがわかります。

脳だけになった NIfTI ファイルを MRIcroGL で開いた画面
脳だけになった NIfTI ファイルを MRIcroGL で開いた画面

(このステップは、上記 OpenMAP-T1 の著者でもある、ラボの後輩がやってくれました。ありがとう!)

左右半球への分割

以上のステップで脳だけの 3D データが得られたので、これをこのまま 3D プリントするということも可能ではあるんですが、サイズが大きすぎて出力に失敗したときのリスクが大きいです。そこで、左右の半球に分割してからそれぞれ出力することにしました。幸い、上記 OpenMAP-T1 は、各領域ごとに左右のラベルも出力してくれるので、これに基いて左半球・右半球のデータをそれぞれ出力します。

  • アトラスを参照せずに適当な平面で分割するというアプローチも考えましたが、脳室の空洞なども再現したかったのできちんとアトラスベースの分割をすることにしました。

右半球だけ抽出した NIfTI ファイルを MRIcroGL で開いた画面
右半球だけ抽出した NIfTI ファイルを MRIcroGL で開いた画面

メッシュデータへの変換

3D プリンタ(の、スライサソフトウェア)に入力する 3D モデルデータは、メッシュ形式(ポリゴンの集合として形状を表現する)である必要があります。NIfTI ファイルはボクセルデータなので、これをどうにかしてメッシュ形式に変換してやる必要があります。この変換処理には、 Chris Rorden さんが公開している nii2mesh というソフトウェアを使いました。

nii2mesh がどういったアルゴリズムを使っているのかは調べられていませんが、伝統的なマーチングキューブ法よりも滑らかなメッシュが出力されるという特徴があります。

左:プレーンなマーチングキューブ法によるメッシュ / 右:nii2mesh により出力したメッシュ
左:プレーンなマーチングキューブ法によるメッシュ / 右:nii2mesh により出力したメッシュ

3D プリント

ここまでくれば、後は通常の 3D プリンティングにおけるプロセスをそのまま適用することができます。まずは出力された .obj ファイルを Blender で開き、データのクリーンナップを行います。

出力された .obj ファイルを Blender にインポートした画面
出力された .obj ファイルを Blender にインポートした画面

脳の内部に残された不要なポリゴンを手でポチポチと削除しつつ、3D Print Toolbox を使ってメッシュが破綻していないことを確認します。

  • このアドオンは新しめの Blender であればプリインストールされているので、設定から有効化するだけで利用できます。

データが綺麗になったら、スライサソフトウェアにモデルをインポートし、スライスを実行します。

  • 形状が複雑ゆえ、どうしても大量のサポートが生成されてしまいます。プリント方向を工夫して、できるだけ取りづらいサポートが出ないような向きで出力するとよいでしょう。
  • ポリゴンが多いので、スライスにも 1 分程度の時間を要しました。
  • それなりにサイズが大きいので、レイヤ高を微細にしすぎるととんでもない時間がかかってしまいます。今回は 0.28mm のレイヤ高でスライスし、予測プリント時間は 10 時間程度でした。

スライスされたモデル
スライスされたモデル

最後にスライスしたデータを 3D プリンタに移し、プリントを実行します。時間はかかりますが、辛抱強く待ちましょう。

完成した脳
完成した脳

これにて完成です。お疲れ様でした!

課題

  • どうしても取れないサポートが生成されてしまいました。彫刻刀でグリグリほじっても奥まったところまでは届かず、完全な除去は断念しました
    • IDEX (Independent Dual EXtruder) な 3D プリンタが用意できれば、PVA フィラメントによる水溶性サポートを利用してより綺麗に印刷できるかもしれません。
  • T2 や DTI、DWI の画像を有効活用できていません。今回処理した T1 像とのレジストレーションが正確に行えれば、脳血管だけのモデルなども作れるかもしれません。

back to index