OsiriXまとめ
CTスキャンでは患者の体を輪切りにするように撮影していきます。
この大量の画像はDICOMというファイル形式で出力されます。
OsiriXはDICOMビュワーです。
つまり輪切り画像の塊を見やすくしてくれるソフトウェアです。
CTスキャンで撮影した画像はCT値に応じた白黒画像で表現されます。
実際に使っている様子は以下の動画がわかりやすいです。
ここでは基本的な知識、個人的に効率の良い方法、TIPSなどをまとめていきます。
目次
ROIツールとは
ROIとはRegion of Interest = 関心領域のことです。
OsiriXではROIツールを使って関心のある部分を抽出したり、測定したりできます。
通常の診療では腫瘍の大きさや骨の角度を測定したりします。
今回は、特定のCT領域を囲うROIを作成ます。
後の工程でROI部分を切り出すことで単一の組織のオブジェクトとして出力します。
今回は骨の一つ一つごとにROIを設定します。
以下の動画は異なるROIツールを使ってマニュアルで関心領域を囲っています。
鉛筆を使った例
Closed Polygonを使った例
これらのツールを用いて、何枚かの画像に対してROIを設定、その後間の画像を埋めることで立体的なROIを作成することができます。
このROIを対象にして3D構築すれば対象部位だけを切り出すことができます。
不足するROIを生成
全ての画像に対してROIを設定するのは大変なので、ある程度の間隔でROIを作成しておけば間を補完する機能がついています。
「ROI -> ROI容積 -> 不足するROIを生成」で、飛び飛びのROIの間を補完するROIを生成してくれます。
ただし、単純に線形的に間を埋めるだけなので、滑らかな変化をする部分では効果を発揮しますが、急激に変化する場合は注意が必要です。
1:02頃から使っている様子がわかります。
リージョングローイングとは
間の画像を保管する機能があるとはいえ、何枚もROIを作成していくのは大変です。
「ROI -> リージョングローイング」を使えばもっと簡単にROIを作成することができます。
3Dリージョングローイングを使うことで、シリーズ(今開いている画像全てのまとまりをシリーズという)内の画像全てにROIを適用できます。
アルゴリズムは以下の4つから選べます。
- しきい値(間隔): クリック位置から設定したCT値の範囲内を含める
- しきい値(上限/下限): 設定した上・下限の間のCT値を含める
- 隣接: 設定した上・下限かつ、クリック位置と隣接した範囲を含める
- 信頼区間: 調査不足。。。
個人的には「しきい値(上限/下限)」が使いやすいです。
CT値は取得する臓器によって異なるので、画像診療の知識と合わせて活用ください。
ROIツールで範囲を囲むとその部位のCT値(最大最小や平均)が表示されるので、大体の値を掴む助けになるでしょう。
他にも色々と設定や活用法があるので詳しいことはOsiriX公式ページで調べるか、以下のような動画を探してみてください。
プラグイン
また、このようなプラグインもあるようです。
CIMAERAという企業が提供しているようです。有料っぽいです。
試してはいないのですが、今のやり方で不便を感じたら導入を検討します。
サブシリーズ
DICOMファイルにまとめられた一連の画像群のことをシリーズと呼びます。
しかしいつも全ての画像を扱うわけではありません。
そこで、例えば前肢を対象にして作業をする(下半身のデータが必要ない)場合は前肢を含む画像だけのシリーズを作ります。これがサブシリーズです。
「option」を押しながら「2Dビューア」をクリックすると表示するサブシリーズの開始位置と終了位置を選択できます。
ただ、この時開いている画像枚数は少なくても処理の早さは大元のシリーズの枚数に依存する、気がします。
メモリ16GB積んだMac bool proと有料版OsiriX MDを駆使しても全身を含んだシリーズを開くと動きがかなり重くなります。
(メニューバークリックしてから反応するまで10秒以上かかったり。。。)
なので、OsiriXにインポートする時に必要な領域の画像だけをインポートするようにするのが吉だと思います。
(じゃあOsiriX MDはなんのために買ったのか、という話になるが。。。)
Swampdogマニュアル
以下はSwampdogでCTデータから3Dモデルを作成する際の手順をまとめたものです。
扱う画像の範囲をインポートする
処理したい範囲の画像だけをOsiriXにインポートします(ドラッグ&ドロップで良い)。
この時、前後に1枚は余裕を持たせます。
(開始や終了の位置に対象が含まれないバッファーを用意する。)
そうしないと最後にサーフェスレンダリングした時に、うまく閉じた3Dモデルができず穴が空いてしまいます。
全画像を開かないことで大分軽くなります。
なお、DICOMファイル形式にされた時各画像に位置情報が割り振られるのか、このようにバラバラに扱ってobjファイルを作っても合成する時にはそれぞれの位置関係が保存されているので安心です。
リージョングローイングでざっくり囲う
「ROI -> リージョングローイング」を選択。
3Dリージョングローイングはなかなかうまくいかないので、2Dで現在の画像にのみ適用します。
(余計なものまで含む)
アルゴリズムは骨の場合、「しきい値(上限/下限)」にしてしきい値上限を十分に大きい値(1500とか)、しきい値下限は様子を見ながら150~300程度で調節します。
(ヒトの骨CT値はだいたい300~1100ぐらいらしいですが、そもそもCT値は再構成関数によっても変わるので気をつけましょう。)
ROIの種類はブラシではなくポリゴンにします(リパルサーを使う為)。
ポリゴン数は多すぎるとROIがカクカクになり、少なすぎるといびつな形になります。
マックスより若干少なめがいいように感じますが、調整してみてください。
「ROI名」にその組織の名前を入力します。これは作成されたROIに反映されます。
画面中のROIで囲いたいところをクリックするとプレビュー線が出ます。
問題なければ「計算する」を押して、ROIを作成します。
この状態でキーボードの矢印の左右を使うと前後のスライスに画面が切り替わります。
直線的な部位であれば5~10枚、曲線的な部分であれば2~3枚ぐらいごとに飛び飛びでROIを作成していきます。
ちなみに、commandを押しながら画面をドラッグすると表示位置を動かせます。
スライス位置がずれると、骨の位置も変わってくるので適宜調整します。
リパルサーで整形
リージョングローイングで自動生成したROIは細部が甘いのでリパルサーで整形します。
キーボードのRがショートカットキーになっています。
ちなみにMは移動ツール、Zはズームツール、Sは選択ツールに対応しています。
移動ツールはcommandを押しながらの状態でも使えます。
ROIが選択中だと下の画像の右下のように、紫色のポイントが表示されてやりにくいです。
「ROI -> このシリーズ内のすべてのROIsを選択解除」で左上の水色のように線だけが表示されて細かい調整がしやすくなります。
もしくは「S」で選択ツールにして適当に範囲外をクリックすることでも選択を解除できます。
注意点、リパルサーが作用するのは紫のポイントの位置です。
リージョングローイングでROIを作成した時は下のように紫のポイントが疎なので注意します。
(つまり、下の画像で言えば紫の点に当たらないように水色の線に当ててもROIは変化しない。)
リパルサーはクリックした位置がROIから遠ければ大きく、近ければ小さくなります。
適宜使い分けましょう。
不足ROIを生成
「ROI -> ROI容積 -> 不足するROIを生成」を選択して、飛び飛びに作ったROIから中間のROIを作ります。
この時、表示画面に対象のROIが表示されている必要があります。
一連のROIとしての認識する条件は、(おそらく)個々のROIに設定している名前が一致しているかです。
つまり、
1枚目のスライスに「a」という名前のROIがあり、
5枚目のスライスに「a」という名前のROIがあるとします。
この状態で不足するROIを生成すると2~4枚目に「a」というROIが自動で生成されます。
出来上がったROIを確認してずれていればリパルサーで微調整をします。
ただし、ROIが枝分かれする場合は気をつけましょう。
1~2枚目のスライスでは1本、
3~5枚目のスライスでは2本に枝分かれしている場合、
まずはどちらかの枝と根元だけでROIを生成し、支流は別名のROIで生成しましょう。
そして最後にシリーズ内のROI名を統一の名前に変更します。
ピクセル値を設定
「ROI -> ピクセル値を設定」から開きます。
まずROIsの外側のピクセル値を十分に小さく(画像では-2,258)することで、ROI外を除去します。
これでROI内以外は真っ暗になり、サーフェスレンダリングで余計なものが映り込む心配がなくなりました。
サーフェスレンダリング
「3Dビューア -> サーフェスレンダリング」を行います。
解像度を最高に、間引き処理は1.0、平滑化は100に設定します。
あとはデフォルトのままで実行すればピクセル値300以上が抽出されます。
このデフォルトの第1サーフェスは骨を想定している模様です。そのため白色で表現されます。
骨を抽出する場合はこの設定を使いましょう。
先ほどROIの外側はマイナスに設定したのでROIの内側のみが抽出されます。
いろんな角度から確認します。
デフォルトのままドラッグすれば回転、commandを押しながらドラッグすれば移動。
2本指でスライドすればズームできます。
問題なければ右上の歯車マークからobjファイルへの書き出しを選択します。
以下のようにスリットが入ってしまった時は、2つの原因が考えられます。
- シリーズ名の全てのROI名が一致していない
- 一枚の画像内に2つのROIが存在する
前者の場合は、「ROI -> ROI名を変更 -> このシリーズ内すべてのROIs」で名称を統一しましょう。
後者の場合は、
前項で「ROIの外側のピクセル値を負に設定」したことが原因です。
ROIが2つ存在する場合、どちらのROIももう片方のROIの外側と判定されてしまいます。
この場合は「ROI -> ピクセル値を設定」で「ROIsの内側」を「初期値に設定」してください。
roiの保存
最後に、objファイルだけでなくroiも保存してください。
「ROI -> このシリーズすべてのROIsを保存」を選択します。
ROI名、objファイルと同じファイル名にするとわかりやすいです。
「.rois_series」という拡張子で保存されていれば成功です。
「.rois」という拡張子になっていたら選択したROIしか保存できていません。
せっかくの努力が水の泡になるので気をつけましょう。
OsiriX TIPS
知ってるとちょっと作業が楽になるTIPSです。
パッと流し見て、こんな機能があるんだと頭の片隅に置いておくといつか役に立つかもしれません。
ショートカット
「環境設定 -> ホットキー」から確認、変更できます。
よく使うのは以下。
- 「Z」: ズーム
- 「M」、「command押しながらドラッグ」: 移動
- 「alt押しながらドラッグ」: コントラスト
- 「I」: 回転
- 「S」: 選択
- 「R」: リパルサー
- 「D」: 鉛筆
- 「command + R」: 画像表示を初期状態に戻す
OsiriX FAQ
公式にFAQが掲載されています。
ただし、プレミアムメンバーシップ(製品とは別)に加入している必要があります。
12ヶ月で12,500円と安くないので私は断念しました。
- OsiriX: Knowledge Base
動画として出力
「command + S」で動画として出力したいシリーズの範囲を指定します。
保存すればその範囲の画像を映した動画ファイルが得られます。
参考