我想将过滤器medfilt2
应用于具有salt&amp ;;的图像辣椒噪音。
我试过这段代码:
img = imread('4.02.04_salt&pepper.tif');
blur = medfilt2(img,[3 3]);
imshow(blur);
但是我收到了一个错误:
`Error using medfilt2
Expected input number 1, A, to be two-dimensional.
Error in medfilt2>parse_inputs (line 106)
validateattributes(a, {'numeric','logical'}, {'2d','real'},
mfilename, 'A', 1);
Error in medfilt2 (line 48)
[a, mn, padopt] = parse_inputs(varargin{:});
Error in codLab3 (line 87)
blur = medfilt2(img,[3 3]);`
我不知道为什么会这样。
答案 0 :(得分:16)
您的图像很可能是带有RGB帧的彩色图像。 medfilt2
仅适用于单色的2D图像。最简单的解决方法可能是将它分别应用于每种颜色。
参见示例:
% load an image
img = imread('peppers.png');
% add some noise
img_noisy = imnoise(img, 'salt & pepper', 0.02);
figure; imshow(img_noisy);
% apply medfilt2 on each color
img_filtered = img_noisy;
for c = 1 : 3
img_filtered(:, :, c) = medfilt2(img_noisy(:, :, c), [3, 3]);
end
figure; imshow(img_filtered);
看起来像:
答案 1 :(得分:1)
尝试将rgb转换为灰色(rgb2gray
):
img = imread('4.02.04_salt&pepper.tif');
img = rgb2gray(img); % add this line
blur = medfilt2(img);
imshow(blur);