2
画像にガウスフィルタ(ローパスフィルタ)を実行するこのコードがあります。ただし、このフィルタはグレースケール画像でのみ動作します。どのように色のついた画像で作業できるように改善することができますか?私は、多くのビルトイン機能があることを知っていますが、私は画像処理に新しいです、そして、私は基本を学ばそうとしています。RGB画像のMatlabローパスフィルタ
%Read an Image
Img = imread('peppers.png');
Im = rgb2gray(Img);
I = double(Im);
%Design the Gaussian Kernel
%Standard Deviation
sigma = 1.76;
%Window size
sz = 4;
[x,y]=meshgrid(-sz:sz,-sz:sz);
M = size(x,1)-1;
N = size(y,1)-1;
Exp_comp = -(x.^2+y.^2)/(2*sigma*sigma);
Kernel= exp(Exp_comp)/(2*pi*sigma*sigma);
%Initialize
Output=zeros(size(I));
%Pad the vector with zeros
I = padarray(I,[sz sz]);
%Convolution
for i = 1:size(I,1)-M
for j =1:size(I,2)-N
Temp = I(i:i+M,j:j+M).*Kernel;
Output(i,j)=sum(Temp(:));
end
end
%Image without Noise after Gaussian blur
Output = uint8(Output);
figure,imshow(Output);
コードの最後の2行を変更する必要があります。他の2つのチャンネルに書き込む代わりに、出力の最初のチャンネルを上書きしています。また、すべてのステートメントの最後にセミコロンを追加することをお勧めします。そうしないと、コマンドプロンプトに多くのエコーが表示されます。 – rayryeng