1

我有一张尺寸为 180x220 的图像,其中包含该区域中的一些噪声,例如 (145:180,1:65)。

我的问题是如何在不影响图像其他部分的情况下使用 Matlab 去除该区域的噪声。

非常感谢你。

编辑:我想从下图中去除区域 (1:146,1:25) 和 (1:15,25,174) 中的噪声:

在此处输入图像描述

4

2 回答 2

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); 
于 2012-12-04T10:35:38.593 回答
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;

... 等等

于 2012-12-04T10:36:14.920 回答