我正在使用几何平均滤波器去除噪声而不是中值滤波器,因为在前一种情况下图像质量会消失。下面显示的代码是移除噪音的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);
如果按下上面名为“删除噪音”的按钮,则无论图像质量/属性如何,都会执行代码。从某种意义上说,即使没有噪声,图像也会受到滤波。
我的问题是,有没有办法检测是否存在噪音,所以当按下按钮的那一刻如果图像中没有噪音,它应该会自动显示一条消息,上面写着“无噪音”。
答案 0 :(得分: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