2015年12月24日木曜日

第70回 ImageJを用いたBoneJの紹介で学ぶ!

この記事は参考記事を援用して、筆者の考えも交えつつ、記述しています。

“BoneJ”は、骨画像解析のためのImageJプラグインです。

骨の生成構造の解析の歴史は長く、昔から二次元スペクトル解析やフラクタル解析などの医用画像解析で骨粗鬆症の進行度の評価などに積極的に用いられてきました。
今回はImageJ のオープンソースコミュニティによって紹介されている、骨梁の形状と全体の骨の形状解析のためのプラグインBoneJについて、その概要と簡単な使い方を説明します。


BoneJとは


骨の三次元形状は、一般的にはCTとX線computed microtomography(μCT)の画像を用いて計測が行われます。これらCT、μCTなどの画像データを処理する画像処理や解析ソフトウェアは、装置が高額であることからソフトウェアも高額であることが多いです。
しかし、ImageJのBoneJを用いれば、高度な骨の構造解析が無料のプラグインで解析できます


BoneJのインストール方法と主な機能


BoneJをインストールするには、あらかじめImageJの最新バージョンをダウンロードして、“BoneJ_.jar”をImageJフォルダの中のpluginsディレクトリにコピーします。
BoneJ_.jarは、(http://bonej.org/)からダウンロードできます。
また、BoneJはImageJ3DViewerが必要です。こちらがインストールされていない場合は合わせて取得しておきましょう。(ImageJ_3D_Viewer.jar




BoneJには、骨梁の解析のために細線化解析(枝と分岐点の分類、カウント、計測)、非等方性解析、結合性解析(画像のオイラー特徴、1m㎥あたりの骨梁の解釈として濃淡結合性評価)フラクタル解析、平坦度解析(構造モデルインデックス)、等方性サーフフェス変換、purification(浄化:結合性解析のための前処理)、細線化3D、構造モデルインデックス、最適2値化処理、結合性度を最小化する自動閾値処理、厚み解析(Local Thickness pluginを用いた骨梁厚Tb.Thと分離度Tb.Sp の計算)、ボリュームフラクション(体積比:BV/TV を計算)が用意されています。


(BoneJの解析機能リスト)


また、骨の全体解析のために、楕円フィット(ROIマネージャにあるポイントROIのセットから、最適フィットする楕円体を検出)、球体フィット(上記楕円体フィットの球体バージョン)、モーメント3D(骨全体、構造体内部のモーメントの計算)、ネットシャフト角(大腿骨の曲率とネックシャフト角の計算)、スライスジオメトリ(面積とセクションモジュールの二次モーメントのようなクロスセクションパラメータの解析)が用意されています。
さらに粒子解析として、三次元2値化画像スタックの中から粒子を検出し、計測することが可能です。


BoneJの実践


BoneJ を用いたいくつかのImageJによる実践画像処理について解説します。(ここでご紹介するのは、ほんの一部です。)

ImageJのサンプル画像(bat cochlea volume.tif)のスタック画像を読み込んで、BoneJのthicknessプラグインを実施した例を示します。





このカラーは、3D Local Thickness機能によって厚みのカラーマップを表しており、その数値としては平均厚み、平均スペース距離が計算されています

次は、同じ画像でボリュームフラクションを計算した例で、この三次元画像の密度が計算されています。



次は、2値化されたセルコロニーの画像を使って最適閾値処理を施してフラクタル解析
結果を表示した例です。



その他、Fly Brain画像を最適な2値化処理を行って異方性を計算し、三次元可視化表示することなども可能です。

ひとを対象した解析には、実際にはμCTで撮影した骨梁のDICOM画像や切除乳房の病巣部のμCTでの構造解析などいろいろな画像で定量評価が試みられています。

今回は、ImageJを用いたBoneJによる解析方法について説明を行いました。
梁の解析やそのほか何らかの緻密な内線構造物の評価などで画像処理手順が決まれば、BoneJで使用する機能をマクロでピックアップして自動処理すれば、画像処理・解析作業は非常に効率が良くなると思われます。


参考記事:「山本修司:ImageJで学ぶ実践医用・バイオ画像処理.INNERVISION(27・4) 2012, p78-79」

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

第69回 ImageJを用いたDNAマイクロアレイの画像解析で学ぶ!

この記事は参考記事を援用して、筆者の考えも交えつつ、記述しています。

ImageJでは、特定のDNAの検出のために行われるDNAマイクロアレイの画像解析が可能です。いくつかのWebサイトでは、さまざまなパターンのDNAチップの解析プラグインなどが紹介されています。今回はDNAマイクロアレイの画像解析の基本的な説明と、ImageJによる実践例をご紹介します。


DNAマイクロアレイとは


DNAは生物の遺伝情報を担う高分子生体物質です。DNAはデオキシリボ核酸の略で、デオキシリボース(五炭糖)と燐酸、塩基から構成される核酸です。核酸は、塩基と酸、リン酸からなりますが、スクレオチド結合で連なった生体高分子です。糖の違い(2位が水素基(DNA)か水酸基(RNA)であるか)によって、2-デオキシリボースを持つデオキシリボ核酸(DNA)とリボースを持つリボ核酸(RNA)とがあります。
塩基には、アデニン、グアニン、チミン、シトシンの4種類があり、それぞれA、G、T、Cと略します。

このDNAについて特定のDNAを抽出し解析する方法のひとつがDNAマイクロアレイ解析と呼ばれています。DNAマイクロアレイ(もしくはDNAチップ)とは、細胞内の遺伝子発現量を測定するために、多数のDNA断片をスライドガラスなどの基板上に高密度に配置したものです。

あらかじめ、塩基配列が既知である1本鎖のDNAを多種、基板上に配置しておき、これに検体を反応させれば、検体のDNA配列と相補的な塩基配列の部分にのみ、検体のDNA鎖が結合します。これを解析することによって、目的の細胞・組織でどの遺伝子が働いていたのかを調べることができます。また、アレイ上での結合位置を蛍光や電流によって検出し、最初の配置から検体に含まれるDNA配列を知ることができます。検体の塩基配列が予測できる場合には、効率的にその配列が特定できます。

次の図は、Gilles Carpentier氏が公開しているウェブサイトのDNA(プロテイン)マイクロアレイ表示例です。





The Protein Array Analyzer
Computer Image Analysis & Biochemistry Practice Works
http://image.bio.methods.free.fr/ImageJ/?Protein-Array-Analyzer-for-ImageJ.html&lang=en



ImageJによるDNAマイクロアレイの画像解析


ImageJでは、画像化されたDNAマイクロアレイの解析プラグインがいくつかのWebサイトで紹介されています。
シンプルな解析プラグインとしては、Bob Dougherty and Wayne Rasband氏作成によるMicroArray Profileプラグインがあります。

http://www.optinav.com/MicroArray_Profile.htm

次に、ImageJのサンプル画像"Dot_Blot.jpg"画像をロードし、MicroArray_Profileを実行した例を示します。



デフォルトでは、6行8列の円形ROIが画像のサイズに合わせて表示されるため、これをプラグインメニューの<Reset Grid>ボタンを押して、4行7列に変更してROIを表示しています。

それぞれのROIは、ImageJで操作できますので、位置を微調整可能です。微調整した場合は、<Save Grid>で記録しておけば、次回も同じ位置にROI設定できます(<Read ROI>を利用)。

ROIの計測データは、Analyze>Mesureで結果を参照できます。Mesureの項目は、Analyze>Set Mesurements...で設定可能です。

次の図は、ROIを再配置して、プラグインメニューの<Histgrams>ボタンを押して、各ROIの配列座標ごとに統計値を表示した例です。


マクロを用いたDNAマイクロアレイの画像解析


ImageJのマクロを用いたDNAマイクロアレイの画像解析でユニークなマクロ(こちら)が、上記のGilles Carpentier Research Web Siteで紹介されています。

ここからダウンロードできるマクロ("Dot Blot Analyzer.txt")を、ImageJフォルダ下のmacrosフォルダに置いてImageJを起動し、<Plugin>Macros>Install...から選択すれば、インストールできます。
インストールすると、ImageJメニューバーにアイコンが現れます。


(マクロインストール後)

その中の<Dot Blot>の絵が描かれたアイコンをクリックして、Analysis a Dot Blotを選択すると、自動的にROI設定のユーザーインターフェースがついたアプリケーションが起動します。サンプル画像もロードできます。


サンプル画像

新しく出現するインターフェース

その後は、マニュアルを参照しながら、ROIを設置(Add)し、計測が実行できます。
先述のプラグインのように、設定ROIを保存することや、そのロード、計測結果の出力などが可能です。

今回はImageJを用いたDNAマイクロアレイの解析方法について説明を行いました。これは、DNAの解析だけではなく、複数の画像像上に複数のROIを設置して自動で一挙に統計解析するプラグインやマクロとしても使いやすいので機会があれば、いろいろな画像で試してみてはいかがでしょうか。


参考記事:「山本修司:ImageJで学ぶ実践医用・バイオ画像処理.INNERVISION(26・11) 2011, p104-105」

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

第67回ImageJによるOpenCVの利用で学ぶ!

この記事は参考記事を援用して、筆者の考えも交えつつ、記述しています。


OpenCV(Open Source Computer Vision Libraryはその名のとおり、オープンソースのコンピュータビジョン用ライブラリです。もともとはインテル社によって開発されました。その後、ハードウェア/ソフトウェアの開発を行っているWillow Garageに開発が引き継がれ、現在はコンピュータービジョンの技術開発を手掛けるItseezによって開発が進められています。


今回はImageJでOpenCVを利用する方法をご紹介します。


OpenCVとは


OpenCVは、汎用の画像処理ライブラリで、同じような画像処理ライブラリは世の中に数多く存在しています。
プログラミングの初心者であってもC言語の基本的な知識で簡単に仕上げることができ、特に、コンピュータビジョンに応用する上では非常に使いやすいとされているのが特徴です。OpenCV関連の書籍も多く出版されているので、調べる資料も豊富です。

2015年12月現在の最新バージョンは3.1で、こちらに詳細が紹介されています。
http://www.buildinsider.net/small/opencv/001

コンピュータビジョンはコンピュータに視覚を仕掛けるといったニュアンスとして解釈でき、Webカメラをコントロールしてリアルタイムの動画像処理を行うなど、ユニークな処理が可能です。

コンピュータビジョンは特にゲームなどのエンターテインメントや仮想空間での自動車、飛行機のフライトシミュレーション、衝突シミュレーションなどでその技術が使われています。

ImageJにOpenCVをプラグインとして組み込むことによって、豊富なOpnCVの画像処理、コンピュータビジョンの機能を医用画像に応用できます。


OpenCVの主な画像処理機能について


プログラミングの詳細なテクニックは、別紙に譲り、OpenCVでは、"imgproc"にインクルードされている画像処理機能として、以下のようなものがあります。

  • ヒストグラム操作
  • 画像フィルタリング
  • 幾何学的変換処理(線形レジストレーションなど)
  • 画像変換処理(距離変換や濃淡操作)
  • 構造解析と形状記述子(ROI関連操作や輪郭抽出)
  • 平面再分割処理
  • モーション解析と物体追跡(OpenCVの強み)
  • 特徴検出
  • 物体検出
  • 画像のクラスタリングと多次元空間の検索
  • オブジェクト認識
  • ビデオ解析
  • カメラキャリブレーション、姿勢推定、パノラマ合成(Stitching)
  • 機械学習機能

(http://www.buildinsider.net/small/opencv/001)

OpenCVのダウンロードサイトはこちらです。



OpenCVの実装


ImageJでOpenCVを使用するためのプラグインのサンプルが次のサイトで紹介されています。

https://sites.google.com/site/qingzongtseng/template-matching-ij-plugin


インストール方法は簡単で、上記サイトから以下のすべてのjarファイルをダウンロードしてプラグインフォルダにコピーして利用できます。

  • Template_Matching.jar
  • javacv.jar
  • javacpp.jar
  • opencv.jar

このプラグインを参考に、テンプレートマッチングを試した結果は、こちらの回をご参照ください。




今回は画像処理ライブラリの中でも定評の高いOpenCVをImagerJで利用する方法を示しました。このコラボレーションでもっと高度な医用画像を対象としたコンピュータビジョンが実現できそうですね。

次回は、バイオ系画像処理のためのImageJ利用法を紹介します。


参考記事:「山本修司:ImageJで学ぶ実践医用・バイオ画像処理.INNERVISION(26・7) 2011, p106-107」

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

第65回ImageJによる医用画像処理の標準的保管表示方法で学ぶ!

この記事は参考記事を援用して、筆者の考えも交えつつ、記述しています。

今回は、ImageJとDICOMビューワを同時に使う方法をご紹介します。

DICOM(ダイコム)というのは、医用画像を電子的に取り扱うための包括的な規格で、データの定義や通信の方法などを規定しています。医用画像はこのDICOMに則って、インターネットや専用のLANを通してパソコン端末や画像保管サーバに転送、保存できるようになっています。


はじめに


ImageJは画像解析ソフトウェアなので、そのままDICOMファイルを開いて、処理してというのはできるのですが、実際の臨床の場では、より画像参照を効率的に行うためのDICOMビューワというものが利用されています。
ImageJとDICOMビューワとの大きな違いは、臨床現場で効率的に使うように設計されているかどうかです。ImageJを起動して、まずは数百枚ある画像をスタックにしてから〜という煩雑な操作は時間の限られた環境ではできません。このようなワークフローを事前に研究して、自動化し、DICOM画像を効率的に参照できるようにしたものがDICOMビューワです。

このようなDICOMビューワには、ImageJを元に作成されたものがあり、今回は、このようなビューワとImageJとを同時に使う(DICOMビューワで表示した画像をImageJで表示してみたり)方法についてご紹介いたします。

まず初めに、画像の入力方法から考えていきたいのですが、医用画像をImageJに入力する方法は、一般的にみて、大きく二つあります。

1つは、DICOM通信機能を使って、インターネットやLANを通して電子データを通信させる方法です。この通信では、ImageJが画像データを受けとるだけでなく、ImageJから特定の相手(DICOMクライアント)に送信することもできます。

もう1つは、トラディショナルな手法で、CDやDVDなどの外部メディアを用いて、医用画像(DICOM画像)を読み込む方法が挙げられます。

このような挙動を実現する例として、本ブログの第29回(こちら)で紹介した"Tudor DICOM Tools"というImageJのプラグインが有名です。(通信設定方法は、第29回 連続画像処理 ImageJオープンソースネットワーク環境を用いた複数画像処理で学ぶ!をご参照ください。)

実は、このプラグインの機能を盛り込んだDICOMビューワも同サイトから公開されています。それが、DICOM_Viewerです。今回は、このビューワをTudor DICOM Viewerと表記します。


Tudor DICOM Viewerによる医用画像表示と画像の確認


まずは、Tudor DICOMビューワをインストールします。
内容はこのようになっています。


(Tudor DICOM Viewerの内容)
※DICOMSTOREは通信設定時に作成されます。
※Run-Dicom_Viewer.appは、筆者が作り直した起動ファイルです。

早速、このビューワを使って画像を表示してみましょう。
まずは、トラディショナルな方法からいきます。特定のフォルダに保存されたDICOM画像を表示します。まず、起動してみます。お使いのOSに合わせて起動ファイルをダブルクリックします。
(Macの場合、10.6以降のMacOS搭載PCでは、Tudor DICOM Viewer実行ファイルがPowerPCバージョンになっているため、そのままでは.appをダブルクリックして起動できません。.shファイルに書かれているスクリプトを使って、ターミナルから起動してください。面倒な方は、Automaterで.appファイルを作るといいかもしれません。)


筆者作のAppファイルはこちらから(クリック)どうぞ。

このAppファイルは、上記の内容にしめすように、Tudor DICOMビューワフォルダに入れてから、ダブルクリックでビューワが起動するようになっています。(スクリプト内容が心配な方は、一度Automatorで開いて内容を確認してください。)

(起動画面)

起動画面の左上のファイルマークボタンから、DICOMファイル選択ダイアログを表示して、表示したいDICOMファイルが保存されているフォルダあるいは、DICOMデータそのものを選択します。


DICOMファイル選択ダイアログ

(画像を表示:DICOM-CDから開く場合も同様の操作方法で画像を表示)

画像を参照するもう一つの方法は、「別のDICOMサーバに保存されている」あるいは、「別のビューワやワークステーションに保存されている」画像を、一旦このビューワにロードしてから、表示する方法です。
こちらの方法は、一見簡単に見えますが、意外に高度なテクニックです。いろいろな方法がありますが、今回は、DICOMサーバとの連携例を示します。

まず、DICOMサーバを別に用意しておきます。
このDICOMサーバには、Tudor DICOMビューワのAEを事前に設定しておきます。
この操作は、第29回を参照してください。

ここまで出来たら、次はビューワ側の設定確認を行います。
ビューワ起動画面の右上にレンチのマークがありますが、これが通信設定ダイアログを起動するボタンです。早速起動してみます。
すると、DICOMPACS設定パネルに切り替えることができるので、切り替えてみます。


(DICOM/PACS設定画面)

この画面から、DICOMサーバを設定できます。
(筆者はこの画面のように、DCM4CHEEというDICOMサーバに接続してみました。)

この設定までうまくできれば、次は通信です。
DICOMファイル選択ダイアログを再度表示して、虫眼鏡マークのPACSクエリパネルを表示します。
虫眼鏡マークのPACSクエリパネル

筆者のDICOMサーバには数例しかサンプルが格納されていないので、全症例分のデータを、このダイアログの右上検索ボタンからリストしてみます。
もし、事前に患者名などがわかっている場合には、ドロップダウンから検索情報を指定して検索することもできます。

(DICOMサーバ内のデータをリスト)

このリストから、任意のデータを選択して、"Retrieve to Local"で、Tudor DICOMビューワ内のDICOMSTOREフォルダに画像がコピーされます。


コピーされたら、Tudor DICOMビューワのデータリストを更新して、ビューワに表示してみましょう。データリストを更新するには、DICOMファイル選択ダイアログの右下矢印マークのDICOMSTOREパネルを表示して、更新ボタンを押します。
(更新前)

(更新後:GAIAというデータが増えた)

あとは、このリストからデータを選択して、シリーズ単位で一気に表示したい場合はOpen Series、一枚だけを表示したい場合はOpen Imageを使って、ビューワに画像を表示します。
(任意のデータを選択してopen imageした結果)

この例では、Tudor DICOMビューワ(DICOM STORE)にDICOMサーバから画像をクエリ&リトリーブする例を示しましたが、逆に、ビューワからサーバに画像を送る(send to PACS)することもできます。

このように、データがサーバに整理されていると、データの選択も迅速に行えて、さらに、ビューワの機能を使って画像を参照することができます。

その他の機能


また、もう1つ重要なポイントとして、このツールには患者や被験者の個人情報を匿名化する機能があります。
医学研究に患者さんの同意を得て画像を利用する以上は、患者さんの個人を特定しうる情報をまったく関係ない文字列や記号に置き換えたり、なんらかの暗号化を行うことで、匿名化をします。たとえば、氏名や患者ID、施設名などです。
このような機能もしっかりこのツールには備わっています。

(匿名化ツール)

ImageJでこのような匿名化の確認を行う際は、DICOM画像を表示してから、メニューのImage>Show Info...でDICOMヘッダー情報というメタデータを確認することができます。
この操作では、この画像に関する背景情報が豊富に記録されているので、用途に応じて確認してみてください。

メタデータを確認するもうひとつの方法は、Tudor DICOMビューワのCompare DICOM header(またはimages)を起動して、元になるDICOMヘッダーと比較対象のDICOMヘッダーを比較して、その差異を強調表示して確認することも可能です。


Compare DICOM images
※画像の差分表示:中央とheaderデータの差異を強調表示

もう一つ、粋な機能として、このビューワは、起動ウィンドウ左下のImageJアイコンを押すと、Tudor DICOM Viewerに内蔵されているImageJが起動でき、このImageJにビューワ側でアクティブになっている画像をアウトプットできます。


(ビューワ内蔵ImageJを起動)

また、実行ファイルと共にセットになっているフォルダにpluginsフォルダがあり、ここにImageJプラグインを追加していくことができます。

最後に、、
操作してみて思ったのですが、途中でフリーズすることもあるので、強制終了なども必要なことがあります。このような制限があることをあらかじめご承知おきくださいね。

また、お気づきになった方もいらっしゃるとは思いますが、実は、Tudor DICOMビューアはWebビューワとしても使えるので、このあたりはまた追い追いご紹介いたします。

以上、今回はImageJをDICOMビューワとして使う方法を紹介しました。 次回も医用画像処理について解説を行います!

参考記事:「山本修司:ImageJで学ぶ実践医用・バイオ画像処理.INNERVISION(26・4) 2011, p82-83」

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

2015年12月20日日曜日

第66回 ImageJによるグラフの解析で学ぶ!

この記事は参考記事を援用して、筆者の考えも交えつつ、記述しています。


ImageJを使って画像解析するにあたり、解析結果を可視化するグラフ機能は重宝します。このグラフ機能一つとっても、ImageJは様々な解析をサポートする機能が充実しています。

今回はグラフの解析に便利な手法と解析方法を紹介します。

ダイレクトにグラフに数値と座標を与える方法


ImageJで画像をロードして、画像上の直線もしくは曲線上のプロファイルカーブを表示する作業はよく使うのではないでしょうか。このような解析結果は、その数値情報などが含まれているので、何も悩むことなく、グラフとして使えます。


サンプル画像:ツリーリング(四角形ROIを設置)

ROIのプロットプロファイル結果

しかし、手元に「グラフの絵だけある状態」だとどうでしょうか。なんとかこのグラフから形跡結果を導き出したいと思ったことがある方もいらっしゃるかもしれません。

このようなニーズに応えるべく、今回は、あらかじめ教科書や雑誌などに掲載されているグラフをスキャナなどで取り込んで画像化したものに数値と座標を与える作業から始めてみます。

まず、サンプルとして、ImageJにて“Line Graph”(File>Open sample)をロードします。

(File>Open Samples>Line Graph)

この画像は、グラフデータではありますが、グラフが描画されている“画像”ですので、グラフの正確な数値情報は保持していません。よって、そのような情報をグラフに与えるために、ImageJには“Analyze Line Graph”という機能が備わっています。

この画像の場合、複数のグラフが描画されていますので、まず、画像の中から特定のグラフの抽出作業を行います。
以下に手順を示します。

① 画像を8ビットグレイスケールに変換〈Image/Type/8 bit〉
② グラフを二値化〈Image/Adjust/Threshold...〉
③ ImageJ アイコンメニューのポリゴンツールや同じ明るさまたは近い明るさの部分の輪郭に囲まれた選択範囲を作成するWand Tool(魔法の杖のアイコン)で特定のグラフを選択し,〈Edit/Clear Outside〉で余計な画像を消す
④ 細かい不要な部分は、Free Hand Selectionアイコンなどを用いて、〈BackSpace〉ボタンを押しながら消す


(2値化)

(ポリゴンツールで選択後、Clear Outside)

グラフが重なっている部分や軸と連結して自動抽出されてしまった余分な画像には、どうしてもマニュアル作業が必要ですが、Wand Tool アイコンをダブルクリックして、領域選択の連結を、4近傍や8近傍の連結にしたり、耐用量をコントロールすることである程度は抽出できます。




次に、このままでは二値化された曲線の絵でしかないので、〈Analyze>Tools>Analyze Line Graph〉を選択し、座標と数値情報を付加します。


(グラフ化)

(More>Set Range to Fit All)

グラフのカーブフィッティング


グラフを表示できたら、グラフのフィッティングによってグラフの特性を解析することができます。ImageJ の〈Analyze/Tools/Curve Fitting〉を選択すると、カーブフィッティングツールが現れるので、グラフ化したデータからリストを出力し、カーブフィッティングツールからOpenして(1行目のX, Yは削除する)、任意のフィッティングメソッドを選択して、〈Fit〉ボタンを押すと、選択した数式に応じてフィッティングカーブが表示
されます。
(カーブフィッティングツール)


(事前に、グラフのデータウィンドウの下にある<リスト>からリストデータを保存しておく)

(保存しておいたリストデータ"Open"し、2nd Degree Polynomialでフィッティングした結果)

同時にログが表示されますが、そこに具体的な数式のパラメータが表示されます。使用できる数式は次のとおりです。

(IJ_1.46 user's guide, p149.:http://rsbweb.nih.gov/ij/docs/user-guide.pdf)

また、フィッティング後も、これらの近似された数値が改めてグラフからリスティングデータとして保存できます。解析をさらに進めて得られたフィッティングデータは、エクセルなどにコピー& ペーストして、グラフの再表示や統計値を計算することができます。

今回はImageJ を用いたグラフ表示とカーブフィッティング方法について述べました。
次回も画像解析に役に立つ、ImageJならではのテクニックを紹介します。

参考記事:「山本修司:ImageJで学ぶ実践医用・バイオ画像処理.INNERVISION(26・6) 2011, p76-77」

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

2015年12月14日月曜日

第64回 ImageJのプログラムエディタで学ぶ!

この記事は参考記事を援用して、筆者の考えも交えつつ、記述しています。

今回は、ImageJでプログラムを書く場合の便利なエディタの機能について紹介します!


ImageJのプログラムエディタについて


ImageJはオープンソースソフトウェアであるため、ImageJそのものをユーザの思い通りに改変して利用することができます(ライセンス条項に則って)。
このような改変を行うために統合開発環境(Integrated Development Environment:IDE)というソフトウェアを用いて本腰を入れて開発を行うこともできます。この方法については、第42回 ImageJのソースコード分解(Eclipseを用いたImageJのプラグイン実行方法)で学ぶ!を参照してください。

今回は、このようなIDEを用いず、プラグインやマクロを作成する場合に使うImageJのエディタを、このエディタを強化すツールであるjEditをImageJビルトインする方法(「IJ_Ed advanced editor for ImageJ」)も含めて、紹介していきます。


ImageJのjEditエディタの実装


まず、jEditはマルチオペレーティングシステム対応のフリーのプログラムエディタです。主な特徴は以下のとおりです。
  • シンタックスハイライト
  • ソースコードのオートインデントやプログラム解析
  • 検索・置換
  • ファイルマネジメント(文字エンコード)
  • 機能のカスタマイズや拡張
ImageJでjEditを使うには、次のWebサイトからダウンロードして、ImageJのプラグインフォルダに解凍します。

・jEditダウンロード
http://www.jedit.org/index.php?page=download
IJ Ed2 ImageJプラグインダウンロード
http://imagejdocu.tudor.lu/doku.php?id=plugin:utilities:ij_ed:start

上記が完了したら、インストール完了です。


jEditを使ってマクロを起動させてみよう


まず、jEditを起動します。



次に、ImageJを起動して、ImageJのプラグインのリストから<plugins>Editor>IJ Ed2 jEdit link>を選択して起動してみましょう。ImageJを起動している場合は、そのままプラグインを起動しましょう。
起動画面です。
早速、簡単なマクロを動かしてみましょう。最初は、"Hello"ダイアログを表示してみます。jEditの新規テキストに、次のように書いてみます。

showMessage("Hello Re-ImageJ Readers!");

そして、プラグインのウィンドウ内の"Run macro"から実行してみましょう。
次のようにポップアップが表示されます。


もう一つ、同じ画面上で2つマクロを編集してみます。一つは上記のマクロで、もう一つマクロを増やします。
jEditの新規テキストボタンを押して、新規テキストを作成して、レイアウトを2パネルに変更します(jEditウィンドウの右上)。

新しいテキストには、次のようにサンプル画像を指定して表示するマクロを書いてみました。

run ("Blobs (25K)");

編集しているjEdit上のテキストをアクティブにしたまま、同じように、プラグインウィンドウの"Run macro"を押して、マクロを実行します。




上記操作は、開発者が動画でも公開しているので、チェックしてみて下さい。


(Introduced by:https://www.youtube.com/watch?v=sLvXBBGGsBs)


このような操作の他に、このプラグインでは、"Install macro"で編集しているマクロをImageJにインストールしたり、編集しているテキストファイルがjavaファイルの場合は、”Compile java”でクラスファイルにコンパイルしたりできます。

jEditのデフォルトのメニューからマクロのテキストファイルを読み込んで編集することもできます。もちろん、jEditは主にプログラム用のエディタなので、ゼロからプログラムを作成することもできます。

今回は、ImageJを用いたプログラム開発のためにjEditを用いる方法を紹介しました。ImageJ標準のエディタを使うよりも、jEditなどのプログラム開発専用のエディタを使うほうがプラグインやマクロを開発しやすいと思う人が多いはずです。
jEditは、開発環境として、IDEには敵わないと個人的には思いますが、ちょっとしたマクロを書きたいときには便利です。普段からImageJを自分でアレンジして使っている方々にとって有益な情報になれば幸いです。


参考記事:「山本修司:ImageJで学ぶ実践医用・バイオ画像処理.INNERVISION(26・2) 2011, p96-97」

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



2015年12月13日日曜日

第63回 ImageJによる領域抽出の応用ーFijiとレベルセット法で学ぶ!

この記事は参考記事を援用して、筆者の考えも交えつつ、記述しています。

ImageJでは、画像濃淡値の閾値による領域抽出が標準で用意されていますが、今回は、最先端かつ応用的なレベルセット法という領域抽出法を紹介します。画像の中の対象周辺の濃度勾配の計算を繰り返しながら正確に輪郭を抽出する手法です。


領域抽出手法について


ImageJで実行可能な領域抽出法については、これまでにいくつか基礎的な方法に限り説明を行ってきました。今回は、ImageJを生命科学の研究用に特化させた"Fiji"を使って、より応用的な輪郭抽出法の説明を行います。
Fijiについては、第51回ImageJの高次画像処理パッケージーFijiについてーで学ぶ!を参照してください。

Fijiで扱うことができる領域抽出法は多く揃っています。以下に、主な領域抽出法を紹介します。
  • 自動局所閾値処理
  • マルチ大津法
  • 最大エントロピー閾値法
  • 混合モデリング閾値法
  • Nuclei Watershed Separation法
  • SIOX:Simple Interactive Object Extraction
  • レベルセット法
それぞれの画像の領域抽出法には長所・短所があるため、目的に応じて使い分ける必要があり、この手法自体に優劣をつけて評価できるものではないことに留意してください。
2015年12月現在、Fijiのプラグインに設定されているSegmentationツールは次の通りです。
(各機能の詳細はFijiサイトで確認してください。)

レベルセット法による領域抽出法


レベルセット法は、オブジェクトの境界を抽出するために、濃淡の高低差のある位置を認識し、隣接するピクセル間の差分の評価を偏微分方程式(partial differential equations :PDE)をベースに解いていく手法です。

抽出領域が成長している間は、常に新しく追加されたピクセルに現在の選択範囲の差を計算し、事前に選択された濃淡値の差を越える場合、または、それが事前に選択された成長の特定レートを超えている場合は、成長が止まります。
しかし、このアルゴリズムは、オブジェクトの外側に領域が漏洩する可能性もあります。

輪郭がオブジェクトの境界に到達するまでのレベルは、ゴムバンドの強さとグレーレベルの違いを事前にレベルセット設定ダイアログから選択して調整できます。
この設定の中にあるスピーディーファーストマーチングは、処理データが大きい場合に、高速なレベルセットによる輪郭抽出として使用できます。例えば、画像が大きければ、スピーディーファーストマーチングでスタートして、レベルセット法でオブジェクトを定義し、輪郭抽出を使用することで、オブジェクト検出の効率化を図ることができます。


Fijiによるレベルセット法のアルゴリズムの詳細


レベルセット法の高速マーチングアルゴリズム(Flood fillに似ている処理方法)はオブジェクトの境界に向かってシード点から展開されていきます。アクティブな輪郭は、画像の複数の固有の幾何学的測定に準じて、特定時間内に初期輪郭を進化させます。

Fijiに実装されたプラグインで測定されるのは、エッジベースの制約、グレー値ペナルティ、あいまいなエッジにおけるオブジェクト境界漏れを防ぐ局率制約です。

Fijiのプラグインは偏微分方程式を用いた図に示す式に基づいています。


(補足)

  • Φ(i)=最新の抽出表面
  • W(a)=移流重量
  • F(a)=移流力
  • W(c)=曲率重量
  • F(c)=曲率力
  • ∇I*=ガウシアンぼかし画像間の差分



Fijiを用いたレベルセット法の実行例


レベルセット法はFijiのプラグインから選択できます。
まず、対象とする画像を表示して、ポイントアイコン(またはポリゴンや円形ROI)を選択し、領域抽出したシードポイントを決定します。次に、FijiメニューからPlugin>Segmentation>Level Setsを選択すると、図のようなダイアログが表れます。
一般的なものであれば、デフォルトの設定でうまく抽出できるようになっています。



シード点にポイントツールを利用している場合は、"Use Fast Marching"をチェックすると、高速に輪郭を探してくれます。また、ある程度マニュアルで任意ROIによって形状を作ってから"Use Level Sets"をチェックして実行すると、ROIをうまく対象画像の辺縁にマッチしてくれます。"Use Level Sets"はデフォルトでOnになっています。

上記設定で、そのままOKをすると、領域抽出が繰り返され、設定された閾値領域がすべて抽出されると、自動で計算が止まり、ROIと二値化画像を表示してくれます。


(抽出結果:濃淡値の閾値"50")

この例では、脳腫瘍が他の脈管や白質・灰白質などの正常組織とコントラストが淡く、デフォルト設定ではうまく抽出されませんでした。造影コントラストのある脈管系を除く脳全体が抽出されたことがわかります。

そのため、境界条件をもう少し厳しくして、再度、計算させてみると、次のように、画像内の脳腫瘍と同じ濃淡レベルの領域が複数抽出されました。


(濃淡値の閾値を"50"→"10"に設定)



(実行結果)

同じような目的で利用する領域抽出処理にSnake処理がありますが、利用する上で大きく違うポイントは、レベルセットでは、このように複数の関心領域を同時に分けて検出してくれるところです。

また、上記の例では、外側に膨張していく処理ですが、Region expand設定をInsideにすれば、内側に膨張させていくことも可能です。

このように、レベルセット法はImageJのデフォルトの領域ツールとは異なり、シードポイントを拡張しながら対象物の輪郭を抽出したり、同様に対象物の周辺から輪郭に向かって縮小していくような微分方程式を用いた優れた領域抽出法です。

今回は、画像の領域抽出処理の中でもレベルセット法による輪郭抽出について説明を行いました。本処理は、特に、腫瘍の面積を正確に計算したり、複雑な輪郭形状を抽出するのに便利な領域抽出法です。

次回もImageJによる画像処理の応用について説明を行います。


参考記事:「山本修司:ImageJで学ぶ実践医用・バイオ画像処理.INNERVISION(26・1) 2011, p86-87」

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