Re - ImageJで学ぶ!: 第15回 画像処理フィルタ入門(その4)で学ぶ!

2015年9月14日月曜日

第15回 画像処理フィルタ入門(その4)で学ぶ!

今回は、フィルタリングの中でも周波数フィルタリングについて説明していきます。
医療においてもよく使用される基本的なフィルタリング技法ですので、ImageJを使って実体験していきましょう!

周波数フィルタリング


「画像の周波数表現とは何か」「画像を周波数として表現することの利点は何か」など、本ブログアーティクルではImageJを使いながら紹介してきました。

周波数世界でのフィルタリング(周波数フィルタリングまたは空間周波数フィルタリング)は、第11回でその一連の処理過程について数学的な説明も含めて紹介しましたが、ウィナーフィルタを中心とした話でした。

本稿では、周波数フィルタリングの基本に戻り、特定の周波数成分を単純に遮断したり、通過したりするフィルタリングの説明を中心に、ImageJで実践しながら説明を行っていきます。

ローパスフィルタ


画像の周波数成分の低周波数成分だけを残し、高周波成分を除去するようなフィルタをローパスフィルタと称します。

一般的な周波数フィルタリングの定義からすると、周波数領域で表現した元画像をf(u,v)、周波数フィルタをH(u,v)、フィルタリングした出力画像をG(u,v)とすると、周波数フィルタリングの式は、次の式で表されます。


この定義通りに操作を行うには、空間周波数領域での低周波付近(中央部分)が1(つまり、真っ白)、高周波付近が0(真っ黒)であるような周波数フィルタを作れば、上述の式より、元画像とこのローパスフィルタを乗じることで、フィルタリングされた出力画像を得ます。

しかし、もっと簡単な方法として、元画像の画像中央部分である低周波領域だけを抽出して、逆フーリエ変換を行うことで、この出力画像を得ることができます。

では実際にこの低周波領域だけを残す方法を詳細に述べていきます。
まず、任意の画像を用意(今回は腰椎MRI画像)します。


この元画像をProcess>FFT>FFTでフーリエ変換します。


FFTで得られた空間周波数画像の中央に円形ROIを置きます。このとき、ImageJにカーソルの位置が表示されるので、真に中心に持って来たい場合は、注意しながら操作を行います。
ImageJに表示されている情報は、カーソルの位置がゼロ周波数からどれくらいの周波数分離れているのかを示す(mm/c)や、周波数平面の方向成分である角度情報およびその強度が表示されます。この(mm/c)は、例えばFOVが345mmで512×512マトリックスの場合、1ピクセルの大きさは、345/512=0.673mmで、1周期あたりの最小の長さがピクセル2つ分なので、約1.35mm/cycleと表示されるはずです。

次に、低周波成分を残すための円形のROIの外側を削除し、内側だけを残すには、ROIを作成した後に、Edit>Clear outsideで操作します。
そうすると、ROI以外の領域が白(濃度値255)に置き換わるので、これを反転します。
反転をするには、まず、ROI以外の領域を選択する必要があるので、Edit>Selection>Make inverseで、ROI以外の領域を選択してから、Edit>Invertで黒く(濃度値0)反転します。

これで、次の図のような空間周波数画像が得られます。



そして、この画像をProcess>FFT>Inverse FFTで変換しましょう。
次のようなローパスフィルタ処理のかかった画像が得られます。


(補足)
まれに、周波数座標系の画像を空間座標系の画像として表現したフィルタを利用する場合がありますが、こういった場合には、Process>FFT>Custom Filter>FFT filterでこのようなフィルタ画像を選択することで、元画像にフィルタリングできます。

ハイパスフィルタ


ローパスフィルタと逆の周波数成分濾過フィルタをハイパスフィルタと言います。
ハイパスフィルタの例を示します。

(ローパスフィルタ作成同様に、中央にROIをおき、Edit>Cut)

(上記画像を逆フーリエ変換)

ここで、ローパス、ハイパスを見比べると、ローパスフィルタの方がハイパスフィルタよりも画像の情報が多いことがわかります。
これは、画像を観察する場合の周波数成分のほとんどが低周波成分であることを意味しています。
この性質は巧く応用され、画像圧縮などに利用されています。

特定周波数領域フィルタ


これらのローパスフィルタやハイパスフィルタは、ある特定の領域の周波数だけを通すあるいは遮断するフィルタです。このような特定周波数領域を通すようなフィルタはバンドパスフィルタと呼ばれています。特定周波数なので、例えば、あるハイパスフィルタAとハイパスフィルタBを差し引いたドーナツ型の特定周波数領域をフィルタリングすることもできますね。
このような処理を可能にするImageJの機能に、Process>FFT>Bandpass Filterがあります。
このBandpass Filter機能は、低周波成分のLarge Structureと高周波成分のSmall Structureのピクセルサイズを決めて、ガウシアンフィルタを施して、それぞれをサブトラクションしてフィルタを作成し、元画像に適用します。縞用のアーチファクトを抑制するSuppress Stripes機能も使えます。
実際に、このバンドパスフィルタをデフォルト設定値で元画像に適用し、元画像のFFTとフィルタリング画像のFFTとの差分をとると、どのくらいの周波数情報が遮断されたのかがわかります。

(バンドパスフィルタで遮断された周波数)

次回は、少し内容を変えて、断層画像の投影再構成を説明します!

Reference
  • 山本修司:ImageJで学ぶ実践医用・バイオ画像処理.INNERVISION(21・2) 2006, p123-125



0 件のコメント:

コメントを投稿