Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

関数 imfilter を使用したグレースケール イメージおよびトゥルーカラー (RGB) イメージのフィルター処理

この例では、imfilter を使用して、同じ重みを持つ 5 行 5 列のフィルター (通称平均化フィルター) で 2 次元グレースケール イメージをフィルター処理する方法を説明します。この例では、同じフィルターでトゥルーカラー (RGB) イメージをフィルター処理する方法も説明します。トゥルーカラー イメージは、サイズが m x n x 3 の 3 次元配列です。ここで、最後の次元は 3 つのカラー チャネルを表します。2 次元フィルターを使用したトゥルーカラー イメージのフィルター処理は、イメージの各平面を同じ 2 次元フィルターで個々にフィルター処理することと同等です。

2 次元および多次元のフィルター処理を実行できる複数の MATLAB® 関数があり、imfilter と比較できます。関数 filter2 は 2 次元相関を、conv2 は 3 次元畳み込みを、convn は多次元畳み込みを実行します。ただし、これらの各フィルター関数は、常に入力を double に変換し、出力は常に double になります。さらに、これらの MATLAB® フィルター関数は、常に入力がゼロ パディングされていると仮定するため、他のパディング オプションをサポートしません。一方、imfilter は入力イメージを double に変換しません。関数 imfilter には、柔軟な境界パディング オプションのセットも用意されています。

平均化フィルターを使用した 2 次元グレースケール イメージのフィルター処理

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

I = imread("coins.png");

元のイメージを表示します。

figure
imshow(I)
title("Original Image")

正規化された 5 行 5 列の平均化フィルターを作成します。

h = ones(5,5)/25;

imfilter を使用してグレースケール イメージに平均化フィルターを適用します。

I2 = imfilter(I,h);

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

figure
imshow(I2)
title("Filtered Image")

imfilter を使用した多次元トゥルーカラー (RGB) イメージのフィルター処理

トゥルーカラー イメージをワークスペースに読み取ります。

rgb = imread("peppers.png");
imshow(rgb);

フィルターを作成します。この平均化フィルターは同じ重みを持つため、元のイメージよりもフィルター処理されたイメージが不鮮明に見えます。

h = ones(5,5)/25;

imfilter を使用してイメージをフィルター処理して、表示します。

rgb2 = imfilter(rgb,h);
figure
imshow(rgb2)

参考

関連するトピック