图像基本群运算--滤波

       工业和消费领域,图像获取主要依赖于电子元件CMOS和CCD,以光电转化的形式转化为电信号。信号在传输的过程中会因为电信号的本身干扰,发生失真。常见的噪声有椒盐噪声、高斯白噪声等。

        一般来说,各种图像噪声是有模式的,因此可以用一定模式生成的模板使用反向卷积处理的方法,在一定程度上去除噪声。


1、高斯白噪声

         一般性的光线教暗容易使图像产生高斯白噪声,噪声产生并非严格遵循高斯分布,一般为高斯分布的近似形式。

         一般没有明显的颗粒感,为随机噪声。

         抵消高斯噪声影响的方法一般为使用高斯平滑滤波器,高斯平滑核一般取高斯分布:

                                  F(x, y, z) = 1/2pi*u^2  *Exp(-(x^2+ y^2 ) /2*u^2 )


         一个五层高斯卷积核:

               [ 0.002              

                 0.013      0.060          

                 0.220      0.098      0.162

                                                           0.096

                                                                        0.002   ]  ,整个核为对称阵,并且轴对称...

       加速:快速卷积算法为把一次二维卷积拆成两次一维卷积,使用向量化进行并行计算。

        使用OpenCV:

        获得高斯核: Mat getGaussianKernel(int ksize, double sigma, int ktype=CV_64F );

        使用高斯核:

    Mat img, gray;
    if( argc != 2 && !(img=imread(argv[1], 1)).data) return -1;
    cvtColor(img, gray, CV_BGR2GRAY);
    GaussianBlur( gray, gray, Size(9, 9), 2, 2 );  // smooth it, otherwise a lot of false circles may be detected


2.均值滤波:

       使用一个均值滤波器来模糊图像来模糊噪声,效果当然是不太好的。

        一个三层卷积核:

               [ 1      1        1

                 1      1       1

                 1      1       1 ]  *   1/9

        使用OpenCV:C++:    void medianBlur(InputArray src, OutputArray dst, int ksize)


3.椒盐噪声:

       也称为脉冲噪声,是图像中经常见到的一种噪声,它是一种随机出现的孤立白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素(或是两者皆有)。盐和胡椒噪声的成因可能是影像讯号受到突如其来的强烈干扰而产生、类比数位转换器位元传输错误(传输干扰、解码误差)等。例如失效的感应器导致像素值为最小值,饱和的感应器导致像素值为最大值。

        转自于 维基:

       常用的去除这种噪声的有效手段是使用中值滤波器。下面的实例图像分别是原始图像、带有椒盐噪声的图像、经过平均滤波器修复的图像以及经过中值滤波器修复的图像。

       效果:凭视觉感受一下椒盐的颗粒大小Pixels,把中值滤波器的卷积核的Pixels个中间像素设置为0,一般能达到效果。

       一个三层卷积核:

               [ 1      1        1

                 1       0       1

                 1      1        1 ]  *   1/8

                                                                                                                                                                                

非线性处理方式

一般使用非线性滤波器处理椒盐噪声的方法,以下将简介三种解决方法。

异常值侦测

异常侦测(Anomaly detection)有时称为异常值侦测(Outlier detection),如其名所隐含的,在给定的资料集合中,它将侦测在已有的规律中表现异常者。现今常用的方法以计算距离为基础的K-近邻算法或是机器学习中的支持向量机等,下图的例子以平均数为基础,在3X3的遮罩中,计算每个像素的平均值,与平均值相差绝对值ε的像素值将被平均值取代,其中,遮罩大小和误差值ε则是和输入图片内容相关。

Outlier detection pseudocode
The result of applying outlier detection

Outlier detection的缺点在于用平均值替代像素值,会造成像素值单一的背景出现异常的杂点(如天空),虽然相较于原本的盐与胡椒噪声不明显,但仍然可以看出噪声。

中值滤波器

中值滤波器(Median filtering) 如其名所隐含的,它将一个像素的值用该像素邻域中强度值的中间值来取代(计算中间值的过程中,也会将该像素的原始值包含),中值滤波器在处理盐和胡椒噪声上能提供绝佳的噪声降低效能。中值滤波器所衍伸的问题是计算速率,举例而言,要计算5个元素O_1,O_2, O_3, O_4, O_5的中值滤波器的计算过程如下:

Median(O_1, O_2, O_3, O_4, O_5) = max(min(O_1, O_2, O_3), min(O_1, O_2, O_4), \cdots)
= min(max(O_1, O_2, O_3), max(O_1, O_2, O_4), \cdots)

          先取最小值再取最大值可以得到中间值,但做最小值的过程中,需要先考虑10个可能的选项(C_3^5),由于计算速度的考量,因此促进了Pseudo-median filtering (PMED)的产生。 中值滤波器的缺点为让边缘模糊、较不锐利,由于使用中间值替代向素值,在像素值容易有较大变化的地方,如边界或细节的地方,会被模糊。

伪中值滤波器

为了改进中值滤波器的计算速率,伪中值滤波器(Pseudo-median filtering) 以近似的方法算出中间值,以5个元素的伪中值滤波器为例,

MAXMIN = max(min(O_1, O_2, O_3), min(O_2, O_3, O_4), min(O_3, O_4, O_5)),MINMAX = min(max(O_1, O_2, O_3), max(O_2, O_3, O_4), max(O_3, O_4, O_5)),PMED(O_1, O_2, O_3, O_4, O_5) = 0.5 \times(MAXMIN + MINMAX) \sim Median(O_1, O_2, O_3, O_4, O_5)

其中,MAXMIN会低估中间值,而MINMAX会高估中间值,将两者平均起来以近似中间值。应用在2D的伪中值滤波器可以有许多取法,例如:

           PMED=0.5 \times(PMED_x + PMED_y)


4.双边滤波器

         参考:http://blog.csdn.net/abcjennifer/article/details/7616663

        源于高斯模糊方法,用于保边去噪。方法为:当亮度差值过大时,通过下降滤波器权重来防止边界模糊,算是一个动态滤波器。

Matlab实现保边滤波器的函数是:  

w = 5;       % bilateral filter half-width  
sigma = [3 0.1]; % bilateral filter standard deviations
N =double(Img)/255; 
S =bfilter2(N,w,sigma);

OpenCV实现保边滤波器的函数是:
int d=2; 
double sigmaColor=0.1; double sigmaSpace=0.3;
int borderType = BORDER_DEFAULT;
Mat pFilterMatB = Mat(Size(pGrayMat.rows, pGrayMat.cols), CV_8SC1);

cv::bilateralFilter(pGrayMat, pFilterMatB, d, sigmaColor, sigmaSpace, borderType);


5、实验结果:

参考链接:图像滤波常见方法原理总结及VC下实现

    

    自己写的Conv2滤波器效果还是不如Matlab,差距太明显了...



参考:基本噪声类型-转自于百科

白噪声:白噪声(white noise)是指功率谱密度在整个频域内均匀分布, 所有频率具有相同能量密度的随机噪声。

      从我们耳朵的频率响应听起来它是非常明亮的“咝”声(每高一个八度,频率就升高一倍。因此高频率区的能量也显著增强)。

      起源于,70年代中期国际上新创立的无穷维Schwartz广泛函数理论。具有:功率谱密度恒定:S(ω)=S0;信号自相关:R(τ)=S0δ(τ);数学期望:E(X(t)]=0;均方值:E[X(t)^2]<∞;其中δ(τ)是Dirac函数。的随机噪声,中文翻译为白噪声。

       白噪声不是严格意义上的噪声,而是一种良好的信号频率模式。

       特点:它的二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性。它的幅度遵从高斯(正态)分布, 而功率谱类似于白色光谱,均匀分布于整个频率轴 , 故称为白噪声。白噪声主要包含三类:无源器件,如电阻、馈线等类导体中电子布朗运动引起的热噪声;有源器件,如真空电子管和半导体器件中由于电子发射的不均匀性引起的散粒噪声;以及宇宙天体辐射波对接收机形成的宇宙噪声。其中前两类是主要的。


高斯白噪声:如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。


脉冲噪声( 椒盐噪声 ):脉冲噪声(impulsive noise)是非连续的,由持续时间短和幅度大的不规则脉冲或噪声尖峰组成。产生脉冲噪声的原因多种多样,其中包括电磁干扰以及通信系统的故障和缺陷,也可能在通信系统的电气开关和继电器改变状态时产生。

瑞利噪声 :瑞利噪声是指它的概率密度函数服从瑞利分布的一类噪声。瑞利分布(Rayleigh Distribution):当一个随机二维向量的两个分量呈独立的、有着相同的方差的正态分布时,这个向量的模呈瑞利分布。
      特点:尖峰、拖尾

Erlang噪声:Erlang噪声又称作伽马(爱尔兰)噪声,服从了伽马曲线的分布。
      

参考:图像空域噪声与二维降噪算法.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值