我有一张180x220的图像,其中包含一些区域内的噪音(例如:145:180,1:65)。
我的问题是如何使用Matlab消除此区域中的噪声而不影响图像的其他部分。
非常感谢。
编辑:我想从下图中删除区域(1:146,1:25)和(1:15,25,174)中的噪音:
答案 0 :(得分:2)
一般来说,这会像
% filter image in-place
img(145:180, 1:65) = medfilt2(img(145:180, 1:65));
请注意,大多数滤镜需要一些感兴趣区域的上下文才能进行适当的插值/平均/等等,因此您可能需要采用这种方法:
% Note: increase ROI by 10 on each side
offset = 10;
img_tmp = img(145-offset : 180+offset, 1 : 65+offset);
% apply filter
img_tmp = medfilt2(img_tmp, [additional parameters]);
% put filtered image back in its proper place
img(145:180, 1:65) = img_tmp(offset:end-offset+1, 1:end-offset+1);
答案 1 :(得分:2)
img = double(imread('img.jpg'));
h = fspecial('gaussian', hsize, sigma); % decide how to filter the image
img_filt = imfilter(img, h, 'replicate');
现在,仅在噪声区域中使用滤波图像
img(145:180,1:65,:) = img_filt(145:180,1:65,:);
编辑:您发布图片后我想您只想用香草色替换噪音区域? 如果是,则执行以下操作(假设为灰色图像):
med_pixel = median(img(:)); % detect the dominant color
img(1:146,1:25) = med_pixel;
img(1:15,25,174) = med_pixel;
......等等