このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
関数 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)