图像去噪 订阅
图像去噪是指减少数字图像中噪声的过程。现实中的数字图像在数字化和传输过程中常受到成像设备与外部环境噪声干扰等影响,称为含噪图像或噪声图像。噪声是图象干扰的重要原因。一幅图象在实际应用中可能存在各种各样的噪声,这些噪声可能在传输中产生,也可能在量化等处理中产生。 展开全文
图像去噪是指减少数字图像中噪声的过程。现实中的数字图像在数字化和传输过程中常受到成像设备与外部环境噪声干扰等影响,称为含噪图像或噪声图像。噪声是图象干扰的重要原因。一幅图象在实际应用中可能存在各种各样的噪声,这些噪声可能在传输中产生,也可能在量化等处理中产生。
信息
外文名
Image Denoising.
分    类
加性噪声 乘性噪声 量化噪声
中文名
图像去噪
产生时段
传输 量化等处理中
图像去噪噪声的产生及分类
根据噪声和信号的关系可将其分为三种形式:(f(x,y)表示给定原始图象,g(x,y)表示图象信号,n(x,y)表示噪声。1) 加性噪声,此类噪声与输入图象信号无关,含噪图象可表示为f(x,y)=g(x,y)+n(x,y),信道噪声及光导摄像管的摄像机扫描图象时产生的噪声就属这类噪声;2) 乘性噪声,此类噪声与图象信号有关,含噪图象可表示为f(x,y)=g(x,y)+n(x,y)g(x,y),飞点扫描器扫描图象时的噪声,电视图象中的相关噪声,胶片中的颗粒噪声就属于此类噪声;3) 量化噪声,此类噪声与输入图象信号无关,是量化过程存在量化误差,再反映到接收端而产生。
收起全文
精华内容
参与话题
问答
  • 图像去噪 图像去噪是在去除图像噪声的同时,尽可能地保留图像细节和结构的处理技术。我们这里使用 ROF(Rudin-Osher-Fatemi)去噪模型。图像去噪对于很多应用来说都非常重要;这些应用范围很广,小到让你的假期照片...

    图像去噪

     图像去噪是在去除图像噪声的同时,尽可能地保留图像细节和结构的处理技术。我们这里使用 ROF(Rudin-Osher-Fatemi)去噪模型。图像去噪对于很多应用来说都非常重要;这些应用范围很广,小到让你的假期照片看起来更漂亮,大到提高卫星图像的质量。ROF 模型具有很好的性质:使处理后的图像更平滑,同时保持图像边缘和结构信息。

    ROF模型

    rof.py 

    from numpy import *
    
    def denoise(im,U_init,tolerance=0.1,tau=0.125,tv_weight=100):
        """使用A. Chambolle(2005)在公式(11)中的计算步骤实现Rudin-Osher-Fatemi(ROF)去噪模型
            输入:含有噪声的输入图像(灰度图像)、U的初始值、TV正则项权值、步长、停业条件
            输出:去噪和去除纹理后的图像、纹理残留"""
        m,n = im.shape  #噪声图像的大小
    
        #初始化
        U = U_init
        Px = im #对偶域的x分量
        Py = im #对偶域为y分量
        error = 1
    
        while(error>tolerance):
            Uold = U
    
            #原始变量的梯度
            GradUx = roll(U,-1,axis=1)-U    #变量U梯度的x分量
            GradUy = roll(U,-1,axis=0)-U    #变量U梯度的y分量
    
            #更新对偶变量
            PxNew = Px + (tau/tv_weight)*GradUx
            PyNew = Py + (tau/tv_weight)*GradUy
            NormNew = maximum(1,sqrt(PxNew**2+PyNew**2))
    
            Px = PxNew/NormNew  #更新x分量(对偶)
            Py = PyNew/NormNew  #更新y分量(对偶)
    
            #更新原始变量
            RxPx = roll(Px,1,axis=1)    #对x分量进行向右x轴平移
            RyPy = roll(Py,1,axis=0)    #对y分量进行向右y轴平移
    
            DivP = (Px-RxPx) + (Py-RyPy) #对偶域的散度
            U = im + tv_weight*DivP  #更新原始变量
    
            #更新误差
            error = linalg.norm(U - Uold)/sqrt(n*m)
    
        return U,im-U #去噪后的图像和纹理残余
    

    我们使用了 roll() 函数。顾名思义,在一个坐标轴上,它循环“滚动”数组中的元素值。该函数可以非常方便地计算邻域元素的差异,比如这里的导数。我们还使用了 linalg.norm() 函数,该函数可以衡量两个数组间(这个例子中是指图像矩阵 U 和 Uold)的差异。我们将这个 denoise() 函数保存到 rof.py 文件中。

    下面使用一个合成的噪声图像示例来说明如何使用该函数: 

    from  PIL import Image
    import numpy as np
    from pylab import *
    from numpy import *
    from numpy import random
    from scipy.ndimage import filters
    import rof
    
    #添加中文字体
    from matplotlib.font_manager import FontProperties
    
    font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)
    
    figure()
    gray()
    #使用噪声创建合成图像
    im = zeros((500,500))
    im[100:400,100:400] = 128
    im[200:300,200:300] = 255
    im = im + 30*random.standard_normal((500,500))
    subplot(1,3,1)
    imshow(im)
    axis("off")
    title(u'原图', FontProperties=font)
    
    U,T = rof.denoise(im,im)
    G = filters.gaussian_filter(im,10)
    subplot(1,3,2)
    imshow(U)
    axis("off")
    title(u'rof去噪图像', FontProperties=font)
    
    subplot(1,3,3)
    imshow(G)
    axis("off")
    title(u'高斯去噪图像', FontProperties=font)
    
    show()
    #保存生成结果
    #from imageio import imsave
    #imsave('synth_rof.pdf',U)
    #imsave('synth_gaussian.pdf',G)

    imsave在新版scipy模块中被删去,因此使用imshow()函数代替显示。

    下面看一下在实际图像中使用 ROF 模型去噪的效果:

    from PIL import Image
    from pylab import *
    import rof
    from scipy.ndimage import filters
    
    figure()
    gray()
    
    im = array(Image.open('empire.jpg').convert('L'))
    subplot(1,3,1)
    imshow(im)
    axis("off")
    
    U,T = rof.denoise(im,im)
    G = filters.gaussian_filter(im,10)
    subplot(1,3,2)
    imshow(U)
    axis("off")
    
    subplot(1,3,3)
    imshow(G)
    axis("off")
    show()

     

     

    为了方便比较,该图中同样显示了模糊后的图像。可以看到,ROF 去噪后的图像保留了边缘和图像的结构信息,同时模糊了“噪声”。

    展开全文
  • 最经典最新的图像去噪算法

    万次阅读 多人点赞 2018-10-24 10:14:19
    图像去噪是非常基础也是非常必要的研究,去噪常常在更高级的图像处理之前进行,是图像处理的基础。可惜的是,目前去噪算法并没有很好的解决方案,实际应用中,更多的是在效果和运算复杂度之间求得一个平衡,再一次...

    图像去噪是非常基础也是非常必要的研究,去噪常常在更高级的图像处理之前进行,是图像处理的基础。可惜的是,目前去噪算法并没有很好的解决方案,实际应用中,更多的是在效果和运算复杂度之间求得一个平衡,再一次验证了我老师的一句话:

    所有的工程问题最后都是最优化问题。

    好了,废话不多说,来看看效果比较好的去噪算法吧。

    噪声模型

    图像中噪声的来源有许多种,这些噪声来源于图像采集、传输、压缩等各个方面。噪声的种类也各不相同,比如椒盐噪声,高斯噪声等,针对不同的噪声有不同的处理算法。

    对于输入的带有噪声的图像v(x),其加性噪声可以用一个方程来表示:

    其中是原来没有噪声的图像。是像素集合,是加项噪声项,代表噪声带来的影响。是像素的集合,也就是整幅图像。从这个公式可以看出,噪声是直接叠加在原始图像上的,这个噪声可以是椒盐噪声、高斯噪声。理论上来说,如果能够精确地获得噪声,用输入图像减去噪声就可以恢复出原始图像。但现实往往很骨感,除非明确地知道噪声生成的方式,否则噪声很难单独求出来。

    工程上,图像中的噪声常常用高斯噪声来近似表示,其中,是噪声的方差,越大,噪声越大。一个有效的去除高斯噪声的方式是图像求平均,对N幅相同的图像求平均的结果将使得高斯噪声的方差降低到原来的N分之一,现在效果比较好的去噪算法都是基于这一思想来进行算法设计。

    NL-Means算法

    NL-Means的全称是:Non-Local Means,直译过来是非局部平均,在2005年由Baudes提出,该算法使用自然图像中普遍存在的冗余信息来去噪声。与常用的双线性滤波、中值滤波等利用图像局部信息来滤波不同的是,它利用了整幅图像来进行去噪,以图像块为单位在图像中寻找相似区域,再对这些区域求平均,能够比较好地去掉图像中存在的高斯噪声。NL-Means的滤波过程可以用下面公式来表示:

    在这个公式中,是一个权重,表示在原始图像中,像素  和像素  的相似度。这个权重要大于0,同时,权重的和为1,用公式表示是这样:

    是像素  的邻域。这个公式可以这样理解:对于图像中的每一个像素  ,去噪之后的结果等于它邻域中像素  的加权和,加权的权重等于  和  的相似度。这个邻域也称为搜索区域,搜索区域越大,找到相似像素的机会也越大,但同时计算量也是成指数上升。在提出这个算法的文献中,这个区域是整幅图像!导致的结果是处理一幅512x512大小的图像,最少也得几分钟。

    衡量像素相似度的方法有很多,最常用的是根据两个像素的亮度值的差的平方来估计。但因为有噪声的存在,单独的一个像素并不可靠。对此解决方法是,考虑它们的邻域,只有邻域相似度高才能说这两个像素的相似度高。衡量两个图像块的相似度最常用的方法是计算他们之间的欧氏距离:

    其中:  是一个归一化的因子,是所有权重的和,对每个权重除以该因子后,使得权重满足和为1的条件。  是滤波系数,控制指数函数的衰减从而改变欧氏距离的权重。 和  代表了像素  和像素  的邻域,这个邻域常称为块(Patch)邻域。块邻域一般要小于搜索区域。 是两个邻域的高斯加权欧式距离。其中  是高斯核的标准差。在求欧式距离的时候,不同位置的像素的权重是不一样的,距离块的中心越近,权重越大,距离中心越远,权重越小,权重服从高斯分布。实际计算中考虑到计算量的问题,常常采用均匀分布的权重。

    讲了这么多,是时候用图来说明问题了:

    如上图所示,p为去噪的点,因为q1和q2的邻域与p相似,所以权重和比较大,而邻域相差比较大的点q3的权重值很小。如果用一幅图把所有点的权重表示出来,那就得到下面这些权重图:

    这6组图像中,左边是原图,中心的白色色块代表了像素  块邻域,右边是计算出来的权重  图,权重范围从0(黑色)到1(白色)。这个块邻域在整幅图像中移动,计算图像中其他区域跟这个块的相似度,相似度越高,得到的权重越大。最后将这些相似的像素值根据归一化之后的权重加权求和,得到的就是去噪之后的图像了。

    这个算法参数的选择也有讲究,一般而言,考虑到算法复杂度,搜索区域大概取21x21,相似度比较的块的可以取7x7。实际中,常常需要根据噪声来选取合适的参数。当高斯噪声的标准差 越大时,为了使算法鲁棒性更好,需要增大块区域,块区域增加同样也需要增加搜索区域。同时,滤波系数  与  正相关:,当块变大时, 需要适当减小。

    NL-Means算法的复杂度跟图像的大小、颜色通道数、相似块的大小和搜索框的大小密切相关,设图像的大小为NN,颜色通道数为,块的大小为kk,搜索框的大小为nn,那么算法复杂度为:。对512512的彩色图像而言,设置k=7,n=21,OpenCV在使用了多线程的情况下,处理一幅图像所需要的时间需要几十秒。虽然有人不断基于这个算法进行改进、提速,但离实时处理还是比较远。

    最后来看一下这个算法的去噪效果[3]:

      

    BM3D算法

    BM3D(Block-matching and 3D filtering,3维块匹配滤波)可以说是当前效果最好的算法之一。该算法的思想跟NL-Means有点类似,也是在图像中寻找相似块的方法进行滤波,但是相对于NL-Means要复杂得多,理解了NL-Means有助于理解BM3D算法。BM3D算法总共有两大步骤,分为基础估计(Step1)和最终估计(Step2):

    BM3D算法流程图

    在这两大步中,分别又有三小步:相似块分组(Grouping),协同滤波(Collaborative Filtering)和聚合(Aggregation)。上面的算法流程图已经比较好地将这一过程表示出来了,只需要稍加解释。

    Stpe1:基础估计

    (1) Grouping:有了NL-Means的基础,寻找相似块的过程很容易理解。首先在噪声图像中选择一些 大小的参照块(考虑到算法复杂度,不用每个像素点都选参照块,通常隔3个像素为一个不长选取,复杂度降到1/9),在参照块的周围适当大小()的区域内进行搜索,寻找若干个差异度最小的块,并把这些块整合成一个3维的矩阵,整合的顺序对结果影响不大。同时,参照块自身也要整合进3维矩阵,且差异度为0。寻找相似块这一过程可以用一个公式来表示:

    d(P,Q)代表两个块之间的欧式距离。最终整合相似块获得的矩阵就是流程图Step1中左下角的蓝色R矩阵。


    (2) Collaborative Filtering:形成若干个三维的矩阵之后,首先将每个三维矩阵中的二维的块(即噪声图中的某个块)进行二维变换,可采用小波变换或DCT变换等,通常采用小波BIOR1.5。二维变换结束后,在矩阵的第三个维度进行一维变换,通常为阿达马变换(Hadamard Transform)。变换完成后对三维矩阵进行硬阈值处理,将小于阈值的系数置0,然后通过在第三维的一维反变换和二维反变换得到处理后的图像块。这一过程同样可以用一个公式来表达:

    在这个公式中,二维变换和一维变换用一个 来表示。是一个阈值操作:

    是噪声的标准差,代表噪声的强度。

    (3) Aggregation:此时,每个二维块都是对去噪图像的估计。这一步分别将这些块融合到原来的位置,每个像素的灰度值通过每个对应位置的块的值加权平均,权重取决于置0的个数和噪声强度。

    Step2:最终估计

    (1) Grouping:第二步中的聚合过程与第一步类似,不同的是,这次将会得到两个三维数组:噪声图形成的三维矩阵和基础估计结果的三维矩阵。

    (2) Collaborative Filtering:两个三维矩阵都进行二维和一维变换,这里的二维变换通常采用DCT变换以得到更好的效果。用维纳滤波(Wiener Filtering)将噪声图形成的三维矩阵进行系数放缩,该系数通过基础估计的三维矩阵的值以及噪声强度得出。这一过程同样可以用一个公式来表达:

    在这个公式中,二维变换和一维变换用一个 来表示。是一个维纳滤波的系数:

    是噪声的标准差,代表噪声的强度。

    (3) Aggregation:与第一步中一样,这里也是将这些块融合到原来的位置,只是此时加权的权重取决于维纳滤波的系数和噪声强度。

    经过最终估计之后,BM3D算法已经将原图的噪声显著地去除。可以来看一组结果:

      

    该算法的主要运算量还是在相似块的搜索与匹配上,在与NL-Means同样大小的相似块和搜索区域的情况下,BM3D的算法复杂度是要高于NL-Means的,应该大概在NL-Means的3倍左右。梦想着实时处理的同学可以死心了。


    算法比较

    要比较算法效果,必然离不开评价体系。由于人带有主观因素,每个人的评价可能都不一样,因此有必要用几种客观的评价方法来对结果进行评价。目前,用得比较多的评价方式是MSE(Mean-Squared Error,均方误差)和PSNR(Peak Signal-to-Noise Ratio,峰值信噪比)。

    两幅大小的图像和的MSE计算公式如下:

    在这个公式里没有表现出像素值范围对结果的影响,同样的均方误差8-bit的图像和12-bit的图像显然没有可比性。因此,又引入了峰值信噪比:

    上式中, 是图像像素最大值,对于8-bit的图像而言 =255,PSNR的单位是分贝(dB)。 通常 PSNR 值越高表示品质越好,一般而言,当 PSNR<30dB 时,代表以人的肉眼看起来是不能容忍的范围。因此大部分PSNR值都要>30dB。但PSNR高,并不代表图像质量一定好,有时候还是必须要靠人的肉眼去辅助判断图像的质量才较为正确。

    不同PSNR对应的视觉效果

    我对上面两种方法获得的结果针对原图计算了PSNR,结果如下:

    两个算法的PSNR比较
     NL-MeansBM3D
    PSNR32.091333.6711

    NL-Means和BM3D可以说是目前效果最好的去噪算法,其中BM3D甚至宣称它可以得到迄今为止最高的PSNR。从最终的结果也可以看出来,BM3D的效果确实要好于NL-Means,噪声更少,能够更好地恢复出图像的细节。在效果这一点上BM3D胜。无愧于State-of-the-art这一称号。当然,这里进行测试的样本比较少,可能还不足以完全说明问题。

    最后说几句

    这两者可以说是目前最有效的图像去噪算法了,但是都不可避免地要面对一个同问题:尽管计算机性能已经成百上千倍地提高,还是远不能满足很多算法的实时计算的需求,这很大程度上限制了这些算法的使用范围:用户无法处理一张照片需要等待长达几分钟的时间,因此,距离真正意义上的实用还是有一段距离。我们只能期待,要是有一天计算机性能不再是问题,又或者,大牛们能够研究出又快又好的算法吧。


    参考文献

    [1] Buades A, Coll B, Morel J M. A non-local algorithm for image denoising[C]//Computer Vision and Pattern Recognition, 2005. CVPR 2005. IEEE Computer Society Conference on. IEEE, 2005, 2: 60-65.

    [2] Buades A, Coll B, Morel J M. Nonlocal image and movie denoising[J]. International journal of computer vision, 2008, 76(2): 123-139.

    [3] Antoni Buades, Bartomeu Coll, and Jean-Michel Morel, Non-Local Means Denoising, Image Processing On Line, 1 (2011). http://dx.doi.org/10.5201/ipol.2011.bcm_nlm

    [4] Jacques Froment, Parameter-Free Fast Pixelwise Non-Local Means Denoising, Image Processing On Line, 4 (2014), pp. 300–326. http://dx.doi.org/10.5201/ipol.2014.120

    [5] Dabov K, Foi A, Katkovnik V, et al. Image denoising by sparse 3-D transform-domain collaborative filtering[J]. Image Processing, IEEE Transactions on, 2007, 16(8): 2080-2095.

    [6] http://www.cs.tut.fi/~foi/GCF-BM3D/

    [7] Marc Lebrun, An Analysis and Implementation of the BM3D Image Denoising Method, Image Processing On Line, 2 (2012), pp. 175–213. http://dx.doi.org/10.5201/ipol.2012.l-bm3d

    [8] Measures of image quality

    阅读更多
    本文转载来源于https://blog.csdn.net/Adusts/article/details/79958197 要是转载请标明出处
    展开全文
  • 几种典型的图像去噪算法总结

    万次阅读 多人点赞 2013-09-20 16:27:47
    (一)高斯低通滤波去噪  高斯低通滤波器(Gaussian Low Pass Filter)是一类传递函数为高斯函数的线性平滑滤波器。又由于高斯函数是正态分布的密度函数。因此高斯低通滤波器对于去除服从正态分布(Normal ...


    (一)高斯低通滤波去噪

            高斯低通滤波器(Gaussian Low Pass Filter)是一类传递函数为高斯函数的线性平滑滤波器。又由于高斯函数是正态分布的密度函数。因此高斯低通滤波器对于去除服从正态分布(Normal distribution)的噪声非常有效。一维高斯函数和二维高斯函数 (高斯低通滤波器的传递函数) 的表达形式分别如下:

            公式中,为标准差,由于图像通常是二维信号,因此图像去噪通常使用二维高斯函数作为传递函数,而高斯函数具有可分离的特性,因此可以先对行进行高斯滤波,再对列进行高斯滤波,这样二维高斯函数就可以降为一维高斯滤波。下图1分别模拟了标准差为10和标准差为50的高斯函数。


    图1:不同标准差时的高斯曲线

    从上图可以看出,高斯函数的标准差越大,高斯曲线越平滑。去噪能力越强,图像越模糊。

            下图2用均值为0方差分别为0.1,0.5,1.0的高斯噪声对原图像进行污染的结果。

    图2

            高斯滤波的实现方式有时域方式和频域方式两种,一种是时域高斯低通滤波,一种是频域高斯低通滤波。下面首先看看时域高斯低通滤波的结果。时域高斯低通滤波的实质是定义一个奇数大小的模板(3 X 3 ;5 X 5 ;7 X 7 ……),然后让该模板遍历整副图像,模板中的加权平均值就是模板中心的值。时域高斯低通滤波的结果如下图所示:

    图3:不同的标准差和领域大小时的去噪后的图像

            从上图可以看出,当领域窗口固定时,标准差越大,去除高斯噪声能力越强,图像越模糊,当标准差为2以上时,去噪能力几乎不再增加,只有当增加领域的大小时,去噪能力才会进一步增强。下面我们可以看一下,标准差分别为10和30的高斯曲线来进一步说明在邻域窗口大小一致的情况下,标准差越大,高斯曲线越宽,那么去高频噪声的能力就越强。但是他不是无限增强的,最终会趋于一个稳定值,只有当继续增大邻域窗口时,去噪能力才会进一步增强。


    图4:不同标准差时的高斯曲线

            上述时域高斯低通滤波的matlab源代码如下:

    %时域高斯低通去噪
    x = imread('NoiseImage.jpg');
    subplot(231),imshow(x);title('高斯噪声为0.1的原图')
    y1 = fspecial('gaussian',5,0.1);
    z1 = imfilter(x,y1,'symmetric');
    subplot(232),imshow(z1);title('领域窗口大小为5X5,标准差为0.1');
    y2 = fspecial('gaussian',5,2);
    z2 = imfilter(x,y2,'symmetric');
    subplot(233),imshow(z2);title('领域窗口大小为5X5,标准差为2');
    y3 = fspecial('gaussian',5,3);
    z3 = imfilter(x,y3,'symmetric');
    subplot(234),imshow(z3);title('领域窗口大小为5X5,标准差为3');
    y4 = fspecial('gaussian',5,5);
    z4 = imfilter(x,y4,'symmetric');
    subplot(235),imshow(z4);title('领域窗口大小为5X5,标准差为5');
    y4 = fspecial('gaussian',11,5);
    z4 = imfilter(x,y4,'symmetric');
    subplot(236),imshow(z4);title('领域窗口大小为11X11,标准差为5');


            下面实现频域高斯低通滤波器

           由于时域滤波的本质就是采用原始图像与滤波核(领域窗口)进行卷积的操作,我们知道卷积的运算速度是比较慢的,由傅里叶变换的性质可知,时域卷积可以转化为频域的乘积。因而频域高斯低通滤波应运而生。该部分内容基本源于冈萨雷斯版数字图像处理中第四章的内容,为了避免抄书,这里仅给出与时域滤波有相似结果的频域滤波的matlab源代码。

            频域高斯低通滤波器的传递函数为:;Matlab自带了低通滤波器函数lpfilter;它的源代码如下:

    function H = lpfilter(type, M, N, D0, n)
    %LPFILTER Computes frequency domain lowpass filters.
    %   H = LPFILTER(TYPE, M, N, D0, n) creates the transfer function of
    %   a lowpass filter, H, of the specified TYPE and size (M-by-N). To
    %   view the filter as an image or mesh plot, it should be centered
    %   using H = fftshift(H). 
    %
    %   Valid values for TYPE, D0, and n are:
    %
    %   'ideal'    Ideal lowpass filter with cutoff frequency D0. n need
    %              not be supplied.  D0 must be positive.
    %
    %   'btw'      Butterworth lowpass filter of order n, and cutoff
    %              D0.  The default value for n is 1.0.  D0 must be
    %              positive.
    %
    %   'gaussian' Gaussian lowpass filter with cutoff (standard
    %              deviation) D0.  n need not be supplied.  D0 must be
    %              positive. 
    [U, V] = dftuv(M, N);
    
    
    % Compute the distances D(U, V).
    D = sqrt(U.^2 + V.^2);
    
    
    % Begin filter computations.
    switch type
    case 'ideal'
       H = double(D <= D0);
    case 'btw'
       if nargin == 4
          n = 1; 
       end
       H = 1./(1 + (D./D0).^(2*n));
    case 'gaussian'
       H = exp(-(D.^2)./(2*(D0^2)));
    otherwise
       error('Unknown filter type.')
    end

            为了防止傅里叶变换时由于周期性而导致的相邻周期之间的干扰,需要对输入图像进行0填充,对应于时域滤波中的imfilter函数中的“symmetric”选项。频域中采用paddedsize函数来实现。频域高斯低通滤波的matlab代码如下:

    f = imread('NoiseImage.jpg');
    subplot(221)
    imshow(f);title('原图')
    f_r = f(:,:,1);
    f_g = f(:,:,2);
    f_b = f(:,:,3);
    [M,N] = size(f_r);
    sig1 = 50;                                   %%截止频率
    PQ = paddedsize(size(f_r));                 %%确定输入图像补0后的边界大小       
    Fp_r = fft2(f_r,PQ(1),PQ(2));               %% R通道傅里叶变换
    Fp_g = fft2(f_g,PQ(1),PQ(2));              
    Fp_b = fft2(f_b,PQ(1),PQ(2));
    Hp1 = lpfilter('gaussian',PQ(1),PQ(2),2*sig1); %%生成高斯低通滤波,
    Gp_r1 = Hp1.*Fp_r;                             %% R通道高斯低通滤波
    Gp_g1 = Hp1.*Fp_g;
    Gp_b1 = Hp1.*Fp_b;
    gp_r1 = real(ifft2(Gp_r1));                    %% 取得R通道的傅里叶反变换;
    gp_g1 = real(ifft2(Gp_g1));
    gp_b1 = real(ifft2(Gp_b1));
    gpc_r1 = gp_r1(1:size(f,1),1:size(f,2));
    gpc_g1 = gp_g1(1:size(f,1),1:size(f,2));
    gpc_b1 = gp_b1(1:size(f,1),1:size(f,2));
    gpc1 = cat(3,gpc_r1,gpc_g1,gpc_b1);
    gpc1 = uint8(gpc1);
    subplot(222),imshow(gpc1);title('截止频率为50的低通滤波')
    %%下面计算截止频率为30的频域高斯低通滤波
    sig2 = 30;
    Hp2 = lpfilter('gaussian',PQ(1),PQ(2),2*sig2); %%生成高斯低通滤波,
    Gp_r2 = Hp2.*Fp_r;                             %% R通道高斯低通滤波
    Gp_g2 = Hp2.*Fp_g;
    Gp_b2 = Hp2.*Fp_b;
    gp_r2 = real(ifft2(Gp_r2));                    %% 取得R通道的傅里叶反变换;
    gp_g2 = real(ifft2(Gp_g2));
    gp_b2 = real(ifft2(Gp_b2));
    gpc_r2 = gp_r2(1:size(f,1),1:size(f,2));
    gpc_g2 = gp_g2(1:size(f,1),1:size(f,2));
    gpc_b2 = gp_b2(1:size(f,1),1:size(f,2));
    gpc2 = cat(3,gpc_r2,gpc_g2,gpc_b2);
    gpc2 = uint8(gpc2);
    subplot(223),imshow(gpc2);title('截止频率为30的低通滤波')
    %%下面计算截止频率为10的频域高斯低通滤波
    sig2 = 10;
    Hp3 = lpfilter('gaussian',PQ(1),PQ(2),2*sig2); %%生成高斯低通滤波,
    Gp_r3 = Hp3.*Fp_r;                             %% R通道高斯低通滤波
    Gp_g3 = Hp3.*Fp_g;
    Gp_b3 = Hp3.*Fp_b;
    gp_r3 = real(ifft2(Gp_r3));                    %% 取得R通道的傅里叶反变换;
    gp_g3 = real(ifft2(Gp_g3));
    gp_b3 = real(ifft2(Gp_b3));
    gpc_r3 = gp_r3(1:size(f,1),1:size(f,2));
    gpc_g3 = gp_g3(1:size(f,1),1:size(f,2));
    gpc_b3 = gp_b3(1:size(f,1),1:size(f,2));
    gpc3 = cat(3,gpc_r3,gpc_g3,gpc_b3);
    gpc3 = uint8(gpc3);
    subplot(224),imshow(gpc3);title('截止频率为10的低通滤波')
    仿真结果如下:

            高斯低通滤波虽然较为简单,个人觉得将它说的非常明白,还是有些困难,这与自己的表达能力差有很大的关系,以后要养成些博客的习惯,希望能够尽早提高。我还是习惯用时域滤波的方法,频域滤波可以将时域的卷积运算转化为频域乘积运算,然而时域转化为频域过程中的傅里叶计算同样耗费时间。时域运算是领域操作,而频域计算式整体操作,关于时域和频域孰优孰劣还有待进一步考究。

           高斯低通滤波应该是最基本的去噪手段,后面将进一步阐述双边滤波去噪、非局部均值去噪,以及核回归用于图像去噪。


    -------------------------------------------任何一个理论,无论它是简单还是复杂,都应该将它剖析的非常清楚,这样才有可能将复杂的问题简单化,首先要将自己说服,才有可能让别人信服----------------------------------------------



            


    展开全文
  • 图像去噪及Matlab实现

    万次阅读 多人点赞 2018-01-06 21:24:55
    图像去噪常用方法 图像去噪处理方法可分为空间域法和变换域法两大类。 基于离散余弦变换的图像去噪 一般而言,我们认为图像的噪声在离散余弦变换结果中处在其高频部分,而高频部分的幅值一般很小,利用...

    Github个人博客:https://joeyos.github.io

    图像去噪常用方法

    图像去噪处理方法可分为空间域法和变换域法两大类。

    基于离散余弦变换的图像去噪

    一般而言,我们认为图像的噪声在离散余弦变换结果中处在其高频部分,而高频部分的幅值一般很小,利用这一性质,就可以实现去噪。然而,同时会失去图像的部分细节。

    %读取图像
    X=imread('wangshi.jpg'); 
    X=rgb2gray(X);
    %读取图像尺寸
    [m,n]=size(X); 
    %给图像加噪
    Xnoised=imnoise(X,'speckle',0.01); 
    %输出加噪图像
    subplot(121); 
    imshow(Xnoised);
    %DCT变换
    Y=dct2(Xnoised); 
    I=zeros(m,n);
    %高频屏蔽
    I(1:m/3,1:n/3)=1; 
    Ydct=Y.*I;
    %逆DCT变换
    Y=uint8(idct2(Ydct)); 
    %结果输出
    subplot(122);
    imshow(Y);
    
    

    这里写图片描述

    基于小波变换的图像去噪

    小波去噪是小波变换较为成功的一类应用,其去噪的基本思路为:含噪图像-小波分解-分尺度去噪-小波逆变换-恢复图像。含噪信号经过预处理,然后利用小波变换把信号分解到各尺度中,在每一尺度下把属于噪声的小波系数去掉,保留并增强属于信号的小波系数,最后再经过小波逆变换恢复检测信号。比基于傅里叶变换的去噪方法好。

    clear;                 
    X=imread('life.jpg');            
    X=rgb2gray(X);
    subplot(221);          
    imshow(X);             
    title('原始图像');                  
    % 生成含噪图像并图示
    init=2055615866;       
    randn('seed',init);      
    X=double(X);
    % 添加随机噪声
    XX=X+8*randn(size(X));  
    subplot(222);             
    imshow(uint8(XX));              
    title(' 含噪图像 ');       
    %用小波函数coif2对图像XX进行2层
    % 分解
    [c,l]=wavedec2(XX,2,'coif2'); 
    % 设置尺度向量
    n=[1,2];                  
    % 设置阈值向量 , 对高频小波系数进行阈值处理
    p=[10.28,24.08]; 
    nc=wthcoef2('h',c,l,n,p,'s');
    % 图像的二维小波重构
    X1=waverec2(nc,l,'coif2');   
    subplot(223);              
    imshow(uint8(X1));                
    %colormap(map);            
    title(' 第一次消噪后的图像 '); 
    %再次对高频小波系数进行阈值处理
    mc=wthcoef2('v',nc,l,n,p,'s');
    % 图像的二维小波重构
    X2=waverec2(mc,l,'coif2');  
    subplot(224);             
    imshow(uint8(X2));               
    title(' 第二次消噪后的图像 ');   
    

    这里写图片描述

    展开全文
  • 图像去噪算法综述

    万次阅读 2019-03-22 16:43:18
    图像降噪算法总结 分析各种算法的优点和缺点 1、BM3D 降噪 2、DCT 降噪 3、PCA 降噪 4、K-SVD 降噪 5、非局部均值降噪 6、WNNM 降噪 7、基于主成分分析和双边滤波的图像降噪算法 8、小波变换 9、小波阈值降噪 10、...
  • 图像处理实例--图像去噪

    万次阅读 2017-08-24 16:12:58
    常见的噪声种类数字图像在获取、传输的过程中都可能会受到噪声的污染,常见的噪声主要有高斯噪声和椒盐噪声。其中,高斯噪声主要是由摄像机传感器元器件内部产生的,椒盐噪声主要是由图像切割所产生的黑白相间的亮暗...
  • 深度学习与图像去噪总结

    万次阅读 热门讨论 2018-05-20 18:47:35
    深度学习图像去噪发展概述 由于深度学习,特别是卷积神经网络(CNN)在图像识别等领域取得了较好的成果,近年来,基于深度学习的图像去噪方法也被提出并得到了发展。2008年,Viren Jain等提出用CNN处理自然图像的...
  • 图像去噪经典算法

    2014-08-15 10:18:07
    图像去噪经典算法.This source code provides an implementation of the BM3D image denoising.
  • 常用的图像去噪方法

    万次阅读 2018-06-04 09:49:56
    常用的图像去噪方法: ①高斯滤波:高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。 1.高斯滤波是平滑线性滤波器,...
  • 图像去噪算法

    千次阅读 2014-04-14 10:41:33
    一 背景   ...随着各种数字仪器和数码产品的普及,图像和视频已成为人类活动中最常用的信息载体,它们包含...然而在图像的获取、传输和存贮过程中常常会受到各种噪声的干扰和影响而使图像降质,并且图像预处理算法
  • 图像去噪算法简介

    千次阅读 2019-06-19 17:43:26
    一,背景 随着各种数字仪器和数码产品的普及,图像和视频已...然而在图像的获取、传输和存贮过程中常常会受到各种噪声的干扰和影响而使图像降质,并且图像预处理算法的好坏又直接关系到后续图像处理的效果,如图...
  • 自己编写的多种去噪方式对比,主要针对椒盐噪声做示例,实现了一种高水平论文中的去噪方法,利用ostu算法寻找阈值,基于阈值分割进行降噪
  • DATE: 2019-5-29【Tag:算法研究】 前言     图像增强是图像处理和计算机视觉中的一个重要的研究课题,主要作为图像预处理...本文主要概述图像增强中的图像去噪和图像锐化方向的主要方法及不同算法的本质理解。
  • 深度学习图像去噪算法总结

    千次阅读 2019-11-20 00:06:07
    目前图像去噪算法主要有下面几种方法: 数据预处理 网络结构 多任务结合和先验 1. 数据预处理 1.1 RAW vs RGB 现在越来越多的去噪方法应用于RAW域。RAW域与RGB域比起来,噪声模式更为简单,一般可以描述为泊松分布...
  • 这是基于Python编写的经典图像去噪算法BM3D,含源代码和范例。不依赖于作者原版的Matlab,开发使用更为友好,代码结构清晰。
  • 图像去噪是非常基础也是非常必要的研究,去噪常常在更高级的图像处理之前进行,是图像处理的基础。可惜的是,目前去噪算法并没有很好的解决方案,实际应用中,更多的是在效果和运算复杂度之间求得一个平衡,再一次...
  • BM3D图像去噪算法

    万次阅读 多人点赞 2016-06-08 10:57:52
    一、引言  一种非局部去噪方法Non-local method[1],可以归类到spatial method中,另外用的比较多的还有transform method,基于transform method的方法在image denoise中也取得了很好的... NLM去噪算法使用的是i
  • 本版本基于Matlab,是作者于2019年11月发布的最新版本,去噪效果良好,代码逻辑清晰。 算法主要包括三步骤: 相似块的3D变换,维纳协同滤波和反变换。
  • 一种图像去噪算法的实现

    千次阅读 2014-11-12 23:22:49
    最近几天APEC放假,正好看了一片有关image processing的文章。 名
  • 毕业设计的题目是小波去噪,参考了一些网上的资料,自己加以补充和修改,希望有用。
  • 基于深度学习的图像去噪算法研究 邓正林 电子科技大学
  • 用DnCNN网络进行图像去噪。网络中主要使用了批量归一化和ReLU
  • https://blog.csdn.net/SoaringLee_fighting/article/details/89152974
  • 该论文:Nonlinear total variation based noise removal algorithms发表于2006年,它提出了经典的全变差图像去噪算法。 论文原文(永久有效): 链接:https://pan.baidu.com/s/1ofavZdXmsWC7LZkZXsulRg 提取码:l1...
  • 数字图像去噪典型算法及matlab实现

    万次阅读 2017-02-15 19:58:14
    数字图像去噪典型算法及matlab实现
  • 基于稀疏表示的图像去噪算法研究,是一篇很不错的论文
  • 典型图像去噪算法

    2019-08-06 11:43:52
    典型图像去噪算法https://www5.cs.fau.de/en/research/software/idaa/
  • 空间域图像去噪算法

    千次阅读 2015-07-11 16:26:06
    图像去噪希望使用图像自身的冗余信息来去除图像噪声但不影响图像细节。下面主要介绍基于空间域高斯加权的三种去噪算法,分别为高斯滤波算法,双边滤波和非局部均值滤波,这三种算法随着复杂度的逐渐增大,对细节的...
  • 转载自:http://www.elecfans.com/d/679256.html1、图像噪声的成因图像在生成和传输过程中常常因受到各种噪声的干扰和影响而是图像...因此,为了抑制噪声,改善图像质量,便于更高层次的处理,必须对图像进行去噪预...
  • 数字图像处理,图像去噪算法简介

    万次阅读 2014-07-25 16:21:11
    随着各种数字仪器和数码产品的普及,图像和视频已成为人类活动中最常用的信息载体,它们包含着物体的大量信息,成为人们获取外界原始信息的主要途径。

空空如也

1 2 3 4 5 ... 20
收藏数 15,216
精华内容 6,086
关键字:

图像去噪