7.2値画像処理

概要

2値画像とは白と黒の2つの値のみで表される画像である.2値画像処理は,画像中の対象の輪郭や領域などを決定するときによく用いられる処理である.

濃淡画像において,ある値を境にして白と黒の2つの画素値(2値)で表す処理を一般的にしきい値処理と言う.そして,境の値を「しきい値」と呼ぶ.また,しきい値処理とよく似た処理に域値処理というのがあるが,これは,ある濃淡値の範囲のみを表示する処理である.

演習7-1:しきい値処理を実践してみよう!

使用する画像

演習1-1で使用した胸部X線画像

*この画像は反転LUT(inverting LUT)で表示される(第1回 演習1-1を参照).しきい値は画素値で決まるため,暗く表示されている部分ほど画素値は大きい.

方法

1.ImageJを起動後,対象画像を開く.

2.しきい値を変更する.

*「Auto」を押すと,自動的に適当なしきい値が設定される.

3.2値画像を作成する.

図1

考察

・自動で設定されたしきい値と,自分で変更したしきい値の値を記録し,肺野や縦隔がどのように2値化されたかを,ヒストグラムと関連づけて説明しよう.

演習7-2:域値処理を実践してみよう!

使用する画像

演習1-1で使用した胸部X線画像

方法

1.ImageJを起動後,対象画像を開く.

2.しきい値を変更する.

*「Threshold」の「B&W」を「Red」に変更し,LUTウィンドウでしきい値を変更することができる.

3.域値を変更する.

LUTウィンドウで域値の上限,下限,範囲を変更することができる.

図2

考察

・肺野内部の領域のみを表示できた域値の範囲(下限・上限)を記録し,ヒストグラム上の肺野の画素値と関連づけて説明しよう.また,肺野以外の脂肪領域を表示する域値の範囲も探してみよう.

・しきい値処理と域値処理の違いを,自分の結果に基づいてまとめよう.

モルフォロジ処理

モルフォロジ処理は,「構造要素」と呼ばれる画像を移動させる要素と,「ミンコフスキー(Minkowski)和」と「ミンコフスキー差」と呼ばれる演算から成り立っている.

モルフォロジ処理における代表的な処理は,「Erosion(エロージョン)」と「Dilation(ダイレーション)」と呼ばれる処理であり,それぞれ孤立点の除去,不連続な点の接続と穴埋めのために利用される.

図1
図1 モルフォロジ処理の原理

図1はモルフォロジ処理の原理を示している.aは構造要素の一例である.これは,原画像のパターンを上下左右の4方向にずらしたパターンを作成することを意味する.bはある原画像パターンを構造要素aでずらしたパターン例である.

「Erosion」と「Dilation」は,これら4つのパターンのミンコフスキー差(論理積)とミンコフスキー和(論理和)を計算することで実現できる.つまり,ミンコフスキー差はすべての構造要素からつくられたパターンの共通領域のみを計算結果として出力し,ミンコフスキー和は存在領域をすべて計算結果として出力する.

cは「Erosion」の結果,dは「Dilation」の結果である.これらは,収縮,膨張のための処理として利用することができる.また,モルフォロジ処理には,「Opening」と「Closing」という処理がある.「Opening」は「Erosion」の後に「Dilation」,「Closing」は「Dilation」の後に「Erosion」を行う処理である.

図2
図2 ErosionとDilationの結果例

図2は9つのパターンに対して,ImageJで「Erosion」と「Dilation」を行った結果の一例である.

結果をよく観察すると「Erosion」と「Dilation」の結果が,図1で示したモルフォロジの原理通りに実行されていないことに気づく.これは,ImageJではモルフォロジ処理が忠実に行われず,ほぼ等価な条件判断で実現されているため,純粋なモルフォロジ処理とは異なる結果になるからである.ImageJでは,いわゆる画像における膨張,収縮処理と呼ばれるものになる.

「Erosion」は黒い画素の収縮処理に当たり,ある注目する黒い画素を中心としてその8近傍を見たとき,その8近傍に白い画素が一定数以上存在する場合のみ注目する黒い画素を削除することで実現する.「Dilation」は,黒い画素の周辺のある白い画素を中心としてその8近傍を見たとき,その8近傍に黒い画素が一定数以上存在する場合のみ注目する白い画素を黒い画素に置き換えることで実現する.

なお,ImageJでは,「Erosion」は「Erode」,「Dilation」は「Dilate」と表示されている.

演習7-3:2値画像でのモルフォロジ処理を実践してみよう!

使用する画像

図2で示した画素パターン(2値画像,tiff形式)

方法

1.ImageJを起動後,対象画像を開く.

*原画像を大きく表示したい場合は,拡大ツールを使用する.

2.収縮処理と膨張処理を実行する.

*「Options」の「Iterations (1-100)」で手順2の処理を反復することができる.

*「Options」の「Count (1-8)」でカウントする近傍の画素数を設定することができる.

*「Options」の「Black background」のチェックは外しておく(第2回 演習2-2を参照).

演習7-3

考察

・「Count」の値を変えて,図2のb,cと同じ結果が得られる設定を探そう.また,Countの値によって結果がどう変わったかを,ImageJの収縮・膨張の条件(8近傍の白い画素・黒い画素の数)と関連づけて説明しよう.

・同じ処理を何回も繰り返す(同じ条件で膨張または収縮処理を複数回繰り返す,など)と,結果がどのように変化するか確かめてみよう.

・図1の構造要素を使って純粋なモルフォロジ処理を行ったときのパターンを作画し,この演習での結果と比較してみよう.

演習7-4:モルフォロジ処理を使って目的とするパターンを作ってみよう!

使用する画像

下に示す初期パターン(2値画像,tiff形式)

初期パターン
初期パターン
目的パターン
目的パターン

方法

1.ImageJを起動後,対象画像を開く.

*原画像を大きく表示したい場合は,拡大ツールを使用する.

2.収縮処理と膨張処理を実行する.

*「Options」の「Iterations (1-100)」で手順2の処理を反復することができる.

*「Options」の「Count (1-8)」でカウントする近傍の画素数を設定することができる.

*「Options」の「Black background」のチェックは外しておく(第2回 演習2-2を参照).

考察

なぜその手順でうまくいったのか整理しながら,目的パターンにいたるまでの手順をまとめてみよう.