2016年4月23日土曜日

第11回 OsiriXでCTコロノグラフィ画像確認!

前回はOsiriXの2次元画像表示方法を少し詳しくご紹介しました。
今回は、日本で普及しつつある「CTコロノグラフィー」の画像確認について、少しだけご紹介させていただきます。

CTコロノグラフィーは、今後の普及が期待されている検査で、大腸内視鏡検査のような事前準備をして実施するX線CT検査です。世界中で1994年ごろから研究が進められてきました。この検査は、大腸内の残存物を排泄してから、大腸を膨らませてCTスキャンします。この検査で、10〜20mm径の大腸がんを観察することができます。執筆時点で、5〜6mm以上のポリープ様の腫瘍を発見できると報告されている医療施設もあります。

小さな病変を見つけることができるということは、がんの早期発見に繋がります。
このような検査技術や診断技術が進歩していくと、これまでよりも病気の検出ができるようになるため、期待の高まる検査の一つです。

詳しくは、専門書を(例えば、こちら:http://www.amazon.com/CT-Colonography-Principles-Practice-Colonoscopy/dp/1416061681:Google bookを使って、多少ですが内容を読むこともできます。)


CTコロノグラフィーのための画像処理


CTコロノグラフィーは2種類の腹部CT画像(仰臥位・腹臥位)が得られます。この画像を画像解析ワークステーションを使って解析します。
CTコロノグラフィーの検査の後処理は次のようになります。

・3D画像処理にて、大腸のみを抽出して3D画像をつくります。
・仮想内視鏡や展開像で大腸の内側を観察するために腸管に対する中心線を設定します。
・展開像、MPRや仮想内視鏡を組み合わせて、病変を検出します。


OsiriXで試してみよう!


さっそく、これらの画像処理をOsiriXで体験してみましょう。
チェック診断をされる技師、存在診断や質的診断をされる読影医によって、読み方は様々ですが、今回は一例として、以下のようなルーチンを考えました。


  1. まず大局的に見る:模擬注腸X線画像の観察
  2. (腸管内展開像の表面を観察する+CAD)
  3. 疑わしい部位をMPRで観察(基本は横断像)
  4. 必要に応じて仮想内視鏡を確認
  5. (3D画像上での病変部位再構成や計測)

これらのルーチン観察を行う上で、必ず仰臥位と腹臥位を比較しながら見ていくこととします。

上記のうち、カッコで示したワークフロー(2,5)は、まだOsiriXでは実現できません。しかし、その他の操作は可能です。OsiriXを用いてCTコロノグラフィーの研究発表を行われている先生もいます。

では、実際に試していきましょう。


大腸3D画像を作る-まず大局的に見る


まず、注腸造影検査などの際に、大腸がんを疑う所見として、アップルコアサインというものがあります。これは、言葉の通り、大腸の病変部が、かじられたリンゴのように見えることからそう呼ばれています。大腸がんの診断をする上で初歩的で重要な所見です。

まず、この所見がないかを、大局的に見ていくために、大腸内腔だけをターゲットとした3Dボリュームレンダリング画像を作ってみます。

今回はこの操作をリージョングローイングで行っていきます。
操作方法は簡単で、リージョングローイングに必要な設定を行ったのちに、関心領域を選ぶと、自動的に二酸化炭素で膨張した大腸内腔のみが選択されます。


(対象画像を2Dビューワで開いて、Growing regionを選択)


(リージョングローイングの設定)


(任意の大腸内腔部位をクリックして自動計算される大腸内腔)

この大腸3D画像は任意の方向から大局的に観察することができますので、注腸造影では体位変換の制約があるために描出できない箇所を見ることができます。

このやり方でなくとも、MIPやボリュームレンダリングでWW/WLやオパシティカーブを変更して、観察することもできます。


MPRを用いた画像の観察


3D画像や横断像で怪しい部位を見つけた場合、より詳細な位置関係を多断面で観察します。
例えば、3D曲線を利用して中心線に直行する再構成画像を確認したいというニーズもあると思います。こういった場合、OsiriXでは、3DカーブMPR機能を使います。


(大腸の中心線を描き、その曲線に対する3つの直行断面を表示)

このモードによって、中心線に直行する断面の観察ができることがわかります。単純に腹部の横断面で観察するよりも、大腸内腔の輪切りを観察できるので、表在病変や茎を有するようなポリープ様病変を詳細に観察することができます。


仮想内視鏡モード、中心線設定とフライスルー


OsiriXには標準で仮想内視鏡機能が付いています。この仮想内視鏡で表示された大腸内腔を、スムーズに観察するための"フライスルー"という機能も付いています。
フライスルーをさせたい大腸内腔の経路もユーザーが作成できます。


(仮想内視鏡モードを起動し、ビューポイントを大腸内腔に設定)

横断像やMPRだけでは見落としてしまいがちな病変も、フライスルーを合わせて使うことで、ひだや内膜の形状変化やポリープなどの発見に役立ちます。(子宮内膜症など、外部から大腸壁を押している場合などもあるため、仮想内視鏡のみでの判断には注意が必要です。)


最後に


今回ご紹介した通り、ある程度の処理や解析は、OsiriXでもできますが、実はもっと高機能なワークステーションの開発は進んでいます。

市販のワークステーションには、例えば、仰臥位と腹臥位のより使いやすい比較表示、dissection view、標的病変のタグ付け、標的病変部位のみに絞った多断面再構成や3D画像表示上での病変の長径計測、MPRと仮想内視鏡の合成画像表示、形状に特徴のある領域を強調表示するCAD(computer aided diagnosis)機能など、CTコロノグラフィー専用の機能があります。

これらのCTCに特化した機能がOsiriXにも実装されるといいですね。

ただ、今回ご紹介した通り、ある程度の処理や解析は、OsiriXでもできます。
OsiriXはオープンソースで無料の医用画像解析アプリケーションです。研究用途で試してみてください。

Visionary Imaging Services, Inc.は、イメージング技術サポートを通じて、創薬研究や医療機器開発など、臨床研究(臨床試験)サポートサービスを展開しております。OsiriXシリーズも販売中です!よろしくお願い致します!

ビジョナリーイメージングサービスは、日本(特に神奈川の)ユーザーのニーズにいち早く応えるために、GRAPHYを開発しています。オープンソースです。


神奈川OsiriXユーザ"600"以上を目指してがんばります!


2016年4月15日金曜日

第10回 OsiriXのデータベース

今回は、あまりユーザーから触れられることがない、データベースについて少し解説をさせていただきます。

データベースが技術的な話になると際限がないので、ここでは、OsiriXが初期設定で書類ディレクトリに作成する「OsiriX Data」というSQLiteで作られたローカルデータベースに注目したいと思います。

このOsiriX Dataフォルダには、3D画像処理データやDICOM画像、画像診断レポートおよびそのテンプレートなどが保存される非常に重要なフォルダです。

OsiriXのデータベースを用いたファイル管理は、他のデータベースとの接続や、自分でクエリを記述して特定の画像をアルバムにしたりすることも可能です。

はじめに


OsiriXをインストールして、起動すると、もし、書類ディレクトリに「OsiriX Data」というフォルダがなければ、新規にこのフォルダを作るプログラムが自動で実行されます。
その後、書類ディレクトリにOsiriX Dataというフォルダができます。
OsiriXを再インストールする場合は、このフォルダを残しておけば、新しいOsiriXが自動でこのフォルダをデータベースとして認識しますので、データの マイグレーションなどは不要です。
OsiriXの環境設定から、データベースの場所を変更することもできます。

OsiriX Dataの構成


OsiriX LiteまたはOsiriX-KANAGAWAをアプリケーションフォルダにインストールして、書類フォルダに移動して、OsiriX Dataを開いてみましょう。次のような構成になっていることがわかります。


3DSTATE

3D画像を編集した時の編集状態を保存しておくフォルダです。

左:編集前 右:編集後

Database.momd

OsiriXのデータベースのデータモデルファイルが格納されています。
重要なファイルです。

DATABASE.noindex

データベースにインポートされた実DICOMデータが保存されています。
10000枚単位でフォルダが分けられます。

Database.sql

SQLiteのデータベースインデックスファイルです。データベースと全てのDICOM画像とのリンクを記録しています。OsiriX起動画面のデータベースウィンドウのスタディリストとも紐付いています。このファイルにネットワークログも記録されます。
このファイルが壊れると、データベースのリビルドが必要です。

HTML_TEMPLATES

QuickTimeもMovieをExportした後に、Movieを再生するときのブラウザー画面のテンプレートが保存されています。

INCOMING.noindex

DATABASEファルダに保存される前のデータを受信するファイルフォルダです。
データベースのリビルドやデータベースの統合で利用します。

NOT READABLE

OsiriXが読み込めなかったファイルを保存するフォルダです。

PAGES TEMPLATES

.pages拡張子の読影レポート用文書テンプレートを保存しておくフォルダです。
OsiriXは、デフォルトで以下の形式の読影レポート用文書テンプレートを取り扱うことができます。

  • .pages
  • .odt
  • .rtf
  • .doc

拡張子の種類の切り替えは、OsiriX環境設定から行うことができます。

REPORTS

読影レポートが保存されるフォルダです。

OsiriX Dataの設定


OsiriX Dataは、OsiriX環境設定の「データベース」から行います。
多くの設定機能が備わっています。いろいろな設定ができるので、見ていきましょう。


File Management

  • OsiriXのローカルデータベースの場所を決める
  • DICOMファイル以外の画像データの取り込みの可否
  • メディアから取り込むDICOMデータの破損の検証
  • ローカルデータベースへのDICOMデータのコピーの可否

Database Display

  • 日時の表示形式の変更


(日時表示をスラッシュで区切る:デフォルト)

(日時表示をハイフンで区切る:ISO式に)


  • ウィンドウ内のフォントサイズ変更(スモール、レギュラー、ラージ)
  • 患者年齢表示変更(現在の年齢と検査時点の年齢)

Patient unique Identifier

  • 患者UIDへ反映する情報を設定

コメントとステータスの編集

  • スタディに対するコメントを格納する特定のDICOMタグを指定

シリーズパーシング/ソート

  • マルチフレームの分割表示などを設定
  • ソート設定

データベースオートクリーニング

  • 検査日から削除までの期間を指定して削除(1 weekが最短、1 yearが最長)
  • 開かなかった期間を指定して削除
  • コメントがあるまたはない場合に削除
  • PCの空き容量を指定して、空き容量を超えた場合に設定したものから削除(最近作成したもの、開いたもの、追加したもの)

レポート

  • その拡張子のファイルを利用するかを設定
  • DICOM PDFを自動作成するかを設定

Databaseのリビルド

もしもデータベースに心配なことが起こったら、リビルドができます。
リビルド機能は、メニューからFile>Rebuild Entire Database...を選択して起動します。

リビルド機能

コンプリートリビルドは、既存のsqlファイルへのリンクを削除してDATABASEフォルダ内のデータをインポートし直します。

Re-インポートDICOMファイル&クリーンは、もう一度すべてのDICOMファイルをインポートし直します。もし、既存のリンクに紐付かないデータがある場合は、そのデータを削除します。

コンプリートリビルドの操作はマニュアルでもできます。
マニュアルで行う手順は以下の通りです。


  1. OsiriXを終了しておきます。
  2. OsiriX Dataフォルダ内のDATABASEフォルダとINCOMINGフォルダ以外のデータをすべて削除
  3. DATABASEフォルダをINCOMINGフォルダへ移動
  4. OsiriXを起動


OsiriX Dataを動かすSQL


OsiriXのローカルデータベースはSQLiteで作られています。
そのデータ構造のコアデータは、主に以下のものがあります。

  • スタディレベルデータ
  • シリーズレベルデータ
  • イメージレベルデータ
  • アルバムデータ

もっと詳しく知りたい方は、SQLブラウザーでDatabase.sqlを覗いてみてください。
すべてのテーブルがわかります。
このテーブルを応用すれば、他の画像処理ソフトウェアのためにOsiriXをファイルマネージャーとして使うこともできますね。

最後に


今回はOsiriXのデータベースの初歩についてご紹介いたしました。
普段、画像の参照や処理/解析の機能に着目しがちですが、このようなデータベースがそのアプリケーションの設計のキモの部分になっていることを知っていると、なにかトラブルが起きた時にも自分で対応できることが増えると思います。

次回は、3D画像処理機能について触れていきたいと思います。

OsiriXはオープンソースですので、無料で試してみることができます。気軽にご活用ください。

Visionary Imaging Services, Inc.は、イメージング技術サポートを通じて、創薬研究や医療機器開発など、臨床研究(臨床試験)サポートサービスを展開しております。OsiriXシリーズも販売中です!よろしくお願い致します!


ビジョナリーイメージングサービスは、日本(特に神奈川の)ユーザーのニーズにいち早く応えるために、GRAPHYを開発しています。オープンソースです。


神奈川OsiriXユーザ"600"以上を目指してがんばります!


2016年4月13日水曜日

第9回 OsiriXを用いた医用画像の表示-2D表示をもっと詳細に-

前回まではOsiriXをソースコードからビルドしたり、プラグインの開発方法をご紹介したりと、少し画像処理のエンジニア向けの内容を書いてきました。

今回はOsiriXを主に画像の参照のために使うユーザーの視点から、画像表示機能に着目して、便利なツールを含めてご紹介いたします。

2D表示機能


OsiriXは多彩な2D表示機能を有しています。
市販の医用画像処理ワークステーションと比べても、その機能には大きな差異を感じません。

ウィンドウタイリングの変更


初期設定のまま任意のスタディの画像を開くと、シリーズウィンドウというウィンドウが開きます。このシリーズウィンドウは、シリーズ画像を一つのフレームで囲んだものです。

(画像を表示しているウィンドウがシリーズウィンドウです)


このシリーズウィンドウは分割できます。分割すると、スタディに含まれる複数のシリーズをそのウィンドウの数だけ表示できます。

(T2w, T1w, T2*,FLAIRを4ウィンドウで表示)

ウィンドウ間のスライス同期もできます。同期の機能は複数用意されていますので、用途に合わせて使い分けることができます。

ここでは、メニュー>2Dビューワ>Propagate Settings Between SeriesとSync Series(same study)>Slice positionをチェックした状態で表示をしてみます。スライス位置と拡大率が同期されます。同一患者データでスタディが異なる場合でも、Sync Series(different study)をチェックして同期できます。


(メニュー>2Dビューワ>Propagate Settings Between SeriesとSync Series(same study)>Slice positionをチェック)

(拡大縮小も同期します)

同期をしたくない時はこれらのチェックを外してください。
画像の並び順を逆にしたい時は、ソート機能を使います。

(スライス位置で並び順を変更します)

(アセンディング:1画像目からスライス番号が上がっていきます)

(ディセンディング:最後の画像から1画像目までスライス番号が下がっていきます)

説明が前後しますが、シリーズウィンドウの中で、上記のように1枚ずつ画像を分割表示することもできます。これは、シリーズウィンドウではなく、メニュー>2Dビューワ>イメージタイリングを使います。任意の画像分割数を選んで表示します。

画像の拡大・縮小


一般的な機能ですが、よく使う機能ですので、ご紹介いたします。
OsiriXは2つの拡大機能が使えます。拡大鏡と虫眼鏡マークの拡大・縮小ツールです。
オススメは拡大鏡です。

(画像上でShiftを押すだけです)

もし、虫眼鏡マークを使って、マウス操作で画像を拡大・縮小した場合に画像の位置を移動させたい時は、上下左右の矢印マークのパンツールを利用します。

画像コントラストの調整


メニュー>2Dビューワ>WW/WLから、ウィンドウ幅とウィンドウレベルを調整できます。
事前にプリセット(事前に設定保存しておく)をしておくと、WW/WLのドロップダウンリストに設定がリストされるので、マニュアルで毎回合わせなくとも、簡単にコントラストを合わせることができます。

(Add Current WL/WWまたはSet WL/WW manuallyで増やすことができます)

削除するときは、このメニュー上でShiftを押しながらリストを選択します。

(Deleteで消えます)

ツールバーの変更


ツールバーを活用しましょう。ツールバーは、選択する表示機能によって変わります。

例えば、2Dビューワを開くと、2Dビューワ用のツールバーが表示されていることがわかります。3Dビューワを開くと、またその設定が変わっていることに気がつきます。このように、ツールバーは表示機能によって変更できます。

ツールバーのカスタマイズは簡単です。そして、変更は保持されます。

(または、ツールバー部分で右クリックします)

(ツールバーカスタマイズウィンドウが開きます)

あとは、好きな機能を選んで、ドラッグ&ドロップでツールバーに加えたり、外したりします。

もし、ツールバーの設定を元に戻したいと思ったら、カスタマイズウィンドウ下段のデフォルトツールバーセットをドラッグ&ドロップするだけで元に戻ります。

昔は、ユーザーセッティングを保存していましたが、今はそのような操作を省略できるように改良されています。

画像処理フィルター


いくつかの画像処理フィルターが利用できます。自分の好きなフィルターを追加することもできます。
画像処理フィルターについては、また別の機会に詳述したいと思います。ここでは詳細は割愛いたします。


(Convolution filter>sharp3×3の例)

リセット


リセット機能は便利です。
画像の表示状態を初期状態に戻します。例えば、画像コントラストを元に戻したい時や、拡大・縮小を元に戻したい時などに便利です。ツールバーに加えておきましょう。(画像処理フィルターやピクセルサイズの変更などは元に戻りません。)

(リセットボタン)

キーイメージ


キーイメージを設定できます。
キーイメージとは、何かの所見がある画像を意味します。しばしば、所見に関する重要な情報を含んでいる画像です。

キーイメージは、2Dビューア上で、command+Kのショートカットや、メニュー2Dビューワ>Key Imageなどで指定することができます。

キーイメージは、読影レポートなどを作成する際や、ティーチングファイルを作成する際などに便利な機能です。

このキーイメージをビューワ上で指定した後、データベースウィンドウから再度画像を開く際に、ROI&KEYボタンで開くと、ROIとキーイメージだけを参照することができます。

(ROIs&keys)

サブトラクション


サブトラクションはDSA画像(デジタルサブトラクションアンギオグラフィなど)のみで使える機能です。
DSA画像は血管以外の背景画像を差分した画像になっています。その差分されている背景画像のピクセルシフトの調整や、鮮鋭度を調整することができます。

(2Dビューワのツールバーにサブトラクションを追加)

(サブトラクションの詳細機能)

(サブトラクション前)

(サブトラクション後)

設定したマスクイメージをフレーム内の全画像から差し引きます。鮮鋭度も調整できます。

アノテーション


2Dビューワ>アノテーションから設定できます。
ビューワに表示する属性情報を選択する機能です。
患者の個人情報などを表示したくない時に利用したりします。

ワークスペース状態保存


2Dビューワの表示状態を保存する機能です。2Dビューワ>Workspace Stateで設定できます。
3Dのボリュームレンダリングの編集状態を保存する機能ではありません。(この機能は別にあります)

WW/WL、ズーム、パン、ローテーション、オリエンテーション、イメージインデックスの状態を当該スタディのデータベースに保存します。再度開く時は、自動的にこの保存状態が検索され、表示状態を再現します。再現したくない時は、ワークスペースの状態をリセットします。

DICOMメタデータ


DICOMのヘッダー情報を編集する機能です。
Editボタンで編集した後、Applyボタンで反映させます。
OsiriXの環境設定の一般の項目で、DICOM Edittingを許可するチェックをしておいてください。

(DICOMヘッダー編集)

その他


今回はご紹介しておりませんが、ピクセルのスケールを変更したり、画像を回転させたり、PET-CTフュージョン表示のための関心領域の微妙な面内位置調整をしたりする機能もあります。必要時は、使ってみてください。OsiriXメニュー内の2Dビューワ機能一覧から起動できます。

今回は2D表示機能だけに注目して、機能を解説しました。
OsiriXは、一般的な外来診察での画像参照や、画像診断あるいは画像の検像などにも対応できる豊富な画像表示機能が備わっています。

OsiriXはオープンソースですので、無料で試してみることができます。
ご活用ください。

Visionary Imaging Services, Inc.は、イメージング技術サポートを通じて、創薬研究や医療機器開発など、臨床研究(臨床試験)サポートサービスを展開しております。OsiriXシリーズも販売中です!よろしくお願い致します!

ビジョナリーイメージングサービスは、日本(特に神奈川の)ユーザーのニーズにいち早く応えるために、GRAPHYを開発しています。オープンソースです。


神奈川OsiriXユーザ"600"以上を目指してがんばります!
(OsiriX-KANAGAWAはこちらからどうぞ(準備中))


2016年4月10日日曜日

第8回 OsiriXのプラグイン開発方法-Hello OsiriX!ダイアログを表示する-

前回(第7回)までで、OsiriXのプラグインの総説からOsiriXの開発環境の構築まで進めてきました。

今回は、OsiriXに自分の作ったプログラムを実行させるプラグインプログラムを開発する初歩として、「Hello OsiriX!ダイアログ」を開発してみましょう。

プラグインプログラムを作るには、一般的にはOsiriX開発環境が必要です。
まだOsiriX開発環境を構築していない方は、前回の記事を参考にされてください。

プログラミングが初めての方は、ここから先の作業を行う前に、前回までに紹介した書籍などを読み、事前に学習しておかれることをお勧めします。

それでは早速始めていきましょう!

OsiriX Liteを取得する


開発したプラグインのテストのために、新たにOsiriX Liteをインストールしておいてください。すでにインストール済みの方は不要です。OsiriXのインストールは、本ブログの第2回を参考にしてください。

プラグインソースコードを取得する


OsiriXのプラグインのソースコードは、本体と同様に公開されています。全てが公開されているわけではありませんが、参考になるものばかりですので、先に取得しておきましょう。

もう一つ、このプラグインソースコードを取得する理由があります。このプラグインソースコードの中に、プラグインジェネレータという非常に便利なツールが含まれているのです。今回はこのプラグインジェネレータを使ってプラグインを開発していきます。
(このプラグインジェネレータを使わなくとも、Bundleというプロジェクト種別を使ってそのInfo.plistファイルを編集することで、OsiriXのプラグインを開発することもできます。)

プラグインソースコードは、GitHubのosirixpluginリポジトリからZipファイルでダウンロードできます。
https://github.com/pixmeo/osirixplugins

GitをPCにインストールしている方は、ターミナルを使ってコピーします。
例えば、ターミナルからcdコマンドで書類ディレクトリに移動してから、以下の青文字部分をターミナルに貼り付けてenterで実行すると、書類ディレクトリに新たに"osirixplugin"というフォルダができます。)

123456789-no-Mac〜:Documents Users$ git clone https://github.com/pixmeo/osirixplugins.git osirixplugin

プラグインジェネレータを使う


プラグインソースコードを取得したら、その中にある"_help"フォルダを見つけてください。


_helpフォルダの中に、Osirix Plugin GeneratorというApple Scriptが含まれています。
これを使っていきます。


さっそく、Osirix Plugin Generatorをダブルクリックで起動してみましょう。すると、Choose Plugin Nameというポップアップが表示されます。ここで、任意のプラグイン名を入力しましょう。プラグイン名に記号は含めないことをお勧めします。

Choose Plugin Nameが表示された

(例:OsiriXHowToと入力)

プラグイン名を入力して、OKをすると、次は開発者の名前を聞かれますので、ご自分の名前やあだ名などを入力します。

(開発者名を入力)

開発者名を入力し、OKで進むと、自動的に_helpフォルダに新しくプラグインプロジェクトフォルダが作成されます。

(自動的に作られたプラグインプロジェクトフォルダ)
"OsiriXHowTo"

(フォルダの内容)


ここまでくれば、もう今回の目的は果たしたも同然です。

Xcodeでプラグインプロジェクトを起動する


それでは、Xcodeを使って、自動生成されたプラグインプロジェクトを表示してみましょう。
今回の場合は、フォルダ内の"OsiriXHowTo.xcodeproj"をダブルクリックして開いてみました。(.xcodeprojという拡張子のファイルがプロジェクトファイルです。)

起動画面

次にソースコードの構成を見ていきましょう。
左上にあるプロジェクトを選択して、その中身をツリー表示で展開してみます。

左上のプロジェクトを選択して、ツリー表示を展開

もう少し見てみましょう。ソースコードの構成が以下のようになっていることがわかります。


・Classes

ここに、実際の自分のコードを保存していきます。

・Other Sources

ここはあまり変更することはありませんが、Prefix.pchというファイルが保管されています。このファイルは、PreCompiled Headerを指定するもので、事前によく使われるヘッダーファイルをまとめることで同じヘッダーファイルの解析を防ぐ働きをします。

・Resources

この例では、Info.plistや、InfoPlist.stringsという設定ファイルが含まれています。
.plistファイルは、プロジェクトのビルドのセッティングやその他の固有の属性情報が保管されているファイルです。.stringsファイルは、インターフェースのローカライズのためのファイルです。例えば、英語のインターフェースを日本語化するときなどに使います。

・Frameworks and Libraries

開発したアプリケーションを動かすために必要なすべてのフレームワークやライブラリをリンクしているフォルダです。

・Products

開発しているアプリケーションです。実際にリリースするための入れ物になります。

もうお分かりいただけたと思いますが、Osirix Plugin Generatorを使うと、このように、OsiriXプラグインに必要な情報を設定済みのプロジェクトが楽に作れるので、非常に便利です。

最初のソースコード

ソースコードを編集し始めましょう。
ソースコードは、Classesの中にあります。


.hはヘッダーファイル、.mはメソッドファイルです。
ヘッダーファイルには、変数やメソッドの定義だけをします。メソッドファイルには実際のメソッドの詳細を書いていきます。詳細は割愛しますね。

今、重要なことは、これらのうち、.mファイルを編集するということです。もっと詳しいことは、この作業を終えてから、想像を膨らませてください。

.mファイルを開くと、以下のようなコードが書いてあります。

//
//  OsiriXHowToFilter.m
//  OsiriXHowTo
//
//  Copyright (c) 2016 Tatsuaki. All rights reserved.
//

#import "OsiriXHowToFilter.h"

@implementation OsiriXHowToFilter

- (void) initPlugin
{
}

- (long) filterImage:(NSString*) menuName
{
ViewerController *new2DViewer;
// In this plugin, we will simply duplicate the current 2D window!
new2DViewer = [self duplicateCurrent2DViewerWindow];
if( new2DViewer) return 0; // No Errors
else return -1;
}


@end

読んだ通りですが、この自動で作成されたメソッドファイルには、"表示している画像を別のウィンドウに表示する"ことができるようになっています。

もし、ソースはいじれない!というビギナーの方は、この部分は斜め読みして、そのままいじらず、次のセクションに進んでください。

少しチャレンジしようという方は、このソースを以下のように書き換えてください。

//
//  OsiriXHowToFilter.m
//  OsiriXHowTo
//
//  Copyright (c) 2016 Tatsuaki. All rights reserved.
//

#import "OsiriXHowToFilter.h"

@implementation OsiriXHowToFilter

- (void) initPlugin
{
}

- (long) filterImage:(NSString*) menuName
{
ViewerController *new2DViewer;
// In this plugin, we will simply duplicate the current 2D window!
new2DViewer = [self duplicateCurrent2DViewerWindow];

//added
NSRunInformationalAlertPanel(@"Welcome", @"Hello OsiriX!", @"OK", nil, nil);

if( new2DViewer) return 0; // No Errors
else return -1;
}


@end

NSRunInformationalAlertPanel(@"Welcome", @"Hello OsiriX!", @"OK", nil, nil);という文章を加えてみました。

このように、自分の考えたコードをどんどん書いていくことができます。

ビルドセッティング

コードが書き終わったら、ビルドするための設定を最終確認します。
確認することは、SDKです。SDK?と思った方は、第7回を参照してください。

設定は、画面左上のプロジェクト(この例では、OsiriXHowTo)を選択した状態で、右側に表示されるパネルで確認していきます。

まず、Infoパネルです。ここには、Info.plistファイルの内容が表示されています。

(Info.plistの内容)

このInfoパネルの最下段にpluginTypeという項目があります。ここは非常に重要で、作ったプラグインの種類をOsiriXに認識させるためのものです。この例では、imageFilterとなっています。このプラグインをOsiriXで起動すると、プラグインメニューのイメージフィルターの項目にリストされます。自分のプラグインの種類はここで設定するということを覚えておいてください。

次に、SDKの設定確認です。パネルをBuild Settingに切り替えて、その中のSDKを選択する箇所で、SDKを10.8に設定しておきましょう。あるいは、最新版(latest)にしておいてください。




これで、ビルドする準備ができました。

ビルドしてみよう!

ターゲットを自分のプラグインに合わせて、ビルドをRunします。
この例では、32-bitでも64-bitでも大丈夫です。

(Build Succeeded!)

これで、起動する準備ができました。

起動してみよう!


さっそく、プラグインを起動してみましょう。
ビルドが成功すると、Productのバンドル(この例では、OsiriXHowTo.osirixplugin)が黒文字になっているはずです。起動の方法はいくつかありますが、ここでは、デバックの意味も込めて、"Open with External Editor"を使います。

まず、Xcodeのツリー表示上で、OsiriXHowTo.osirixpluginを右クリックで選択して、そのポップアップから"Open with External Editor"を選択します。すると、OsiriX Liteが起動します。

OsiriX Liteが起動すると、自動的にプラグインのインストールウィンドウが開きます。表示に従って順に進めてください。

"Open with External Editor"を起動

OsiriX Liteが起動後に、現れるインストール確認ウィンドウ

プラグインをインストールするためのパスワード入力

OsiriX Lite再起動の確認ウィンドウ

そして、OsiriX Liteを再起動してください。再起動後、プラグインメニューのイメージフィルターに、"OsiriXHowTo"が追加されていることがわかります。

そして、任意の画像を2Dビューアで表示します。

そうすると、プラグインメニューの"OsiriXHowTo"が実行可能になっていることがわかります。※イメージフィルター型のプラグインは、2Dビューアを開かないと実行可能にならないことに注意してください。

実行してみましょう。

選択リストに追加されています

実行すると、以下のように、命令文の通り、OsiriX Liteが"Hello OsiriX!"ウィンドウを表示し、2Dビューアウィンドウを一つ増やしたことがわかります。



やってみた方、うまくできましたか?ご興味のある方、是非トライしてみてください。
うまくできた方、お疲れ様でした。

忘れてはいけない観点:デュプリケート


ここまで読み進めていただいた方は、今からでもOsiriXプラグインの開発に取り掛かることができます。既存のワークステーションにはないあなただけしか知らないアルゴリズムを、ぜひOsiriXプラグインという形で実現させてみてください。

ここで、すごく重要なことをお伝えすると、プログラムは時間があればある程度かけますが、多くの人は時間がないということです。

そこで、一からコードを書く必要のある方以外は、すでに公開されているソースコードから勉強して、それを工夫して自分のソースコードに書き換えるようにしてみてはいかがでしょうか。可能な限り、デュプリケートしましょう。一から全部できる人なんて、世の中そうそういません。オープンな知識や資源は活用して、短期間でアイディアを形にしましょう。

最後に

もし、どうしてもわからない!という方は、ご連絡をいただければ何かしらアドバイスは可能かもしれません。

Visionary Imaging Services, Inc.は、イメージング技術サポートを通じて、創薬研究や医療機器開発など、臨床研究(臨床試験)サポートサービスを展開しております。OsiriXシリーズも販売中です!よろしくお願い致します!

ビジョナリーイメージングサービスは、日本(特に神奈川の)ユーザーのニーズにいち早く応えるために、GRAPHYを開発しています。オープンソースです。


神奈川OsiriXユーザ"600"以上を目指してがんばります!