Olea SDKを用いた医用画像処理プラグインの構築 
檜垣  徹(広島大学大学院医系科学研究科 先進画像診断開発共同研究講座)
Session 1:MR

2019-5-24


檜垣  徹(広島大学大学院医系科学研究科 先進画像診断開発共同研究講座)

医用画像処理プログラムの作成においては,2015年にキヤノンメディカルシステムズ社(当時・東芝メディカルシステムズ社)が傘下に収めたフランスのオレアメディカル社の研究用ソフトウエア「Olea SDK(Olea Software Development Kit)」(W.I.P.)を用いることで,プラグインの構築が容易に可能となる。本講演では,従来の方法と比較したOlea SDKの有用性を述べた上で,computed DWI(cDWI)プラグインの構築を実演する。

従来の医用画像処理とOlea SDK

1. 従来の医用画像処理プログラム作成の課題
従来,例えば論文などで報告された医用画像処理の新しい手法を検討するためには,まずPACSから,データ出力用の機器を用いて適正な方法で匿名化した画像をメディア出力し,画像解析用のコンピュータに取り込むという煩雑な準備が必要となる。また,DICOM対応のライブラリ〔DCMTK(開発言語:C++)など〕で画素値にアクセスするが,ライブラリを用いたとしても実装には非常に手間がかかる。さらに,独自のプログラムにより得られた解析結果を画面上に表示したりDICOMファイルに書き出したりするためにも,その都度機能を実装する必要があり,多大な労力を要する。

2. Olea SDKの概要
一方,Olea SDKは,オレアメディカル社の医用画像処理ワークステーション(WS)「Olea Sphere」の機能の一部として提供されており,さまざまな機能を持つ“box”を組み立てていくことで,ユーザーが簡単にプラグインを構築することができる。基本的なbox(入力box,画像処理box,結果表示boxなど)は標準搭載されているほか,独自の画像処理boxをユーザー自身がプログラミングして実装可能なため,論文で示された計算式などを入力して自分だけのプラグインを容易に構築することができる。
画像処理boxのプログラミングにはJavaが使用されており,WSから自作プラグインへの画像の受け渡しや,WSに結果を返す部分のソースコードはすでに記載されているため,初歩的なJavaの知識があれば,コアな画像処理アルゴリズムの部分だけをユーザー自身で実装するだけですむ。また,入力画像については,事前にPACSからOlea Sphereにデータを転送しておけば,Olea Sphereのデータベースから読み込むことができ,メディア出力する手間は不要となる。DICOMファイルの読み込みや,結果画像の表示・保存もWSですべて行うことができる。

Olea SDKを用いたプラグインの構築の実際─cDWIプラグイン

以下では,Olea SDKを用いたcDWIプラグインの構築の流れを紹介する。cDWIとは,2つのb値(例えば今回は,b=0とb=1000)のDWIから仮想的に任意のb値のDWIを作成する技術である。そのため,cDWIプラグインの構築には,入力データとしてDWIの同一シリーズの画像2つと作成するcDWIのb値が必要であり,出力データとしてはcDWIとADCマップが得られる。画像を表示するウインドウのレイアウトは,画面を4分割し,上段に入力DWI 1と2,下段左に出力ADC,右に出力cDWIを配置することとする。

(1) 入力フローの構築(図1〜4)
Olea SDKの画面を立ち上げると,左のサイドバーにさまざまな機能のboxの名称が表示される(図1)。
ここから,入力画像としてDICOMのモノクロ画像の項目を右側の画面にドラッグ&ドロップすると,入力画像box[Monochrome]が表示されるので,2回繰り返してboxを2つ用意する(図2)。
同様に,b値を入力するための整数box[Integer]とcDWIの計算を行うbox[cDWI]を各1つ用意する(図3)。
cDWI boxには,この時点ではアルゴリズムは実装されていないため,後ほどユーザー自身が実装する必要がある。また,cDWI boxの左側にプラグを3つ用意し,2つの入力画像box[Monochrome]および整数box[Integer]とドラッグ&ドロップでつないでいく(図4)。

(2) 出力フローの構築(図5)
出力側は,結果画像を表示するため,ディスプレイ機能のvolume viewer box[volume viewer]を使用する。この時,画像を表示するウインドウには,上段に入力画像(入力DWI 1,2),下段に結果画像(出力ADC,出力cDWI)を設定するため,volume viewer boxを4つ用意し,2つは入力画像boxとつなぎ,残る2つはcDWI boxにそれぞれつなぐ(図5)。整数boxに,b値のデフォルト値として,ここでは1500と入力する。

(3) 結果画像表示画面の設定(図6,7)
続いて,ディスプレイのタブに移動し,ウインドウを2×2に分割して,上段にDWI 1と2,下段にADCとcDWIを表示するよう配置する。また,整数box Integerもサイドパネルに配置する(図6)。
ここまで作成し,プラグインに名前をつけて保存するとWSが起動する。スタートボタンを押すとプラグインというメニューの中に保存したプラグインの名前が表示されるため,それをクリックすると入力のダイアログが起動する。入力画像は2つ使用することを事前に指定しているため,2つのboxが用意されており,そこに同一シリーズのb=0とb=1000の画像をドラッグ&ドロップで移動する。この段階で実行すると,上段に2つのDWIの画像のみが表示され,下段は空欄となる(図7)。

(4) アルゴリズムの実装(図8,9)
WSを一度終了し,Olea SDKのcDWI boxにアルゴリズムを実装する。前述のとおり,すでにデータの受け渡しなどに関するソースコードは入力されているため(図8),ここにユーザーが実行したいアルゴリズム(今回はcDWI)のソースコードをJavaを使用して追加する(図9)。

(5) 結果画像の表示(図10)
再度WSを起動して作成したプラグインを選択し,先ほどと同じ手順で同一シリーズのb=0とb=1000の画像を取り込んで実行すると,結果表示画面に2つの入力画像と,ADCおよびb=1500のcDWIが表示される(図10)。
この時,b値は任意の値に変更することも可能である。

図1 Olea SDKの起動画面 図2 ドラッグ&ドロップで入力画像boxを取得 図3 整数boxとcDWI boxを取得 図4 各boxのプラグを接続 図5 volume viewer boxを取得し,各boxと接続 図6 結果画像表示画面の設定 図7 プラグインの保存と確認 図8 cDWI boxにあらかじめ入力されているソースコード 図9 cDWIのソースコードを入力後の画面 図10 結果画像の表示

 

Olea SDKの利点と今後の展望

このように,Olea SDKを用いることで,データハンドリングが容易となり,病院ネットワークに接続したワークステーションで,画像処理のプラグインを簡単かつ安全に構築することが可能となる。プログラミングもきわめて容易であり,患者データベースやDICOMファイルの読み書きは,すべてWSの機能を拝借できる。結果画像をDICOMファイルとして出力し,ワークステーションに保存することもできるので,管理も簡便である。
さらに,そのほかの利点として,作成したプラグインを頒布すれば,Olea SDKを使用している施設間であれば多施設で同じ解析が可能となることから,マルチセンタースタディでの活用にも有用である。また,過去の自作プログラム(C++,Java,Matlab,Pythonなどで作成したもの)を取り込んで,再利用することもできる。最終的には製品化につなげやすいことも大きな利点であり,今後の展開が非常に期待される。

 

●そのほかのセミナーレポートはこちら(インナビ・アーカイブへ)


【関連コンテンツ】
TOP