图像去噪_图像去噪matlab - CSDN
图像去噪 订阅
图像去噪是指减少数字图像中噪声的过程。现实中的数字图像在数字化和传输过程中常受到成像设备与外部环境噪声干扰等影响,称为含噪图像或噪声图像。噪声是图象干扰的重要原因。一幅图象在实际应用中可能存在各种各样的噪声,这些噪声可能在传输中产生,也可能在量化等处理中产生。 展开全文
图像去噪是指减少数字图像中噪声的过程。现实中的数字图像在数字化和传输过程中常受到成像设备与外部环境噪声干扰等影响,称为含噪图像或噪声图像。噪声是图象干扰的重要原因。一幅图象在实际应用中可能存在各种各样的噪声,这些噪声可能在传输中产生,也可能在量化等处理中产生。
信息
外文名
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 要是转载请标明出处
    展开全文
  • 深度学习与图像去噪总结

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

    深度学习图像去噪发展概述

    由于深度学习,特别是卷积神经网络(CNN)在图像识别等领域取得了较好的成果,近年来,基于深度学习的图像去噪方法也被提出并得到了发展。2008年,Viren Jain等提出用CNN处理自然图像的去噪问题[21],得到了与常规方法(如小波变换和马尔可夫随机场)相近或更优的结果。并说明了特定形式的CNN可以被视为图像去噪的马尔可夫模型推断的结果的一种近似,但是神经网络模型可以避免了马尔可夫模型在概率学习和推断过程中的计算困难,从而降低了计算的复杂度。在训练神经网络的过程中为了更加快速和准确的收敛,采取了逐层训练的方法。该方法网络结构如下图所示:

    这里写图片描述

    图2.1 Viren Jain等的图像去噪卷积神经网络模型(CN1和CN2区别于训练集的不同)

    该网络由四个隐含层组成,每个隐含层含有24个特征通道,每一个特征通道都与8个随机选择的上一层的特征通道相连接。该网络的卷积核大小为5×5,网络的损失函数为带噪图像经过神经网络去噪后的恢复图像和真实图像的误差平方和,即:。除了对噪声已知的情况进行训练和去噪,作者还测试了噪声未知情况下的去噪情况,将在σ=[0,100]的范围内随机变化的不同水平的噪声加入真实图像,并进行训练,此时将隐含层设置为5层,相对于传统方法也取得了较好的效果。

    2012年,Xie等利用栈式去噪自编码器(stacked denoising auto-encoder)进行图像去噪以及图像修复(image inpainting)[22],其网络结构为多层的全连接网络,如图2.2所示。

    这里写图片描述

    图2.2 栈式稀疏去噪自编码器(SSDA)

    为了将稀疏编码的思想和深度神经网络结合,作者提出了栈式稀疏去噪自编码器(stacked sparse denoising auto-encoder, SSDA),其损失函数如下: 
    这里写图片描述 
    其中KL散度中的ρ^ 代表隐含层激活函数输出的平均值,如果我们设定较小的ρ,则可以通过优化损失函数,使得每一层中被激活的神经元尽可能少,以此达到稀疏约束的目的。训练过程为逐层训练,每训练完一层后,将训练用的数据(带噪图像)和标签(真实图像)都通过该层,将输出送至下一层作为数据和标签进行训练。 
    Burger等人提出了用多层感知机(Multi Layer Perceptron,MLP)的方法实现神经网络去噪[23],并说明如果训练集足够,MLP模型可以达到图像去噪的当前最优水平。MLP模型对噪声类型不敏感,对于不同类型的噪声,只要对带有该类噪声的图像进行处理,即可得到较好的结果。作者认为,MLP相对于CNN的优点在于,MLP可以近似所有函数,而CNN可以学习到的函数相对有限。为了使MLP网络达到最优水平,训练网络应足够大,分割图像得到的区块大小应足够大,以及训练集也应足够大。该方法的一个不足之处为它无法适应不同强度的噪声,若将不同水平的噪声图像作为输入进行训练则无法达到对特定噪声进行训练时的结果。 
    2016年,Mao等提出了深度的卷积编解码网络应用于图像去噪[24]。编码(Encoding)和解码(Decoding)结构对称,且每隔较少层就存在一条由编码卷积层到与其对称的解码层的跨层连接。该网络结构如图2.3所示。该网络共采用了对称的10层卷积层,其中前5层为编码层,后5层为解码层。在该CNN网络的编码层中,每隔2层就用一条跳线将编码层连接到对称的解码层,因此可以直接进行正向和反向传播。从该网络开始,图像去噪神经网络层数开始向更深层发展。以前的神经网络层数普遍较浅,原因在于:一方面,与图像分类等问题只需要提取关键特征的任务不同,图像的复原要求图像的细节在网络传播中不能丢失,而网络层数变深可能会导致图像细节的丢失;另一方面,层数较深容易在训练过程中导致梯度弥散,不容易收敛到最优解。由于该网络采用了卷积和解卷积层间的跳线连接,因此可以较好的解决上述的问题,因此网络相对较深。

    这里写图片描述

    图2.3 卷积编解码去噪网络结构(示跳线)

    2017年,Zhang等提出用较深层的CNN网络,称为DnCNN[25],实现去噪,为了解决网络层数加深导致的梯度弥散效应,DnCNN并不对图像进行学习,而是以输出与噪声的l2范数为损失函数来训练网络。网络结构如图2.4所示。DnCNN网络可以视为一个残差学习的过程,这样可以较好的训练。在该网络中利用了BN层(Batch Normalization),实验表明BN层与残差学习共同使用可以提高模型的性能,DnCNN在不同噪声水平上训练,得到的结果要优于现在的最优结果,如BM3D等。

    这里写图片描述

    图2.4 DnCNN 网络结构

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

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

    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(' 第二次消噪后的图像 ');   
    

    这里写图片描述

    展开全文
  • 几种典型的图像去噪算法总结

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

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

    万次阅读 多人点赞 2020-04-26 11:15:19
    深度学习图像去噪发展概述
  • 图像去噪算法综述

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

    千次阅读 2019-06-19 17:43:26
    一,背景 随着各种数字仪器和数码产品的普及,图像和视频已...然而在图像的获取、传输和存贮过程中常常会受到各种噪声的干扰和影响而使图像降质,并且图像预处理算法的好坏又直接关系到后续图像处理的效果,如图...
  • PSNR计算两幅图像之间的相似度,评价的是一幅estimated的图像相对于原图像的噪声强度,这个概念的提出应该是针对图像压缩领域,在图像去噪领域由于没有原图做对比,只能是噪声图与降噪图做对比,似乎说服力要弱一些...
  • 基于MATLAB的图像去噪

    2018-05-03 02:25:20
    新人求用MATLAB实现小波变换和中值滤波结合去噪的源码,用来对灰度图像进行处理,MATLAB版本2016a
  • 常用的图像去噪方法

    万次阅读 2018-06-04 09:49:56
    常用的图像去噪方法: ①高斯滤波:高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。 1.高斯滤波是平滑线性滤波器,...
  • 深度学习、自编码器、低照度图像增强 Lore, Kin Gwn, Adedotun Akintayo, and Soumik Sarkar. "LLNet: A Deep Autoencoder Approach to Natural Low-light Image Enhancement." arXiv preprint arXiv:1511.03995 ...
  • 我们现在想要给图像去噪但是我们并没有基础知识,能不能推荐一些好的网站或好的视频,能关于图像去噪,并用C语言实现的?
  • opencv python 图像去噪

    千次阅读 2019-05-09 16:26:34
    opencv python 图像去噪文章目录: https://blog.csdn.net/Annihilation7/article/details/82718470 https://segmentfault.com/a/1190000015846441
  • Matlab图像去噪(中值和均值)

    万次阅读 多人点赞 2019-09-18 10:40:11
    简单概念图像去噪是数字图像处理中的重要环节和步骤。去噪效果的好坏直接影响到后续的图像处理工作如图像分割、边缘检测等。图像信号在产生、传输过程中都可能会受到噪声的污染,一般数字图像系统中的常见噪声主要有...
  • 小波图像去噪及matlab实例

    万次阅读 多人点赞 2017-03-09 15:10:48
    图像去噪  图像去噪是信号处理的一个经典问题,传统的去噪方法多采用平均或线性方法进行,常用的是维纳滤波,但是去噪效果不太好(维纳滤波在图像复原中的作用)。随着小波理论的日益完善,其以自身良好的时频特性...
  • Matlab均值滤波去噪

    万次阅读 2019-07-01 21:54:59
    以灰度图像eight.tif为例,向原始图像中加入高斯噪声,再对噪声图像调用均值滤波函数avefilt进行去噪。 I=imread('eight.tif'); G=imnoise(I,'gaussian'); after=avefilt(G,3); subplot(1,3,1); imshow...
  • NLM去噪算法实现

    万次阅读 2016-05-04 19:22:40
     本篇主要是对NLM去噪算法的实现总结。 参考论文:点击打开链接 基本原理  该算法的基本原理是:假设同一副图像上,有着很多相似的纹理;因此在有噪声的区域,可以通过某种方式情况下,将相似的纹理区域来替换...
  • 图像去噪 使用dct变换进行去噪

    千次阅读 2015-07-27 15:02:17
    因为噪声往往是高频部分,可以将图像转换到频域,进行高频处理: 把高频部分虑掉. %读取图像 X=imread('wangshi.jpg'); X=rgb2gray(X); %读取图像尺寸 [m,n]=size(X); %给图像加噪 Xnoised=imnoise(X,'speckle',...
1 2 3 4 5 ... 20
收藏数 14,074
精华内容 5,629
关键字:

图像去噪