另外一个选项:
f = @(x) mean(x(:));
filtered_img = nlfilter(noisy_img,[3 3],f);
0
另外一个选项:
f = @(x) mean(x(:));
filtered_img = nlfilter(noisy_img,[3 3],f);
0
img = imread('img.bmp');
filtered = imfilter(double(img), ones(3) / 9, 'replicate');
imshow(uint8(filtered));
0
假设您正在使用灰度图像,则应将内部两个for循环替换为:
filtered_img(i+1,j+1) = mean2(noisy_img(i:i+2,j:j+2));
它会改变什么吗?
编辑:别忘了将其转换为uint8 !!
filtered_img = uint8(filtered_img);
编辑2:之所以无法在您的代码中使用,是因为sum
饱和到255,即uint8的上限。 mean
似乎阻止了这种情况的发生
0
我已经编写了使用3x3平均滤波器对图像进行平滑处理的代码,但是输出很奇怪,几乎都是黑色的。这是我的代码。
我将函数调用如下:
到目前为止,我在代码逻辑中看不到任何错误,如果有人可以发现问题,我将不胜感激。