Main Content

ガウス平滑化フィルターのイメージへの適用

この例では、imgaussfilt を使用して各種のガウス平滑化フィルターをイメージに適用する方法を説明します。ガウス平滑化フィルターは一般にノイズの低減に使用します。

イメージをワークスペースに読み取ります。

I = imread('cameraman.tif');

標準偏差の大きい等方性ガウス平滑化カーネルでイメージをフィルター処理します。ガウス フィルターは一般に等方性です。すなわち、両方の次元で標準偏差が同じになります。等方性ガウス フィルターでは sigma にスカラー値を指定してイメージをフィルター処理できます。

Iblur1 = imgaussfilt(I,2);
Iblur2 = imgaussfilt(I,4);
Iblur3 = imgaussfilt(I,8);

元のイメージとフィルター処理されたすべてのイメージを表示します。

figure
imshow(I)
title('Original image')

Figure contains an axes object. The axes object with title Original image contains an object of type image.

figure
imshow(Iblur1)
title('Smoothed image, \sigma = 2')

Figure contains an axes object. The axes object with title S m o o t h e d blank i m a g e , blank sigma blank = blank 2 contains an object of type image.

figure
imshow(Iblur2)
title('Smoothed image, \sigma = 4')

Figure contains an axes object. The axes object with title S m o o t h e d blank i m a g e , blank sigma blank = blank 4 contains an object of type image.

figure
imshow(Iblur3)
title('Smoothed image, \sigma = 8')

Figure contains an axes object. The axes object with title S m o o t h e d blank i m a g e , blank sigma blank = blank 8 contains an object of type image.

異方性ガウス平滑化カーネルでイメージをフィルター処理します。imgaussfilt ではガウス カーネルは行と列の次元で異なる標準偏差をもつことができます。これらは軸方向の異方性ガウス フィルターと呼ばれます。異方性フィルターを使用する場合、sigma に 2 要素ベクトルを指定します。

IblurX1 = imgaussfilt(I,[4 1]);
IblurX2 = imgaussfilt(I,[8 1]);
IblurY1 = imgaussfilt(I,[1 4]);
IblurY2 = imgaussfilt(I,[1 8]);

フィルター処理されたイメージを表示します。

figure
imshow(IblurX1)
title('Smoothed image, \sigma_x = 4, \sigma_y = 1')

Figure contains an axes object. The axes object with title S m o o t h e d blank i m a g e , blank sigma indexOf x baseline blank = blank 4 , blank sigma indexOf y baseline blank = blank 1 contains an object of type image.

figure
imshow(IblurX2)
title('Smoothed image, \sigma_x = 8, \sigma_y = 1')

Figure contains an axes object. The axes object with title S m o o t h e d blank i m a g e , blank sigma indexOf x baseline blank = blank 8 , blank sigma indexOf y baseline blank = blank 1 contains an object of type image.

figure
imshow(IblurY1)
title('Smoothed image, \sigma_x = 1, \sigma_y = 4')

Figure contains an axes object. The axes object with title S m o o t h e d blank i m a g e , blank sigma indexOf x baseline blank = blank 1 , blank sigma indexOf y baseline blank = blank 4 contains an object of type image.

figure
imshow(IblurY2)
title('Smoothed image, \sigma_x = 1, \sigma_y = 8')

Figure contains an axes object. The axes object with title S m o o t h e d blank i m a g e , blank sigma indexOf x baseline blank = blank 1 , blank sigma indexOf y baseline blank = blank 8 contains an object of type image.

元のイメージの空の領域に表れた水平の帯を抑制します。異方性ガウス フィルターはイメージ内にある水平方向または垂直方向の特徴を抑制できます。イメージの空の領域から一部分を抽出し、標準偏差が高いガウス フィルターを X 軸方向 (列が増加する方向) に使用します。

I_sky = imadjust(I(20:50,10:70));
IblurX1_sky = imadjust(IblurX1(20:50,10:70));

元の空のパッチとフィルター処理されたバージョンを表示します。

figure
imshow(I_sky), title('Sky in original image')

Figure contains an axes object. The axes object with title Sky in original image contains an object of type image.

figure
imshow(IblurX1_sky), title('Sky in filtered image')

Figure contains an axes object. The axes object with title Sky in filtered image contains an object of type image.