VR解剖アプリを作る その1 ~CTスキャンの結果から3Dデータを得る~

VR解剖アプリを作る連載物です。今回はOsiriXというソフトを使ってCTのデータから3Dデータを作成しました。

目次

はじめに

先日、こちらのイベントに行って、HoloEyesが開発したVR, MRアプリを体験しました。
一言で言うとVR, MRでCTスキャンから得たデータを立体的に見ることができるアプリです。

HTC VIVEを使ってHoloEyesVRを、
Microsoft HoloLensを使ってHoloLens Mixed Reality Surgeryを体験しました。
リンク先はYoutubeにアップされた使用イメージです。

講演会でこういったアプリを無料ソフトで作ることができると言っていました。
本企画の趣旨は「コストを抑えてVR解剖アプリを作る」です。

以前LP-techで同様の記事がありました。
MRIやCTなどのDICOM画像を3Dモデルに変換する方法
*ちなみに記事内で紹介されている杉本真樹さんが冒頭のイベントで講演をされた方です。HoloEyes株式会社のCOOでもあります。

今回はより初心者に向けて、画像処理初心者の著者がつまずいたポイントを重点的に解説していきたいと思います。

前提条件

ゴール

大まかな流れ

  1. OsiriXでCTから得たDICOMファイル*をOBJファイル*に出力
  2. MayaでOBJファイルを編集
  3. Unityでスマホ用VRアプリを作成
  4. 体験

*DICOMファイル: CTデータのファイル形式
*OBJファイル: 3Dデータのファイル形式

OsiriXでCT画像から3Dデータを構築

MacにOsiriXをインストールします。
こちらの「New User」から登録を行います。
メールでダウンロードリンクが届きます。

Osirixダウンロードリンク

OsiriX Lite.dmgをダウンロードし、インストールしましょう。
ちなみに有料版(9万円弱)だと処理が早いらしいです。

またiPhoneやiPadを持っている方は、無料のマニュアルOsiriX Navigatorをインストールすると良いでしょう。

早速DICOMファイルを手に入れてOsiriXの機能を確認してみます。
OsiriX公式でDICOMファイルが入手できるとのことでしたが、有料アカウントのみでした。
NBIA (National Biomedical Imaging Archive)が無料で公開していたのでこちらを使います。

NBIAの検索画面を開いたら欲しい条件で検索します。
各カラムの「+」ボタンをクリックするとダウンロードリストに追加されます。
「Manage Data Basket」をクリックします。案内に従って、リンク先のJRE、Download Managerをダウンロードします。

「Download Manager」をクリックすると.jnlpファイルをダウンロードできます。
こちらを開くと、先ほど選択したファイルがリストになっています。
ダウンロード先のディレクトリを選択したら、「Start」ボタンでダウンロードを開始しましょう。

OsiriX使用動画1

OsiriXを起動し、左上の「読み込み」から先ほどダウンロードしたDICOMファイルを選択します。
左下にサムネイル、右下に操作パネルが表示されます。
操作パネル上でスクロールすると画像が滑らかに変化し、3次元構造を把握できます。
カラムをクリックするとさらに大きな画面で確認することができます。

「3Dビューア」の「3Dサーフェスレンダリング」を選択します。
サーフェスレンダリングでは組織の表面を再現する3Dデータを作成します。ハリボテのようなもので中身は空です。その分軽量に扱うことができます。

するとこのような3Dモデルを生成できます。

アップで見るとところどころがたついていたり、ゴミのような小さな物体が写り込んでいることがわかります。
余分な部分は後で取り除けば良いのですが、もっと精緻なモデルを作りたいということであればCTの設定からいじる必要があります。
スライス厚とピクセルサイズを細かく設定すれば、より詳細なモデルが作れると思います。

ちなみに歯の部分にトゲのような突起があります。
この部分を輪切り状の画像で確認すると強く光っているように見えます。
これはアーチファクトと言われます。CTに本来ないものが(と言うと語弊があるので詳しくはこちらhttp://www.white-rabbit.jp/contents/XRayCT/CT_04artifact.html )写り込んでしまった状態です。
今回は義歯に反応してしまったようです。

ROIとは

「region of interest」の略です。
先ほどは「骨」と言うざっくりとしたくくりでモデリングしました。
ROIを利用すると自分が関心のある部分、例えば肺だけあるいは肝臓だけと言う風に3Dモデルを作成することができます。

「ROI」から「リージョングローイング」を選択します。

コントロールパネルが出現します。
今回は臓器のデータがないので頭蓋骨を使います。
ここでは骨だけを選択したいのでアルゴリズムを「しきい値(間隔)」に、間隔を「100」にしました。

左のような設定にします。これで「計算」をクリックすると、ROIだけを抜き出した画像群が得られます。

再び「3Dビューア」の「3Dサーフェスレンダリング」を選択します。
「ROIマネージャ」から先ほど作成したROIを選択すると、骨だけの3Dモデルが表示されます。
ROIの選択時に手動でノイズを取り除くことでさらにきれいにすることができます。
肩甲骨や肋骨なども表示されていません。同じ骨でも実際につながった部分だけを簡単に取り出すことができました。
もちろん手動で範囲を設定することもできます。

右上の「3D-SR」から出力したいファイル形式を選びます。
今回は.objファイル形式で出力します。

第二回

参考書籍