我想在Matlab中製作一個模糊我的圖像的函數。我正在使用Matlabs演示圖像peppers.png
。使用函數的Matlab模糊濾波器
這裏是我的功能:
function g = myfilter(f, h)
f = double(f); %convert to double
g = zeros(size(f)); %new array (size of f)
a = (size(h, 1) - 1)/2; %padding on edges
for row = (a + 1) : (size(f,1) - a)
for col = (a + 1) : (size(f,2) - a)
gxy = 0; %running sum
for m = -a:a
for n = -a:a
gxy = gxy + f(row - m, col - n) + h(m + a+1, n + a+1);
end
end
g(row, col) = gxy;
end
end
g = uint8(g); %convert back to int
這裏是我的命令:
>> img = imread('peppers.png');
>> imshow(img)
>> imgGray = rgb2gray(img);
>> imshow(imgGray)
>>
>> filt1 = (1/9)*ones(3)
filt1 =
0.1111 0.1111 0.1111
0.1111 0.1111 0.1111
0.1111 0.1111 0.1111
>> test = myfilter(imgGray, filt1);
>> imshow(test)
,成功轉換的彩色圖像,以灰色和應用過濾器。
不幸的是,過濾器只是創建一個接近完整的白色圖像(太亮)...我根本看不出爲什麼......它應該採取使用3x3過濾器的每個像素的平均值... 什麼都可以對你們來說很明顯爲什麼會發生這種情況?