MATLABによる画像処理8

ページトップへ 一つ上へ

ポイント


エッジ検出



さてさて、今回も画像処理についてやっていきます。
前回は色相変調について説明しました。
今回は、エッジの検出について行います。
エッジ検出はシステムがオブジェクトを識別するために重要な要素です。
複雑な画像認識を行うための前処理としてしばしば用いられます。

エッジというのは輪郭の事で、画像内にあるオブジェクトの輪郭を検出するのが、
エッジ検出です。

ではエッジ検出の方法ですが、画像の全ての画素には明るさというものが存在します。
その明るさが急激に変わっている所がオブジェクトの領域の境界になります。
この境界というのが輪郭、エッジという事になります。
この明るさの変化量というのは微分により求める事が出来ます。
しかし、ディジタル画像は離散的なので微分は行えません。
そこで近似的に求める手法として、差分がよく用いられます。

実際にエッジ検出の方法として、グラディエント(1次微分)とラプラシアン(2次微分)が
用いられます。グラディエントによる微分値の算出は以下の式によります。



ベクトル(Δx、Δy)が微分値として表現されます。

またラプラシアンによる微分値は以下の式により算出されます。



このような式から微分値を求め、エッジを検出します。

実際のエッジ検出をMATLABで行うのは簡単です。
実際に行っていきましょう。

それではまず以下の画像を用意します。



この画像はIEEEの研究用標準画像です。
function image_proc12

%
% 画像処理
% エッジ抽出
%

imagedata=imread('Lenna.bmp');
imagedata=double(imagedata);			% 実数行列に変換

f=[-1,-1,-1;-1,8,-1;-1,-1,-1];			% フィルタ行列の作成

filt_image=filter2(f,imagedata,'same');		% フィルタリング

image(filt_image);
colormap(gray(256));

プログラムの中にあるフィルタ行列というのは、
ラプラシアンに用いるオペレータである。
他にもいくつかあるのでいろいろやって見て下さい。

では、実際にエッジ検出を行った画像を以下に示します。



このようにエッジは検出されていると思います。
ゴミみたいな部分もありますが、これは仕方がないです。