1

我正在使用几何均值滤波器而不是中值滤波器来消除噪声,因为在前一种情况下图像质量会下降。下面显示的代码是 m 文件的一部分,用于去除噪声。

fname = getappdata(0, 'fname');
[a, map] = imread(fname);
x = ind2rgb(a, map);
b = im2double(x);
w=fspecial('gaussian',[3,3]);
geom=exp(imfilter(log(b),ones(3,3),'replicate')).^(1/3/3);
fname=imfilter(b,w,'replicate');
axes(handles.axes1);
imshow(fname);

如果我按下上面代码中名为“消除噪音”的按钮,则无论图像质量/属性如何,都会执行。从某种意义上说,即使不存在噪声,图像也会经过过滤。

我的问题是,有没有办法检测是否存在噪音,所以当我按下按钮时,如果图像中没有噪音,它应该会自动显示一条消息,说明“没有噪音要移除”。

4

1 回答 1

1

没有直接的方法来确定图像是否有噪声。

但是,您可以将结果图像fname与输入图像进行比较b,如果它们的差异低于某个阈值,则可以确定去噪操作没有有效改变图像并且原始图像中没有太多噪声,例如:

threshold_ratio = 0.2; % to be decided experimentally

difference_ratio = sum(sum((fname - b).^2)) / sum(sum(b.^2));

if difference_ratio < threshold_ratio

   disp('NO NOISE TO REMOVE');

end
于 2013-08-01T04:52:55.877 回答