精华内容
下载资源
问答
  • 离散小波变换可以把图像分解为一个低频分量 ,和三个高频分量 ,三个高频成分保持了图像的细节信息,如果图像噪声噪声也是高频信息,保留在高频分量里面。各个分量如下图所示: 在网络中,作者主要使用了三种...

    论文:Wavelet Integrated CNNs for Noise-Robust Image Classification, CVPR2020
    本文主要选自CSIG-CVPR 2020论文交流学术报告会上 Qiufu Li 的报告

    深度学习中的下采样(max-pooing, average-pooling, strided-convolution)通常会有两个不足:破坏了目标的基本结构、放大随机噪声。上采样操作同样容易受到影响。下面给出一个图示,A和B是两个区域,AP是max-pooling的结果,AW是小波处理的结果,可以看到max-pooling导致了结构的损失。而离散小波变换的处理结果要好很多,窗户的边缘和柱子的形状仍然保持的非常好。

    7f16c3cca981c354bf0162a38ad8be11.png

    离散小波变换可以把图像分解为一个低频分量

    ,和三个高频分量
    ,三个高频成分保持了图像的细节信息,如果图像的噪声,噪声也是高频信息,保留在高频分量里面。各个分量如下图所示:

    cf68e727063dd3cfa09216f3e4838a89.png

    在网络中,作者主要使用了三种操作替换,MaxPool 和 AvgPool 用 DWT

    ​ 替换,步长为2有卷积用步长为1的 DWT​
    替换。下图所示:

    69f16d7a30cd711b397179354e77084e.png

    在实验中,作者在ImageNet数据集上测试了三种小波,包括Haar小波,Cohen小波,Daubechies小波,可以看到Haar和Cohen可以提高分类的性能。Daubechies是一种非对称的小波,有时候会降低分类的性能。

    d87543bf3889f50481ed8c8e1d54260a.png

    同时,从loss上可以看出,加入小波以后,可以加速网络的训练。

    3760f1acc883563f752f4102c928b0a5.png

    下图是一个可视化的结果,每个子图的第一行是原网络的feature map,第二行是加入小波以后输出的feature map。从图中可以看出,原来的CNN网络输出的 feature map,背景含的噪声更多一些,目标结构被破坏的比较严重。加入小波以后,背景噪声明显被抵制,同时目标的结构更加完整。

    b374002a7a36b0ec7681da7c747e1337.png
    展开全文
  • 图像噪声

    2017-08-29 09:15:43
    图像噪声 标签: 图像处理图像噪声 2016-05-27 10:58 3341人阅读 评论(0) 收藏 举报 分类Matlab(36) 作者同类文章X Digital Image Processing(42) 作者同类文章X 版权声明:本文...

    Digital Image Processing


    1.1 图像噪声的概念与分类

          图像噪声是图像在摄取或传输时所受的随机信号干扰,是图像中各种妨碍人们对其信息接受的因素。很多时候将图像噪声看成是多维随机过程,因而描述噪声的方法完全可以借用随机过程的描述,即用其概率分布函数和概率密度分布函数。

    图像噪声是多种多样的,其性质也千差万别,所以了解噪声的分类是很有必要的。

    一.按产生的原因分类

          1.外部噪声,即指系统外部干扰以电磁波或经电源串进系统内部而引起的噪声。如电气设备,天体放电现象等引起的噪声。而这种噪声可能就是高斯噪声、脉冲噪声等多个噪声合成累计的。

          2.内部噪声,一般有四个源头:a)由光和电的基本性质所引起的噪声。如电流的产生是由电子或空穴粒子的集合,定向运动所形成。因这些粒子运动的随机性而形成的散粒噪声;导体中自由电子的无规则热运动所形成的热噪声;根据光的粒子性,图像是由光量子所传输,而光量子密度随时间和空间变化所形成的光量子噪声等。b)电器的机械运动产生的噪声。如各种接头因抖动引起电流变化所产生的噪声;磁头、磁带等抖动或一起的抖动等。 c)器材材料本身引起的噪声。如正片和负片的表面颗粒性和磁带磁盘表面缺陷所产生的噪声。随着材料科学的发展,这些噪声有望不断减少,但在目前来讲,还是不可避免的。 d)系统内部设备电路所引起的噪声。如电源引入的交流噪声;偏转系统和箝位电路所引起的噪声等。

    这种分类方法有助于理解噪声产生的源头,有助于对噪声位置定位,对于降噪算法只能起到原理上的帮助。

    二、按噪声频谱分类

    频谱均匀分布的噪声称为白噪声;频谱与频率成反比的称为 1/f噪声;而与频率平方成正比的称为三角噪声等等。

    三.按噪声与信号的关系分类

           1.加性噪声:加性嗓声和图像信号强度是不相关的,如运算放大器,又如图像在传输过程中引进的“信道噪声”电视摄像机扫描图像的噪声的,这类带有噪声的图像g可看成为理想无噪声图像f与噪声n之和;高斯噪声、瑞利噪声、指数噪声

         2.乘性噪声:乘性嗓声和图像信号是相关的,往往随图像信号的变化而变化,如飞点扫描图像中的嗓声、电视扫描光栅、胶片颗粒造成等,由于载送每一个象素信息的载体的变化而产生的噪声受信息本身调制。在某些情况下,如信号变化很小,噪声也不大。

    为了分析处理方便,常常将乘性噪声近似认为是加性噪声,而且总是假定信号和噪声是互相统计独立。

    四.按概率密度函数(PDF)分类

          这是比较重要的,主要因为引入数学模型,这就有助于运用数学手段去除噪声。如果将一个系统的所有噪声比喻成一个人,则上面的的分法是只能说明人由胳膊腿组成或者人由毛发血肉组成;而第四点分法是说明人由不同的细胞组成,不同的细胞构成了胳膊毛发,同样我们由血肉腿也能推出它里面可能包含哪些细胞,对于不同细胞的改造方法是不同的,这个层面上的分法保证了有的放矢。当然,能不能再找到分子层面、原子层面的分法就是人类发展了

         1.高斯噪声:在空间域和频域中,由于高斯噪声(也称为正态噪声)在数学上的易处理性,这种噪声模型经常被用于实践中。与椒盐噪声相似,高斯噪声(gaussnoise)也是数字图像的一个常见噪声,产生该噪声的算法也很简单。上次说过,椒盐噪声是出现在随机位置、噪点深度基本固定的噪声,高斯噪声与其相反,是几乎每个点上都出现噪声、噪点深度随机的噪声。

         2.瑞利噪声:瑞利密度对于近似偏移的直方图十分适用。

         3.伽马(爱尔兰)噪声

         4.指数分布噪声

         5.均匀分布噪声

         6.脉冲噪声(椒盐噪声):双极脉冲噪声也称为椒盐噪声,有时也称为散粒和尖峰噪声。椒盐噪声是出现在随机位置、噪点深度基本固定的噪声,椒盐,按我的理解,椒就是黑,盐就是白,椒盐噪声就是在图像上随机出现黑色白色的像素。那么传入两个参数,分别为黑白像素在图像上所占比例,就可以对图像进行修改。我们可以使用srand 函数,根据time 产生一个随机种子(以免每次随机的结果相同),然后使用rand 函数产生随机数,rand产生的随机数是0 到RAND_MAX 之间的整数,可以通过使用 double (rand ()) / RAND_MAX 产生一个0 到1 之间的浮点型。这样,当这个随机数小于pepper 时,就把该点调黑,大于1 –salt 时,就把该点调白,就可以产生随机的椒盐噪声了。椒盐噪声既不属于加性噪声也不属于乘性噪声。

    这种分类方法由于引入数学模型,就有助于运用数学手段去除噪声。

    五、按与图像像素关系分类

       无关噪声是指整幅图像的噪声统计特性是一致的,与图像像素的位置和像素亮度值有关系。在去噪时为了简化算法,经常基于这种假设。

       相关噪声是指噪声与图像空间相关或与图形像素亮度值相关,由图像捕获器得到的图像上叠加的噪声几乎都是相关噪声。一般受摄像机的特性影响,往往图像的较暗部分噪声大,较亮部分噪声小。

    六、图像去噪效果的评价方法

     评价图像去噪效果的目的在于更好地认识算法的功能和不足,或取长补短以求改进,或深入思索以求创新。一般来说,评价去噪后的图像一般需要考虑3方面的内容:1.噪声衰减程度2.边缘保持程度3,区域平滑程度。理论上讲,去嗓后的图像应该尽可能地衰减噪声,保持图像边缘鲜明,尽可能地平滑区域。简言之就是“去噪保鲜”。评价图像去噪的方法可以分为两类:主观评价法和客观评价法。

    (1)    主观评价法

    主观评价法主要是通过观察者对图像的视觉观察或者主观理解来对图像处理结果的优劣进行评价。它又可以分为两种类型:绝对评价和相对评价。前者是直接对图像进行判断,后者是将处理结果和原图像进行比较或者对多种方法处理的结果进行比较来评价处理效果的优劣。对图像作主观评价的人也分为两类:一是内行观察者,也称为专业观察者,他们是图像应用在某一领域的专家,熟知图像在该领域所要表达的倍息特点,如图像处理的程序开发人员等;另外一个是外行观察者,他们大都仅从视觉审美的角度观察图像,从某种意义上也对图像处理效果的评价起到积极作用。

    (2)客观评价法

      客观评价法主要是通过计算一些量化的指标或者通过描绘能反映图像自身性能的曲线来评价图像处理效果的方法。这里所说的量化指标是一些能反映图像特性的数字值,如图像的方差,均值,信噪比等。按照上面所说的对去嗓的图像应从3方面考虑,可以采用如下的数字指标来客观评价去噪效果。

    七、双边滤波器

          双边滤波最先是由Tomasi和Manduchi提出的[13]。双边滤波器对图像的每一点计算其空间相邻且灰度相近的像素值的加权平均,再用它替换掉像素点原来的值,从而达到滤波的效果。在图像灰度变化平缓的区域(小的邻域内灰度变化不大),双边滤波器转化为标准的低通空域滤波器;而在图像灰度变化剧烈的区域,比如在~个二值倒像的边缘上,灰度域影响函数在灰度值相同的一边为1,而在灰度值不同的一边近似于0,滤波器用边缘点邻域内灰度近似的像素点的灰度平均值替代原灰度值。这样,双边滤波既可以达到去噪的效果又可以保留图像的细节,是一种具有应用价值的非线性滤波方法。

      双边滤波是一种保留边缘的图像平滑技术.文[14]分析了双边滤波与各向异性传播的关系。文[15]从线性代数的角度讨论了双边滤波、各向异性传播与鲁棒统计之间的关系。文[16]进一步从鲁棒统计的角度为双边滤波提供了一个理论框架,在理论上证明了空间域影响函数。f和灰度域影响函数g采用高斯形式对野点具有更好的鲁棒性,能更好地保留边缘。

     

    7
    0

    展开全文
  • 1.研究噪声特性的必要... 本文的内容主要介绍了常见噪声分类与其特性。将噪声建模,然后用模型去实现各式各样的噪声。  实际生活中的各种照片的老化,都可以归结为以下老化模型。  这个模型很简

    转自:http://blog.csdn.net/zhoufan900428/article/details/37695357


    1.研究噪声特性的必要性


            本文的内容主要介绍了常见噪声的分类与其特性。将噪声建模,然后用模型去实现各式各样的噪声。

            实际生活中的各种照片的老化,都可以归结为以下老化模型。


         这个模型很简单,也可以直接用以下公式来表达。


    在频域内,用以下公式区表示。


         根据以上式子,可以看出,老旧照片的复原,主要分为两个任务,一个是去噪;另一个是去卷积,或者称为逆滤波,也就是将老化滤波器做反处理。

         本文首先由噪声类型与其建模。随后的博文,会介绍几种基础的去噪方法和基础的逆滤波方法。

        

    2.噪声的实现

          2.1    评价用图像与其直方图

            

          2.2  高斯噪声

            高斯噪声,也称为正态噪声,其统计特性服从正态分布。一种较为泛用的噪声模型。 
            Matlab的实现较为简单,Matlab已经有一个randn(M,N)的函数,用其可以产生出均值为0、方差为1、尺寸为M X N像素的高斯噪声图像。
            用以下程序就可以产生任意均值和方差的高斯噪声。

    [plain] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. a = 0;  
    2. b = 0.08;  
    3. n_gaussian = a + b .* randn(M,N);  

             

            2.3 瑞利噪声

            瑞利噪声相比高斯噪声而言,其形状向右歪斜,这对于拟合某些歪斜直方图噪声很有用。

            瑞利噪声的实现可以借由平均噪声来实现。如下所示。


    这里的表示均值为0,方差为1的均匀分布的噪声。Matlab里,使用函数rand(M,N)就可以产生一个均值为0,方差为1的均匀噪声。

    [plain] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. a = -0.2;  
    2. b = 0.03;  
    3. n_rayleigh = a + (-b .* log(1 - rand(M,N))).^0.5;  

            

           2.4 伽马噪声

             伽马噪声的分布,服从了伽马曲线的分布。伽马噪声的实现,需要使用b个服从指数分布的噪声叠加而来。指数分布的噪声,可以使用均匀分布来实现。


    使用若干个(这里用b表示)均匀分布叠加,就可以得到伽马噪声。


    当然,当b=1的时候,就可以得到指数噪声了。

    [plain] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. a = 25;  
    2. b = 3;  
    3. n_Erlang = zeros(M,N);   
    4.   
    5. for j=1:b  
    6.     n_Erlang = n_Erlang + (-1/a)*log(1 - rand(M,N));  
    7. end  



             2.5 均匀噪声

                 如同前面所示,均匀噪声可以由函数rand(M,N)直接产生。


    [plain] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. a = 0;  
    2. b = 0.3;  
    3. n_Uniform = a + (b-a)*rand(M,N);  

             2.6 椒盐噪声

             椒盐噪声也成为双脉冲噪声。在早期的印刷电影胶片上,由于胶片化学性质的不稳定和播放时候的损伤,会使得胶片表面的感光材料和胶片的基底欠落,在播放时候,产生一些或白或黑的损伤。事实上,这也可以归结为特殊的椒盐噪声。

            椒盐噪声的实现,需要一些逻辑判断。这里我们的思路是,产生均匀噪声,然后将超过阈值的点设置为黑点,或白点。当然,如果需要拟合电影胶片的损伤的话,可以选用别的类型噪声去拟合。

           

    [plain] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. a = 0.05;  
    2. b = 0.05;  
    3. x = rand(M,N);  
    4.   
    5. g_sp = zeros(M,N);  
    6. g_sp = f;  
    7.   
    8. g_sp(find(x<=a)) = 0;  
    9. g_sp(find(x > a & x<(a+b))) = 1;  



    3.总结

         本文,实现的几类较为基本的噪声。并给出了其实现的方法,代码在下面。下一篇博文,会进行几个常用去噪滤波器的比较。

       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      72
      73
      74
      75
      76
      77
      78
      79
      80
      81
      82
      83
      84
      85
      86
      87
      88
      89
      90
      91
      92
      93
      94
      95
      96
      97
      98
      99
     100
     101
     102
     103
     104
     105
     106
     107
     108
     109
     110
     111
     112
     113
     114
     115
     116
     117
     118
     119
     120
     121
     122
     123
     124
     125
     126
     127
     128
     129
     130
     131
     132
     133
     134
     135
     136
     137
     138
     139
     140
     141
     142
     143
     144
     145
     146
     147
     148
     149
     150
     151
     152
     153
     154
     155
     156
     157
     158
     159
     160
     161
     162
     163
     164
     165
     166
     167
     168
     169
     170
     171
     172
     173
    close all;
    clear all;
    clc;
    f = imread('./original_pattern.tif');
    f = mat2gray(f,[0 255]);
    [M,N] = size(f);
    figure();
    subplot(1,2,1);
    imshow(f,[0 1]);
    xlabel('a).Original image');
    subplot(1,2,2);
    x = linspace(-0.2,1.2,358);
    h = hist(f,x)/(M*N);
    Histogram = zeros(358,1);
    for y = 1:256
    Histogram = Histogram + h(:,y);
    end
    bar(-0.2:1/255:1.2,Histogram);
    axis([-0.2 1.2 0 0.014]),grid;
    xlabel('b).The Histogram of a');
    ylabel('Number of pixels');
    %% ---------------gaussian-------------------
    a = 0;
    b = 0.08;
    n_gaussian = a + b .* randn(M,N);
    g_gaussian = f + n_gaussian;
    figure();
    subplot(1,2,1);
    imshow(g_gaussian,[0 1]);
    xlabel('a).Ruselt of Gaussian noise');
    subplot(1,2,2);
    x = linspace(-0.2,1.2,358);
    h = hist(g_gaussian,x)/(M*N);
    Histogram = zeros(358,1);
    for y = 1:256
    Histogram = Histogram + h(:,y);
    end
    bar(-0.2:1/255:1.2,Histogram);
    axis([-0.2 1.2 0 0.014]),grid;
    xlabel('b).The Histogram of a');
    ylabel('Number of pixels');
    %% ---------------rayleigh-------------------
    a = -0.2;
    b = 0.03;
    n_rayleigh = a + (-b .* log(1 - rand(M,N))).^0.5;
    g_rayleigh = f + n_rayleigh;
    figure();
    subplot(1,2,1);
    imshow(g_rayleigh,[0 1]);
    xlabel('a).Ruselt of Rayleigh noise');
    subplot(1,2,2);
    x = linspace(-0.2,1.2,358);
    h = hist(g_rayleigh,x)/(M*N);
    Histogram = zeros(358,1);
    for y = 1:256
    Histogram = Histogram + h(:,y);
    end
    bar(-0.2:1/255:1.2,Histogram);
    axis([-0.2 1.2 0 0.014]),grid;
    xlabel('b).The Histogram of a');
    ylabel('Number of pixels');
    %% ---------------Erlang-------------------
    a = 25;
    b = 3;
    n_Erlang = zeros(M,N);
    for j=1:b
    n_Erlang = n_Erlang + (-1/a)*log(1 - rand(M,N));
    end
    g_Erlang = f + n_Erlang;
    figure();
    subplot(1,2,1);
    imshow(g_Erlang,[0 1]);
    xlabel('a).Ruselt of Erlang noise');
    subplot(1,2,2);
    x = linspace(-0.2,1.2,358);
    h = hist(g_Erlang,x)/(M*N);
    Histogram = zeros(358,1);
    for y = 1:256
    Histogram = Histogram + h(:,y);
    end
    bar(-0.2:1/255:1.2,Histogram);
    axis([-0.2 1.2 0 0.014]),grid;
    xlabel('b).The Histogram of a');
    ylabel('Number of pixels');
    %% ---------------Exponential-------------------
    a = 9;
    n_Ex = (-1/a)*log(1 - rand(M,N));
    g_Ex = f + n_Ex;
    figure();
    subplot(1,2,1);
    imshow(g_Ex,[0 1]);
    xlabel('a).Ruselt of Exponential noise');
    subplot(1,2,2);
    x = linspace(-0.2,1.2,358);
    h = hist(g_Ex,x)/(M*N);
    Histogram = zeros(358,1);
    for y = 1:256
    Histogram = Histogram + h(:,y);
    end
    bar(-0.2:1/255:1.2,Histogram);
    axis([-0.2 1.2 0 0.014]),grid;
    xlabel('b).The Histogram of a');
    ylabel('Number of pixels');
    %% ---------------Uniform-------------------
    a = 0;
    b = 0.3;
    n_Uniform = a + (b-a)*rand(M,N);
    g_Uniform = f + n_Uniform;
    figure();
    subplot(1,2,1);
    imshow(g_Uniform,[0 1]);
    xlabel('a).Ruselt of Uniform noise');
    subplot(1,2,2);
    x = linspace(-0.2,1.2,358);
    h = hist(g_Uniform,x)/(M*N);
    Histogram = zeros(358,1);
    for y = 1:256
    Histogram = Histogram + h(:,y);
    end
    bar(-0.2:1/255:1.2,Histogram);
    axis([-0.2 1.2 0 0.014]),grid;
    xlabel('b).The Histogram of a');
    ylabel('Number of pixels');
    %% ---------------Salt & pepper-------------------
    a = 0.05;
    b = 0.05;
    x = rand(M,N);
    g_sp = zeros(M,N);
    g_sp = f;
    g_sp(find(x<=a)) = 0;
    g_sp(find(x > a & x<(a+b))) = 1;
    figure();
    subplot(1,2,1);
    imshow(g_sp,[0 1]);
    xlabel('a).Ruselt of Salt & pepper noise');
    subplot(1,2,2);
    x = linspace(-0.2,1.2,358);
    h = hist(g_sp,x)/(M*N);
    Histogram = zeros(358,1);
    for y = 1:256
    Histogram = Histogram + h(:,y);
    end
    bar(-0.2:1/255:1.2,Histogram);
    axis([-0.2 1.2 0 0.3]),grid;
    xlabel('b).The Histogram of a');
    ylabel('Number of pixels');
     来自CODE的代码片

    展开全文
  •  本文的内容主要介绍了常见噪声分类与其特性。将噪声建模,然后用模型去实现各式各样的噪声。  实际生活中的各种照片的老化,都可以归结为以下老化模型。  这个模型很简单,也可以直接用以下公式来表达。 ...

    1.研究噪声特性的必要性

            本文的内容主要介绍了常见噪声的分类与其特性。将噪声建模,然后用模型去实现各式各样的噪声。

            实际生活中的各种照片的老化,都可以归结为以下老化模型。


         这个模型很简单,也可以直接用以下公式来表达。


    在频域内,用以下公式区表示。


         根据以上式子,可以看出,老旧照片的复原,主要分为两个任务,一个是去噪;另一个是去卷积,或者称为逆滤波,也就是将老化滤波器做反处理。

         本文首先由噪声类型与其建模。随后的博文,会介绍几种基础的去噪方法和基础的逆滤波方法。

        

    2.噪声的实现

          2.1    评价用图像与其直方图

            

          2.2  高斯噪声

            高斯噪声,也称为正态噪声,其统计特性服从正态分布。一种较为泛用的噪声模型。 
            Matlab的实现较为简单,Matlab已经有一个randn(M,N)的函数,用其可以产生出均值为0、方差为1、尺寸为M X N像素的高斯噪声图像。
            用以下程序就可以产生任意均值和方差的高斯噪声。

    [plain] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. a = 0;  
    2. b = 0.08;  
    3. n_gaussian = a + b .* randn(M,N);  

    来自另一种写法:
    randn('seed', 0);
    noisy = original + sigma*randn(size(original));
             

            2.3 瑞利噪声

            瑞利噪声相比高斯噪声而言,其形状向右歪斜,这对于拟合某些歪斜直方图噪声很有用。

            瑞利噪声的实现可以借由平均噪声来实现。如下所示。


    这里的表示均值为0,方差为1的均匀分布的噪声。Matlab里,使用函数rand(M,N)就可以产生一个均值为0,方差为1的均匀噪声。

    [plain] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. a = -0.2;  
    2. b = 0.03;  
    3. n_rayleigh = a + (-b .* log(1 - rand(M,N))).^0.5;  

            

           2.4 伽马噪声

             伽马噪声的分布,服从了伽马曲线的分布。伽马噪声的实现,需要使用b个服从指数分布的噪声叠加而来。指数分布的噪声,可以使用均匀分布来实现。


    使用若干个(这里用b表示)均匀分布叠加,就可以得到伽马噪声。


    当然,当b=1的时候,就可以得到指数噪声了。

    [plain] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. a = 25;  
    2. b = 3;  
    3. n_Erlang = zeros(M,N);   
    4.   
    5. for j=1:b  
    6.     n_Erlang = n_Erlang + (-1/a)*log(1 - rand(M,N));  
    7. end  



             2.5 均匀噪声

                 如同前面所示,均匀噪声可以由函数rand(M,N)直接产生。


    [plain] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. a = 0;  
    2. b = 0.3;  
    3. n_Uniform = a + (b-a)*rand(M,N);  

             2.6 椒盐噪声

             椒盐噪声也成为双脉冲噪声。在早期的印刷电影胶片上,由于胶片化学性质的不稳定和播放时候的损伤,会使得胶片表面的感光材料和胶片的基底欠落,在播放时候,产生一些或白或黑的损伤。事实上,这也可以归结为特殊的椒盐噪声。

            椒盐噪声的实现,需要一些逻辑判断。这里我们的思路是,产生均匀噪声,然后将超过阈值的点设置为黑点,或白点。当然,如果需要拟合电影胶片的损伤的话,可以选用别的类型噪声去拟合。

           

    [plain] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. a = 0.05;  
    2. b = 0.05;  
    3. x = rand(M,N);  
    4.   
    5. g_sp = zeros(M,N);  
    6. g_sp = f;  
    7.   
    8. g_sp(find(x<=a)) = 0;  
    9. g_sp(find(x > a & x<(a+b))) = 1;  



    3.总结

         本文,实现的几类较为基本的噪声。并给出了其实现的方法,代码在下面。下一篇博文,会进行几个常用去噪滤波器的比较。
    close all;
    clear all;
    clc;
    
    f = imread('./original_pattern.tif');
    f = mat2gray(f,[0 255]);
    [M,N] = size(f);
    
    figure();
    subplot(1,2,1);
    imshow(f,[0 1]);
    xlabel('a).Original image');
    
    subplot(1,2,2);
    x = linspace(-0.2,1.2,358);
    h = hist(f,x)/(M*N);
    Histogram = zeros(358,1);
    for y = 1:256
        Histogram = Histogram + h(:,y);
    end
    bar(-0.2:1/255:1.2,Histogram);
    axis([-0.2 1.2 0 0.014]),grid;
    xlabel('b).The Histogram of a');
    ylabel('Number of pixels');
    %% ---------------gaussian-------------------
    a = 0;
    b = 0.08;
    n_gaussian = a + b .* randn(M,N);
    
    g_gaussian = f + n_gaussian; 
    
    figure();
    subplot(1,2,1);
    imshow(g_gaussian,[0 1]);
    xlabel('a).Ruselt of Gaussian noise');
    
    subplot(1,2,2);
    x = linspace(-0.2,1.2,358);
    h = hist(g_gaussian,x)/(M*N);
    Histogram = zeros(358,1);
    for y = 1:256
        Histogram = Histogram + h(:,y);
    end
    bar(-0.2:1/255:1.2,Histogram);
    axis([-0.2 1.2 0 0.014]),grid;
    xlabel('b).The Histogram of a');
    ylabel('Number of pixels');
    
    %% ---------------rayleigh-------------------
    a = -0.2;
    b = 0.03;
    n_rayleigh = a + (-b .* log(1 - rand(M,N))).^0.5;
    
    g_rayleigh = f + n_rayleigh; 
    
    figure();
    subplot(1,2,1);
    imshow(g_rayleigh,[0 1]);
    xlabel('a).Ruselt of Rayleigh noise');
    
    subplot(1,2,2);
    x = linspace(-0.2,1.2,358);
    h = hist(g_rayleigh,x)/(M*N);
    Histogram = zeros(358,1);
    for y = 1:256
        Histogram = Histogram + h(:,y);
    end
    bar(-0.2:1/255:1.2,Histogram);
    axis([-0.2 1.2 0 0.014]),grid;
    xlabel('b).The Histogram of a');
    ylabel('Number of pixels');
    %% ---------------Erlang-------------------
    a = 25;
    b = 3;
    n_Erlang = zeros(M,N); 
    
    for j=1:b
        n_Erlang = n_Erlang + (-1/a)*log(1 - rand(M,N));
    end
    
    g_Erlang = f + n_Erlang; 
    
    figure();
    subplot(1,2,1);
    imshow(g_Erlang,[0 1]);
    xlabel('a).Ruselt of Erlang noise');
    
    subplot(1,2,2);
    x = linspace(-0.2,1.2,358);
    h = hist(g_Erlang,x)/(M*N);
    Histogram = zeros(358,1);
    for y = 1:256
        Histogram = Histogram + h(:,y);
    end
    bar(-0.2:1/255:1.2,Histogram);
    axis([-0.2 1.2 0 0.014]),grid;
    xlabel('b).The Histogram of a');
    ylabel('Number of pixels');
    
    %% ---------------Exponential-------------------
    a = 9;
    n_Ex = (-1/a)*log(1 - rand(M,N)); 
    
    g_Ex = f + n_Ex;
    
    figure();
    subplot(1,2,1);
    imshow(g_Ex,[0 1]);
    xlabel('a).Ruselt of Exponential noise');
    
    subplot(1,2,2);
    x = linspace(-0.2,1.2,358);
    h = hist(g_Ex,x)/(M*N);
    Histogram = zeros(358,1);
    for y = 1:256
        Histogram = Histogram + h(:,y);
    end
    bar(-0.2:1/255:1.2,Histogram);
    axis([-0.2 1.2 0 0.014]),grid;
    xlabel('b).The Histogram of a');
    ylabel('Number of pixels');
    
    %% ---------------Uniform-------------------
    a = 0;
    b = 0.3;
    n_Uniform = a + (b-a)*rand(M,N);
    
    g_Uniform = f + n_Uniform;
    
    figure();
    subplot(1,2,1);
    imshow(g_Uniform,[0 1]);
    xlabel('a).Ruselt of Uniform noise');
    
    subplot(1,2,2);
    x = linspace(-0.2,1.2,358);
    h = hist(g_Uniform,x)/(M*N);
    Histogram = zeros(358,1);
    for y = 1:256
        Histogram = Histogram + h(:,y);
    end
    bar(-0.2:1/255:1.2,Histogram);
    axis([-0.2 1.2 0 0.014]),grid;
    xlabel('b).The Histogram of a');
    ylabel('Number of pixels');
    
    %% ---------------Salt & pepper-------------------
    a = 0.05;
    b = 0.05;
    x = rand(M,N);
    
    g_sp = zeros(M,N);
    g_sp = f;
    
    g_sp(find(x<=a)) = 0;
    g_sp(find(x > a & x<(a+b))) = 1;
    
    figure();
    subplot(1,2,1);
    imshow(g_sp,[0 1]);
    xlabel('a).Ruselt of Salt & pepper noise');
    
    subplot(1,2,2);
    x = linspace(-0.2,1.2,358);
    h = hist(g_sp,x)/(M*N);
    Histogram = zeros(358,1);
    for y = 1:256
        Histogram = Histogram + h(:,y);
    end
    bar(-0.2:1/255:1.2,Histogram);
    axis([-0.2 1.2 0 0.3]),grid;
    xlabel('b).The Histogram of a');
    ylabel('Number of pixels');

    原文发于博客:http://blog.csdn.net/thnh169/ 




    参考资源:

    【1】原作者,zhoufan900428原文地址:http://blog.csdn.net/zhoufan900428/article/details/37695357

    展开全文
  • 本文的内容主要介绍了常见噪声分类与其特性。将噪声建模,然后用模型去实现各式各样的噪声。 实际生活中的各种照片的老化,都能够归结为下面老化模型。 这个模型非常easy,也能够直接用下面公式来表达。 ...
  • MATLAB图像增强

    2020-09-10 14:21:23
    分类 图像增强可分成两大类:频率域法和空间域法。 前者把图像看成一种二维信号,对其进行基于二维傅里叶变换的信号增强。采用低通滤波(即只让低频信号通过)法,可去掉图中的噪声;采用高通滤波法,则
  • IVHC(快速图像噪声估计) 这是在Python和Matlab上的实现。 另请参阅 。 IVHC是一个模型,用于估计图像和视频信号中的高斯噪声,与信号有关的噪声和经过处理的噪声。 该估计基于图像斑块的强度变化的分类,以便找到...
  • SAR滤波MATLAB程序所属分类:图形图像处理开发工具:matlab文件大小:1613KB下载次数:28上传日期:2018-03-20 17:21:52上 传 者:pumpking说明:孔径雷达图像固有的相干斑噪声严重降低了图像的可解译程度,影响了...
  • 灰度图像形状的识别分类算法实现matlab

    万次阅读 多人点赞 2016-07-22 20:58:55
    摘 要: 针对已经给出的图像,在分类之前,因为存在噪声和光照的不同,所以要先进行图像增强,并统一将图像转为二值图像。对图像进行边缘检测,可以很容易算出各个图像面积与周长二次方的比值关系,对图像进行直线...
  • 一、简介 1974年,法国工程师J.Morlet首先提出小波变换的概念,1986年著名...在图像处理方面的图像压缩、分类、识别与诊断,去噪声等。本章将着重阐述小波在图像中的应用分析。 1 小波变换原理 小波分析是一个比较难的
  • 一、简介 1974年,法国工程师J.Morlet首先提出小波变换的概念,1986年著名...在图像处理方面的图像压缩、分类、识别与诊断,去噪声等。本章将着重阐述小波在图像中的应用分析。 1 小波变换原理 小波分析是一个比较难的
  • 一、简介 1974年,法国工程师J.Morlet首先提出小波变换的概念,1986年著名...在图像处理方面的图像压缩、分类、识别与诊断,去噪声等。本章将着重阐述小波在图像中的应用分析。 1 小波变换原理 小波分析是一个比较难的
  • 滤波是图像处理中常用的技术,可以锐化图像、模糊图像、去除噪声、增强图像等等。这里只讲空间滤波,频率域滤波将在以后讲。空间滤波:简单来说,是用一个模板(3x3矩阵、5x5矩阵…一般为奇数)扣在图像上,用模板中...
  • MATLAB数字图像处理(3)滤波

    千次阅读 2017-09-23 21:08:30
    滤波是图像处理中常用的技术,可以锐化图像、模糊图像、去除噪声、增强图像等等。这里只讲空间滤波,频率域滤波将在以后讲。 空间滤波:简单来说,是用一个模板(3x3矩阵、5x5矩阵…一般为奇数)扣在图像上,用...
  • 数字图像处理;第6章 图像恢复 ;前 言 ;6.1退化模型及恢复技术基础- 退化的原因 ;6.1退化模型及恢复技术基础-退化模型 ;6.1退化模型及恢复技术基础- 恢复技术的概念及分类 ;6.1退化模型及恢复技术基础- 恢复技术的...
  • 一、简介 1974年,法国工程师J.Morlet首先提出小波变换的概念,1986年著名...在图像处理方面的图像压缩、分类、识别与诊断,去噪声等。本章将着重阐述小波在图像中的应用分析。 1 小波变换原理 小波分析是一个比较难
  • 一、简介 1974年,法国工程师J.Morlet首先提出小波变换的概念,1986年著名...在图像处理方面的图像压缩、分类、识别与诊断,去噪声等。本章将着重阐述小波在图像中的应用分析。 1 小波变换原理 小波分析是一个比较难
  • 1.图像退化,图像噪声 :imnose()函数 2.图像复原及方法分类:  deconvwnr():利用维纳滤波器  deconvwreg():股则化滤波器  deconvlucy():lucy_Richardson  deconvbind():盲反卷积滤波
  • 常用的一些图像处理Matlab源代码

    千次阅读 2014-12-17 14:34:55
    常用的一些图像处理Matlab源代码 梦里嗣音 发布于:2012 年 05 月 18 日 11 时 07 分 | 分类: IT 频道 | 2,364 views #1:数字图像矩阵数据的显示及其傅立叶变换 #2:二维离散余弦变换的图像压缩 #3...
  • 低级:包括原始操作,如降低噪声图像预处理,对比度增强和图像锐化。特点是输入和输出都是图像。 中级:包括诸如分割这样的任务,即把图像分为区域或目标,然后对这些目标进行描述,以便把它们简化为适合计算机...
  • 合成孔径雷达图像去噪MATLAB程序

    热门讨论 2010-03-23 22:15:43
    孔径雷达图像固有的相干斑噪声严重降低了图像的可解译程度,影响了后续目标检测、分类和识别 等应用。因此,SAR图像的相干斑抑制问题一直是SAR图像应用的重要课题之一。一个理想的去斑算法应该在平 滑的同时保持图像...
  • 一、简介 1974年,法国工程师J.Morlet首先提出小波变换的概念,1986年著名...在图像处理方面的图像压缩、分类、识别与诊断,去噪声等。本章将着重阐述小波在图像中的应用分析。 1 小波变换原理 小波分析是一个比较难的
  • 一、简介 1974年,法国工程师J.Morlet首先提出小波变换的概念,1986年著名...在图像处理方面的图像压缩、分类、识别与诊断,去噪声等。本章将着重阐述小波在图像中的应用分析。 1 小波变换原理 小波分析是一个比较难的
  • 一、简介 1974年,法国工程师J.Morlet首先提出小波变换的概念,1986年著名...在图像处理方面的图像压缩、分类、识别与诊断,去噪声等。本章将着重阐述小波在图像中的应用分析。 1 小波变换原理 小波分析是一个比较难的
  • 一、简介 1974年,法国工程师J.Morlet首先提出小波变换的概念,1986年著名...在图像处理方面的图像压缩、分类、识别与诊断,去噪声等。本章将着重阐述小波在图像中的应用分析。 1 小波变换原理 小波分析是一个比较难的
  • 一、简介 1974年,法国工程师J.Morlet首先提出小波变换的概念,1986年著名...在图像处理方面的图像压缩、分类、识别与诊断,去噪声等。本章将着重阐述小波在图像中的应用分析。 1 小波变换原理 小波分析是一个比较难的

空空如也

空空如也

1 2 3
收藏数 55
精华内容 22
关键字:

matlab图像噪声分类

matlab 订阅