前回まで扱ってきた画像は、すべて8ビット〜32ビット階調などの複数の濃淡値を持っていました。今回は、画素値が0か1しかとらない2値画像化の手法(2値化処理)を説明します。
2値画像処理は、日常臨床で使用されるソフトウエアや三次元画像処理ワークステーションなど、いろいろな場面で適用される処理です。
CT画像から、体脂肪測定、骨や肺の空気などの領域抽出(セグメンテーション)、形状の特徴量の解析(フラクタル次元の計測、フーリエ記述子、カオスなど)などがその例です。
2値化の方法
画像の濃淡を0か1などの2値に分ける作業を”2値化処理”といいます。この作業のための境界値を閾値(threshold)と呼び、例えば、その値以上の画素値を1、それ未満の画素値を0へと変換することにより、2値化処理ができます。
(元画像)
二値化画像
(二値化設定:Image>Adjust>threshold)
閾値を決定するための最も単純な方法は、画像のヒストグラムで上限と下限の閾値を決める方法です。
p-タイル法
p-タイル法とは、パターン領域の面積比率(パターンデータ数/全データ数)を指定して閾値を決定する方法で、パターン領域の面積比率があらかじめ推定できなければなりません。
そのため、対象画像に対して事前の画素情報が必要です。医用画像処理では情報が未知の画像が多く、この方法の適用が困難な場合が多いです。図面や文書画像など、切り出すべき対象図形の面積が推定できる場合に有効な方法です。
(この例では黄色枠の左端の縦線位置の濃淡値が閾値になります。)
モード法
モード法は対象図形と背景の濃度分布の濃度差が大きい場合にヒストグラムが双峰型の分布となることを利用し、その山の部分と谷の部分が明確なときに、その谷底を閾値に決定する方法です。この方法はノイズの多い画像や複雑な画像ではそのヒストグラムから谷底を見つけるのが困難であり、あらかじめノイズ軽減処理などの前処理を加えた後に使用される場合が多いようです。
(参考記事より引用)
判別分析法
判別分析法とは、濃度ヒストグラムから2つのクラスを分割するために、その閾値を判別分析する方法です。
2つのクラスの平均値の分散(クラス間分散)と、各クラスの分散(分離度もしくは判別比)が最大になるような閾値を決定します。
ImageJでは、”Otsu Thresholding”として判別分析法を実装しています。
2値化処理による臨床応用例(CT画像からの脂肪面積測定)
簡単な臨床応用例として、ImageJによるCT画像を用いた体脂肪面積の測定の方法を紹介します。
方法は非常に簡単で、図に示すように、臍部の断層CT像から、脂肪領域の面積を計算するだけです。(輪郭抽出の際に用いる”領域抽出法”は次回以降で紹介予定ですが、ここでは、Spline Snakeプラグインや、Segmentation Assistantツールが便利です)
一通りやってみます。
最初に、面積、体積の算出にはピクセルサイズを使いますから、ピクセルサイズをImage>Propertiesで確認しておきます。
(X:約0.97mm, Y:約0.97mm, Z:2.0mm)
(DICOM画像は自動的にピクセルキャリブレーションされます)
まず、余計な領域であるバックグラウンドを削除します。ROIを体表に設定します。
設定したら、Edit>Clear Outsideします。
(ポリゴンROIを設定)
(Edit>Clear Outside)
(ROIの記録は"ROI Manager"を使います。ROIを微調整したら、Updateを忘れずに。)
今回はROIを2つ設定しています。全体に閾値処理をしたいので、体表のROIを選択した状態でThresholdします。大雑把ですが、筋骨格と脂肪が分離できます。
(Thresholdを設定してApply)
脂肪と筋骨格がどのピクセル値に割り当てられたか確認しておきます。
(キャプチャなのでマウスカーソルが見えていませんが、脂肪(黒い領域)がピクセル値「0」(ImageJ上のvalue=0)であることがわかります。それ以外(白い領域)は筋骨格でピクセル値255です。体表の白い部分はノイズとして捉えて下さい。)
ここで、それぞれのROIから、0のピクセル数と255のピクセル数をカウントします。
カウントはAnalyze>Histogramで確認します。
ヒストグラムを表示する際は、ヒストグラムにしたいROIをアクティブにしてから実行します。
ヒストグラムが表示できたら、カラーバーのところで対応するピクセル値にマウスを持っていき、ヒストグラムウィンドウ右下のカウントを確認します。
例えば、体表のROIをアクティブにしてヒストグラムを確認してみると、ピクセル値0:45725、ピクセル値255:28027であることがわかります。
(ピクセル値0:45725)
(ピクセル値255:28027)
念の為、これらのカウントを合計して確かめておきます。
体表ROI内側のピクセル数はCount:73752です。そして、画像から45725+28027=73752であることがわかりますから、きっちり2値化できていることが確認できます。
同様に、筋骨格を囲ったROIでもカウントを確認します。総数は52487、ピクセル値0:26314、ピクセル値255:26173です(画像省略)。
最後に、ピクセルカウント数から面積、体積を算出します。
筋骨格
26173 * 0.97mm * 0.97mm = 約24626mm^2(平方ミリメートル)
26173 * 0.97mm * 0.97mm * 2.0mm = 約49252mm^3(立方ミリメートル)
内臓脂肪
26314 * 0.97mm * 0.97mm = 約24758mm^2(平方ミリメートル)
皮下脂肪
(45725-26314) * 0.97mm * 0.97mm = 約18263mm^2(平方ミリメートル)
(ImageJは、DICOM画像を解析する場合、自動でDICOMヘッダーからピクセルサイズを調整します。)
次回も引き続き2値画像処理について述べます!
Visionary Imaging Services, Inc.
- メディカルイメージングテクノロジーサポート
- 臨床研究、臨床試験サポート
- 医用画像処理解析ソフトウェア開発
- コンタクト:お問い合わせはこちらまで
References
- 参考記事:「山本修司:ImageJで学ぶ実践医用・バイオ画像処理.INNERVISION(21・10) 2006, p75-77」
0 件のコメント:
コメントを投稿