画像処理
1次微分フィルタ Prewitt(プレヴィット)フィルタ - 画像のエッジ検出
画像処理の1次微分フィルタとは
メディアンフィルタやガウシアンフィルタ
の記事ではノイズ軽減を目的に使われるフィルタ処理をご紹介しました。
フィルタ処理はノイズ除去以外にも非常に良く使われる処理で、代表的なものに画像のエッジ抽出を行うための
1次微分フィルタがあります。グラディエント(勾配)フィルターとも呼ばれます。
エッジという言葉をそのまま考えると「縁(ふち)や端(はし)」ですが、
画像解析ではエッジは「画像に移っている観察対象の輪郭」というのが一般的です。
画像の隣接している画素の輝度差(勾配)が大きいほど、画像のエッジだと考えることができるのでイメージとしては、
明るさが大きく変化している部分にだけ反応して強調するような処理になります。
最も単純な1次微分フィルタのカーネル(3x3)以下のような形になります。
カーネルから分かるように中央の注目画素と隣接している画素以外の画素は無視し、両方の差を求めるようなフィルターとなります。
ノイズ除去のフィルタの時には出てこなかった方向という言葉が出来てきました。微分フィルタはXとYそれぞれ別にフィルタ処理を行いそれをそのまま使ったり両方向を合成して利用したりします。
Prewitt(プレヴィット)フィルタ
実際に方向を変えるとどんな効果となるのか実際の例を見てみましょう。
先ほどのカーネルではノイズの影響が非常に強く出てしまうので、平滑化処理を加えた形の次のようなカーネルを利用します。
この周辺の輝度値を差から処理を行うフィルタはPrewitt(プレヴィット)フィルタといい、画像解析で利用される代表的な1次微分フィルタです。
横方向の処理をしたものは画像内の縦のエッジが、縦方向の処理をしたものは横のエッジだけが強調された画像になりました。
フィルタの向きと同じ方向エッジは計算上ほとんど"0"となってしまうためこうなり、輝度差にだけ反応するフィルタなので、差が少ない部分は黒くなり、エッジの部分だけが浮き上がるような画像になります。
このように特定の方向のエッジだけを処理するようなことができるのも微分フィルタの特徴です。
エッジの方向を限定せずに輪郭を抽出するには、両方向について別々にエッジ抽出を行なって両方の結果を合成します。
合成した例がこちらになります。
合成の際にそれぞれの方向の重みをかえたり、することで様々な効果を得ることもできます。実際にプログラミングをされる方は色々試してみると面白いかも知れませんね。
Prewittフィルタと同じく代表的な1次微分フィルタであるSobel(ソーベル)フィルタについてはこちらの記事で紹介しています。
『より輝度差を強調する ソーベルフィルタ』
WinROOFでの微分フィルタプレビュー
メディアンフィルタなどと同様に微分フィルタでも、カーネルのサイズや係数を変えればさまざまな1次微分処理の結果を得ることができます。
実際に画像解析ソフトウェアWinROOFシリーズを使用して、3x3、5x5 のカーネルで別の方向で実行した結果を見てみましょう。
フィルタ 3×3 斜め方向
フィルタ 5×5 横方向
フィルタ 5×5 縦方向
微分フィルタの機能を実際に試されたい方向けに、WinROOFシリーズの無料体験版(デモ版)も用意しています。
気になる方は下のリンクからダウンロードしてみてくださいね。
デモ版をダウンロードするにはこちらをクリック!