Ich habe diesen Code, der Gauß-Filter (Tiefpassfilter) auf einem Bild durchführen wird. Dieser Filter funktioniert jedoch nur bei Graustufenbildern. Wie kann ich es verbessern, damit es an einem farbigen Bild arbeiten kann? Ich weiß, dass es viele eingebaute Funktionen gibt, aber ich bin neu in der Bildverarbeitung und ich versuche, die Grundlagen zu lernen.Matlab Tiefpassfilter für RGB-Bild
%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);
Sie müssen die letzten zwei Zeilen Ihres Codes ändern. Sie überschreiben den ersten Kanal der Ausgabe, anstatt auf die anderen beiden Kanäle zu schreiben. Ich würde auch vorschlagen, Semikolons am Ende aller Ihrer Aussagen hinzuzufügen, oder Sie werden viel Echo in der Eingabeaufforderung bekommen. – rayryeng