0
我有這個過濾功能,採取輸入圖像,使用給定的內核執行卷積,並返回結果圖像。但是,我似乎無法解決如何使它具有不同的內核大小。例如,代碼中未使用預定義的3x3內核,可能需要5x5或7x7。然後用戶可以輸入他們想要的內核/過濾器的類型(取決於預期的效果)。我似乎無法把它放在頭上。我對matlab很陌生。功能在輸入圖像和不同的內核大小
function [newImg] = kernelFunc(imgB)
img=imread(imgB);
figure,imshow(img);
img2=zeros(size(img)+2);
newImg=zeros(size(img));
for rgb=1:3
for x=1:size(img,1)
for y=1:size(img,2)
img2(x+1,y+1,rgb)=img(x,y,rgb);
end
end
end
for rgb=1:3
for i= 1:size(img2,1)-2
for j=1:size(img2,2)-2
window=zeros(9,1);
inc=1;
for x=1:3
for y=1:3
window(inc)=img2(i+x-1,j+y-1,rgb);
inc=inc+1;
end
end
kernel=[1;2;1;2;4;2;1;2;1]/16;
med=window.*kernel;
disp(med);
med=sum(med);
med=floor(med);
newImg(i,j,rgb)=med;
end
end
end
newImg=uint8(newImg);
figure,imshow(newImg);
end
爲什麼不使用'conv2'? http://www.mathworks.es/es/help/matlab/ref/conv2.html –