2015年9月21日月曜日

第22回 画像の2値化についてで学ぶ!

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

前回まで扱ってきた画像は、すべて8ビット〜32ビット階調などの複数の濃淡値を持っていました。今回は、画素値が0か1しかとらない2値画像化の手法(2値化処理)を説明します。

この2値化処理は、特に図形の形状抽出などを目的とする場合がほとんどで、変換後の画像は、幾何学的な諸概念が適用しやすく、理論や手法が多値画像処理よりも体系化されています。
lmageJにおいても2値画像処理ツールが多く用意されていますので、関連プラグインも多数紹介されています。

2値画像処理は、日常臨床で使用されるソフトウエアや三次元画像処理ワークステーションでも多くの場面で適用される処理です。
CT画像から、体脂肪測定、骨や肺の空気などの領域抽出(セグメンテーション)、形状の特徴量の解析(フラクタル次元の計測、フーリエ記述子、カオスなど)などがその例です。

わくわくを抑えつつ、まずは、2値化処理についての基本的な説明から始めます。


2値化の方法


例えば、256〜65535の濃度値を持った画像を、0か1などの2値に分ける作業を”2値化処理(閾値処理)”といいます。この作業のための境界値を閾値(threshold)と呼び、例えば、その値以上の画素値を1、それ未満の画素値を0へと変換することにより、2値化処理ができます。


(元画像)
二値化画像

(二値化設定:Image>Adjust>threshold)

このように、与えられた画像から閾値を決定するための最も単純な方法は、画像のヒストグラムで上限と下限の閾値を決める方法です。
この方法とは別に、もう少し再現性良くできる方法もあります。

例えば、こちらのような資料も参考になります。
http://mikilab.doshisha.ac.jp/dia/research/person/shuto/research/0605/two-level.html


p-タイル法


p-タイル法とは、パターン領域の面積比率(パターンデータ数/全データ数)を指定して閾値を決定する方法で、パターン領域の面積比率があらかじめ推定できなければなりません。
そのため、対象画像に対して事前の画素情報が必要です。医用画像処理では情報が未知の画像が多く、この方法の適用が困難な場合が多いです。図面や文書画像など、切り出すべき対象図形の面積が推定できる場合に有効な方法です。

(例えば、黄色枠領域内の割合が既知であるとすると、黄色枠の左の縦線の位置の濃淡値が閾値になります。)


モード法


モード法は対象図形と背景の濃度分布の濃度差が大きい場合にヒストグラムが双峰型の分布となることを利用し、その山の部分と谷の部分が明確なときに、その谷底を閾値に決定する方法です。この方法はノイズの多い画像や複雑な画像ではそのヒストグラムから谷底を見つけるのが困難であり、あらかじめノイズ軽減処理などの前処理を加えた後に使用される場合が多いようです。

(参考記事より引用)


判別分析法


判別分析法とは、濃度ヒストグラムから2つのクラスを分割するために、その閾値を判別分析する方法です。
2つのクラスの平均値の分散(クラス間分散)と、各クラスの分散(分離度もしくは判別比)が最大になるような閾値を決定します。計算式は割愛します。
ImageJでは、”Otsu Thresholding”として判別分析法を実装しています。


2値化処理による臨床応用例(CT画像からの脂肪面積測定)


簡単な臨床応用例として、ImageJによるCT画像を用いた体脂肪面積の測定の方法を紹介します。

1つのアプリケーションのように体脂肪測定をバッチ化(一連の処理や測定手順を1つの処理として記述すること)するには、ImageJのマクロやプラグインを書くことをお勧めします。

方法は非常に簡単で、図に示すように、臍部の断層CT像から、体の輪郭内部のみを抽出し、脂肪領域の面積を計算すればいいです。(輪郭抽出の際に用いる”領域抽出法”は次回以降で紹介予定ですが、ここでは、Spline Snakeプラグインや、Segmentation Assistantツールが便利です)

一通りやってみましょう。

まず、バックグラウンドを削除します。
(Spline Snakeで体表にROIを作成し、Edit機能でバックグラウンドを削除します。)

Polygon ROIなどを使用して、内臓脂肪および皮下脂肪の領域を分けます。


(ここでは、大雑把で恐縮ですが、フリーハンドのポリゴンでROIを設定しています。ROIの記録は"ROI Manager"を使います。)

(皮下脂肪領域を削除)

最後に、Threshold機能を使って、脂肪のみの画素値を表示します。




ピクセルカウント数から面積を算出します。
ピクセルカウントは、Analyze>Histogramでヒストグラムを表示して、グラフ上の特定のピクセル値のカウントをウィンドウ右下から確認します。
(25418ピクセルカウント)

計算方法はいろいろですが、例えば、1ピクセルあたりの面積を出して求めると、この場合は、ROI内のピクセル数52958で、その面積は50504mm2でしたので(measureでresultを確認)、1ピクセルあたりおよそ0.95mm2です。

これと25418を積算すると、24147mm2で、センチ換算すると、241.47cm2ですね。

(ImageJは、DICOM画像を解析する場合、自動でDICOMヘッダーからピクセルサイズを調整します。)

次回も引き続き2値画像処理について述べます!


Visionary Imaging Services, Inc.は、イメージング技術サポートを通じて、創薬研究や医療機器開発など、臨床研究(臨床試験)サポートサービスを展開しております。
お問い合わせはこちらまでお願いいたします。

参考記事:「山本修司:ImageJで学ぶ実践医用・バイオ画像処理.INNERVISION(21・10) 2006, p75-77

0 件のコメント:

コメントを投稿