zoukankan      html  css  js  c++  java
  • [数字图像处理]图像去噪初步(2)--非线性滤波器

    1.非线性处理与线性处理的差别

        上一篇博文的内容,是关于均值滤波器的。比方说像算术均值滤波器,几何均值滤波器。这以类型的滤波器的经常被用于剔除某些不须要的频率成分,或者选择须要的频率成分,从而达到去噪的目的。这种滤波器,被称为线性滤波器。

        然而,另一些特殊滤波器,他们被称为非线性滤波器。其代表为中央值滤波器。所谓中央值滤波器,就是将一定范围内的数据(对于图像而言,是像素的灰度值)进行排序,选择中央值作为滤波器的输出。

        中央值滤波器的目的并非频率成分的选择,而是求root信号。关于root信号的定义,[文献1]中是这样给出的。

    ------------------------    

    定义:对于随意信号,使用中央值滤波器进行有限次处理,直到所得到的限号不变为止。中央值滤波器处理前后,假设这个信号列没有不论什么变化,那么将这个信号列称为这个滤波器的root信号。

    ------------------------ 

        对于中央值滤波器来讲,能够完美去除被椒盐噪声污染的root信号。对于root信号,有例如以下的性质。对于下面定理的证明与具体说明,请參考[文献2][文献3]。

    =============

    定理1:假设信号列{x(i)}是单调递增或单调递减的,那么对于不论什么尺寸的中央值滤波器,这个信号列都是root信号。

    定理2:假设信号列{x(i)}是在从i開始的m个信号之间的局部单调信号的话,那么对于尺寸为N=2M+1(M<=m-2)的中央值滤波器,这种信号为这个滤波器的root信号。

    =============

          

    2.几个典型的非线性滤波器

        2.1 中央值滤波器 (Median Filter)

        正如第一节所叙述的,中央值滤波器能够有效去除椒盐噪声,而且不会使得图像模糊。我们将一副图像染上椒盐噪声,然后使用不同尺寸的中央值滤波器去进行处理。所得的结果的画质使用SSIM去评价。

        首先,将图像染上盐粒密度为0.15,胡椒密度为0.15的椒盐噪声,使用3x3,5x5,7x7和9x9四种不同尺寸的中值滤波器去处理图像。所得到的结果,例如以下表所看到的。


    由上图所看到的,能够看出,所用滤波器尺寸不同,得到的结果是不同的,尺寸较大的滤波器得到了不太好的结果。随着循环次数的添加,图像的SSIM逐渐变化,最后趋近于稳定。以下是循环次数为30时候,4种尺寸滤波器得到的结果。


         为了验证噪声与实验结果的影响,将图像染上盐粒密度为0.35,胡椒密度为0.35的椒盐噪声,在进行滤波实验,能够得到例如以下曲线。

         实验结果给出,尺寸较小的的中值滤波器,其收敛到root信号较为缓慢,其次,对于高噪声的图像,其修复结果是不太好的。

         总结上述实验,能够得到三个实用的结论。

         1.中央值滤波器在处理过程中,不断在寻找root信号。重复数回之后,其结果收敛,基本不改变。

         2.对于不同的图像,不同的噪声,最适合本幅图像的中央值滤波器的尺寸是不同的。并非尺寸越小越好。

         3.尺寸小的滤波器,收敛速度慢。反之,尺寸大的滤波器,收敛较快。


         2.2 自适应中央值滤波器 

        我们要非常好的使用中央值滤波器,仅仅有一个要点!就是找一个最适合的滤波器尺寸,使得原图就是这个滤波器的root信号,那么,就能够得到一个完美的结果(当然,最适合的滤波器是不存在的)。那么,这里就能够有个想法了,在运行滤波器操作的时候,尽可能多的尝试各种尺寸,选择一个最适合的,让原图非常接近这个尺寸的滤波器的root信号。这种话,就能够得到一个不错的结果了。

        当然,之对于椒盐噪声的话,还能够增加这样一个功能,因为噪声的灰度值是已知的(盐粒噪声为1,胡椒噪声0),那么仅仅有其中央值不是0或者1的时候,滤波器生效,否则,扩大滤波器尺寸。

        归纳上述思想,能够得到例如以下的伪代码。

    START:   S_xy = read(f(x,y),[size_S_xy]);
     z_min = min(S_xy);
     z_max = max(S_xy);
     z_med = median(S_xy);
    LOOP A :  A_1 = z_med - z_min;
              A_2 = z_med - z_max;
              
              if  ((A_1 >0) and (A_2 < 0))  
                   goto LOOP B;
              else  size_S_xy++; 
                   goto START;
              
              if  (size_S_xy <= size_max)
                   g(x,y) = z_med;    
                   goto NEXT;
    
    LOOP B :  B_1 = f(x,y) - z_min;
              B_2 = f(x,y) - z_max;
    
              if  ((B_1 >0) and (B_2 < 0))  
                   g(x,y) =  f(x,y) ;    
                   goto NEXT;
              else  g(x,y) = z_med;  
                   goto NEXT;
    
    NEXT :    x,y移动到下一个像素点
              if (x > x_max)and(y>y_max)
                  return;
         else goto START;
         来看看这个滤波器的效果,将图像加一个非常强的噪声椒盐噪声。盐粒密度为0.3,胡椒密度为0.3。同一时候将相同的图像,使用5x5的中央值滤波器。两个滤波器的不同,还是非常easy看出来的。


          2.3 最大值滤波器与最小值滤波器

          最大值滤波器与最小值滤波器这两个滤波器,跟中央值滤波器有些类似。相同是一个目的,用于寻找root信号,仅仅只是,最大值滤波器能够用于去除盐粒噪声,相反,最小值滤波器能够用于取出胡椒噪声。相同的,最大值与最小值滤波器不适用于去除,同一时候含有盐粒噪声与胡椒噪声的图片。

          因为这个非常easy,结果就不贴了。


         2.4 中点滤波器(midpoint filter)

         中点滤波器,糅合了均值滤波器和非线性的排序处理。这种滤波器对于去除高斯噪声与均匀噪声有非常好的效果。


    我们使用这个滤波器,与平均滤波器做个比較吧。其结果显示在下图。


        图片上,纵轴表示画质SSIM,横轴表示噪声的方差。绿线表示中点滤波器,红线表示算术滤波器。能够看出,均匀噪声上,中点滤波器的性能还是优于算术平均滤波器的。(当然,这可能跟选用的评价图像有关,可是基本是这个趋势)。

        2.4 修正的阿尔法均值滤波器

        从非常小的时候開始,对唱歌节目就有这种一个映像,评委打分的时候,总是要去掉一个最高分,去掉一个最低分,然后求均值。这个是个什么样的原理呢?事实上这是一个非常典型的滤波器,能够更好的反应一个选手的水平。
        在图像处理领域,也有一个类似的处理方法,其表达式例如以下。
        
    简单的理解一下这个滤波器,首先,我们将滤波范围 个数据进行排序,从大到下的顺序去除个数据,从小到大的顺序去除个数据。将剩下的数据计算均值。

        这种滤波器,非常擅长去除椒盐噪声与其它类型噪声一起污染过的图片。依旧是实验,首先将图片染上盐粒密度为0.1,胡椒密度为0.1的椒盐噪声。然后,再将这幅图像染上高斯噪声。在将图片进行去噪。得到的结果例如以下所看到的。


        能够出,对于复数的噪声,这种滤波器的效果是最好的。

    3.自适应中值滤波器的Matlab代码

         因为本次代码都比較简单,主要是概念上的理解,所以,代码我也就贴个自适应滤波器的代码就完事吧!


         下一篇博文,会说到去卷积处理。


    參考文献

    [文献1]非線形ディジタル信号処理  ,棟安実治 ・田口亮 著,システム制御情報学会,朝倉書店,1999年03月20日
    [文献2]Tyan, S. G. "Median filtering: Deterministic properties." Two-Dimensional Digital Signal Prcessing II. Springer Berlin Heidelberg, 1981. 197-217.
    [文献3]Gallagher Jr N C, Wise G L. A theoretical analysis of the properties of median filters[J]. Acoustics, Speech and Signal Processing, IEEE Transactions on, 1981, 29(6): 1136-1141.


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

    =============更新日志===================

    2014 - 7 - 17       修正了一些格式错误


  • 相关阅读:
    matlab矩阵中如何去掉重复的行;如何找到相同的行,并找到其位置
    Coursera 机器学习 第9章(下) Recommender Systems 学习笔记
    机器学习基石笔记1——在何时可以使用机器学习(1)
    Coursera 机器学习 第9章(上) Anomaly Detection 学习笔记
    matlab安装过程的被要求的配置程序
    jdk环境变量配置
    Coursera 机器学习 第8章(下) Dimensionality Reduction 学习笔记
    Coursera 机器学习 第8章(上) Unsupervised Learning 学习笔记
    Coursera 机器学习 第7章 Support Vector Machines 学习笔记
    linux服务器---squid限制
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4057045.html
Copyright © 2011-2022 走看看