我已經使用3x3平均濾波器編寫了平滑圖像的代碼,但輸出很奇怪,幾乎全是黑色。這是我的代碼。3x3在matlab中的平均值過濾器
function [filtered_img] = average_filter(noisy_img)
[m,n] = size(noisy_img);
filtered_img = zeros(m,n);
for i = 1:m-2
for j = 1:n-2
sum = 0;
for k = i:i+2
for l = j:j+2
sum = sum+noisy_img(k,l);
end
end
filtered_img(i+1,j+1) = sum/9.0;
end
end
end
我所說的功能如下:
img=imread('img.bmp');
filtered = average_filter(img);
imshow(uint8(filtered));
我看不到代碼邏輯什麼錯,到目前爲止,我會很感激,如果有人能發現問題。
事實確實如此,但我不明白爲什麼。我的代碼出了什麼問題? – turingcomplete
我還記得之前我想在圖像上總結一些值,並且它在使用嵌套循環時不能像嵌套一樣工作,但是當我使用預定義函數時它工作得很好。有什麼理由呢? – turingcomplete
總和的上限是255,所以你需要事先將它設置爲雙倍 – Rasman