【问题标题】:Removing Noise From an image in MATLAB在 MATLAB 中从图像中去除噪声
【发布时间】:2013-08-01 19:08:54
【问题描述】:

我使用几何均值滤波器而不是中值滤波器来去除噪声,因为在前一种情况下图像质量会下降。下面显示的代码是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);

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

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

【问题讨论】:

    标签: image matlab image-processing matlab-guide


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2019-06-03
      • 2014-05-22
      • 2012-01-26
      • 2023-04-05
      • 2021-08-16
      • 2011-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多