今回は、lmageJを用いた画像のパターンの検出法としてのテンプレートマッチングについて解説します。
医用画像への適応では、放射線治療計画や異なるシリーズ間の画像位置合わせ、DSAや胸部X線画像の時系列サブトラクションなどのマスクとライブ画像の精度評価などに使用されることがあります。
lmageJを用いたテンプレートマッチングは、ロチェスター大学のウォルター・オデル博士(Walter O’Dell Ph.D.)や以前もご紹介したことのあるQingzong博士のプラグイン(https://sites.google.com/site/qingzongtseng/template-matching-ij-plugin)が公開されています。
テンプレートマッチングとは
2つの画像が同じかどうかを判断するために、画像を重ね合わせて違いを調べる様な画像処理を、一般的にマッチングと称します。
また、画像の視覚的特徴や画素値そのものをパターンと言い、そのパターンの存在や位置を検出することをパターンマッチングと言います。標準のパターンをあらかじめテンプレートとして用意しておき、テンプレートと入力画像とのマッチングを行うことをテンプレートマッチングと言います。
テンプレートマッチングにおける定量評価指標
2つの画像間の整合性を定量的に評価する指標として代表的なものが、類似度または相違度と呼ばれ、SSD(sum of square difference:差の2乗和)やSA (sum of absolute difference:差の絶対値和)などがあります。計算式は以下のとおりです。
(参考記事より引用)
ここでテンプレートの大きさをM×N、位置(i,j)における画素値をT(i,j)、テンプレートと重ね合わせた対象画像の画素値をI(i, j)とします。これらの値が0に近いほど、2つの画像の類似性が高いと言えます。
テンプレートは、対象画像上をラスタースキャンしながら移動するため、SSDやSADの値は鳥轍図などで示すとよりマッチング精度が高くなり、位置を同定しやすくなります。また、類似度として相互相関値であるNCC(normalized cross correlation)が利用される場合がありますが、これは2画像間のベクトルのなす余弦(cos)と同等であり、次式によっ て表されます。
(参考記事より引用)
ここで、IとTの領域内の画素平均値を求め、2画像間の相互相関係数によって類似度を判断することもあります。
(参考記事より引用)
相互相関係数は式(4)、(5)を用いて、次式で表されます。
(参考記事より引用)
この値は、テンプレートと対象画像が完全に一致している場合に「1」となります。
ImageJによるテンプレートマッチング処理
最初に説明しましたが、
ウォルター・オデル博士によって、テンプレートマッチングのためのプラグインが紹介されています(http://rsb.info.nih.gov/ij/plugins/template-matching.html)。
このプラグインは、あらかじめ画像や形状図形などのテンプレートを作成し、次に、対象となる画像に関してテンプレートと一致する位置を探索することが可能です。
このプラグインで用いている類似度は、上述の正規化された相互相関係数 (NCCC:normalized cross-correlation coefficient)を計算します。
よって、テンプレートと対象画像の完全な一致は+1であり、濃淡値だけが2画像間でまったく逆の場合は-1となり、完全に無関係なテンプレートであれば0となります。
次の図は、ImageJのWebサイトからダウンロードした当該プラグインを実行したときのGUI表示例です。Create Circular Templateボタンは、対象画像が細胞のような丸い画像の場合に円形テンプレートを作成し、サイズを変化させてマッチングし、同じ大きさの円形対象を自動的に選んでくれます。
テンプレート処理手順は、まず、テンプレートにしたい画像(例えば、あらかじめ解析対象画像の一部の関心領域をDuplicateして保存しておくなど)を作成しておき、対象となる画像を読み込み、本プラグインを起動します。
それから、プラグインGUI上のLoad Template from Fileボタンを押して、あらかじめ作成しておいたテンプレートを読み込み、表示します。
Perform Statistical Correlation を押すと、表示されている2画像間のNCCCの計算が行われ、その後、相関画像が表示されます。
この相関画像の各ピクセルに割り当てられた濃淡値は、そのピクセル位置に関して中心にあるテンプレートイメージで計算されたNCCC値を示しています。
set threshold&get particle analyzer results ボタンを押すと、粒子や細胞カウンターなどの粒子アナライザの結果を表示します。
Doneで実行すると、Resultテーブルに相関係数の高いものからアノテーションのリストが表示されるはずです。
しかし、今回は、Qingzong博士のプラグインも試していきます!
Qingzong博士のプラグインはOpenCVのJavaのラッパーを利用できます。そして、テンプレートマッチングに計算する相関係数も豊富です。
まずインストールは、サイトの指示に従って、以下のjarファイルをダウンロードして、全部pluginsフォルダに入れます。
- Template_Matching.jar
- javacpp.jar
- javacv.jar
- opencv.jar
- opencv-macosx-x86_64.jar(ユーザの利用環境に合わせる)
あとは、またテンプレート用画像を用意しておきます。
例えば、
(差し替え中)
(テンプレート画像)
(差し替え中)
(マッチングする画像を読み込んでおきます。)
Pluginsから、Tempalte_Matching>cvMatch_Template...を起動します。
(起動画面)
(相関係数を選択します)
そのまま実行してみましょう。
(差し替え中)
(実行結果)
※ここで、空かさずAnalyze>Tools>ROI managerでAddしておいてください。
(差し替え中)
(相関係数に濃淡値を置き換えた画像:自動で作成される)
この相関係数画像に、保存したアノテーションを当てて、Measureしてみます。
(1が計算されたもの、2と3は、ランダムに画像内に配置した四角ROIをMeasureした結果)
この結果から、最初に計算した領域で、相関係数が1になる領域があったことがわかります。その他の領域では、Maxがこれに及んでいないことがわかります。
今回のテンプレートとテスト画像では、相関係数を別のものに変えても、すべてきれいにマッチングされました。ただ、これがもう少し画質に差があるもので試すと、おそらく、デフォルト設定になっている、NCC係数でのマッチングが一番再現性が高いと思われます。(経験則です。)
より詳しいチュートリアルは、こちら。(https://sites.google.com/site/qingzongtseng/template-matching-ij-plugin/tuto1)
mTSSなど、シビアな関節の寛解評価に、このような係数がイメージングバイオマーカーとして利用できそうなので、今、開発しています。
今回は、パターンの検出手法であるテンプレートマッチングについて説明を行いました。
次回も引き続き画像処理や解析法を紹介します!
Reference
- 「山本修司:ImageJで学ぶ実践医用・バイオ画像処理.INNERVISION(21・9) 2007, p114-115」
0 件のコメント:
コメントを投稿