图像滤波算法——均值、中值、高斯

注:本文为博主参考书籍和他人文章并加上自己的理解所编,作为学习笔记使用并将其分享出去供大家学习。若涉及到引用您的文章内容请评论区告知!如有错误欢迎指正!

一、均值滤波

    最简单的滤波器是移动平均或方框滤波器,他将K*K窗口中像素值的平均值作为输出。这种滤波器等价于图像与全部元素值为1的核函数先进性卷积再进行尺度缩放。对于尺寸较大的核函数,一个有效的实现策略如下:在扫描行上用一个移动的窗口进行滑动(在可分离滤波器中),新的窗口的和值等于上一个窗口的和值加上新的窗口中增加的像素的值并减去离开上一个窗口的像素的值。

二、中值滤波

1、中值滤波的实质

    对受到噪声污染的图像可以采用线性滤波的方法来处理,但是很多线性滤波有低通性,在去噪声的同时也使得边缘模糊了,中值滤波在某些情况下可以做到既去除噪声又保护图像的边缘,它是一种非线性的去除噪声的方法。

    中值滤波的实现原理是把数字图像中一点的值用该点的一个区域的各个点的值的中值代替。我们将一个点的特定长度或形状的邻域称为窗口,那么对于二维图像的中值滤波,一般采用3*3或5*5的窗口进行滤波。

 

1、中值滤波的实现

   以3*3的窗口为例,对于灰度图像,有输入和输出两个矩阵。从bmp_in[1][1]开始算起,通过该像素点领域内的8个像素再加上该像素本身共9个像素计算出中值并映射到输出矩阵bmp_out[1][1]。接着整个窗口右移到[1][2],以此类推直到该行扫完,开始下一行的扫描。如果对于3通道的彩色图像,则需要对每个通道分别进行中值计算并映射到输出矩阵,接着进行整合显示。

三、高斯滤波

1、高斯滤波的实质

    高斯滤波是一种线性滤波。就是对整幅图像进行加权平均的过程,每个像素点的值都由其本身和邻域内的其它像素值经过加权平均后得到。高斯平滑滤波器对于仰制服从正态分布的噪声非常有效。

    既然是线性滤波,那么就会存在低通性,那么为什么还要使用这种滤波方法呢?实际上我们知道如果取模板中心的系数比较大,而模板周围的系数比较小,则可以在保持图像原有信息特征的情况下消除部分噪声,而高斯滤波的模板恰恰符合这个条件。还有一个问题,如果我们直接通过计算得到高斯模板,会存在大量浮点数的运算,故还需要进行取整变换使得模板周围的最小系数为1,中心点系数取最大值。

2、高斯滤波器模板的生成

    那么高斯滤波的模板怎么确定呢?将系数值按高斯分布(正态分布)来确定,高斯滤波器的方法可以通过使用二项式展开法和计算高斯的掩码权重矩阵来得到一组高斯滤波器模板。

    首先我们先来考虑一维线阵图像的情况,高中时我们学过正态分布,其密度函数为:

    其中μ和σ都为常数,μ∈R,σ>0;记做X~N(μ,,σ²)。其中μ决定了曲线的中心位置(x=μ时,f(x)最大),σ决定了曲线的中锋的陡峭程度(σ越大,曲线越平缓),而且可以看出f(x)总是大于0的。

    μ=0,σ=1的正态分布称为标准正态分布,其密度函数为:

   

   对于一维图像, 在计算模板时,我们以最中心的像素点作为基准,所以该像素点要取最大值,我们记做f(0)。我们发现x=0时f(x)需要取最大值,那就刚好对应到标准正态分布x=μ=0时f(x)最大。而我们并不希望高斯模板一成不变,而是希望它可以通过一些参数进行调整以适应不同的情况,故我们不采用标准正态分布来计算模板,而是保留σ的可变性,用于调整模板的频带宽度进而影响图像被处理后的平滑(模糊)程度。此时还没有完,我们发现,高斯模板里的成员是用来作为系数使用的,那么当然可以对每个系数除以它们的公约数啦。

    此时我们拓展到二维图像,一般情况下我们使x轴和y轴的σ相等,此时我们可以得到高斯函数的表达式为:

    其中(x,y)为点坐标。要得到一个高斯滤波器模板,应先对高斯函数进行离散化,将得到的值作为模板的系数。

    例如:要产生一个3*3的高斯滤波器模板,以模板的中心位置为坐标原点进行取样。模板在各个位置的坐标,如下图所示(x轴水平向右,y轴竖直向下)

    这样,将各个坐标带入到上面的表达式便可以计算出我们需要的高斯滤波器模板了。

    然而此时计算得到的模板仍然是浮点类型的,为了计算方便可以对模板中的系数值进行取整即将模板各角位置的值即最小值通过一个系数α转换为1,其它位置均乘上这个系数也进行转换,转换后可通过近似取整得到最终的高斯滤波器模板。

    以上方式计算出来的模板在进行实际图像滤波时还需要进行归一化处理,实际上就是在加权后进行平均。

    下面给出一个常用的3*3高斯滤波器模板

       和一个常用的5*5 高斯滤波器模板

3、高斯滤波器的性质

    (1)可分离滤波器:由于高斯函数可以写成可分离的形式,因此可以采用可分离滤波器实现来加速。所谓的可分离滤波器,就是可以把多维的卷积化成多个一维卷积。具体到二维的高斯滤波,就是指先对行做一维卷积,再对列做一维卷积。这样就可以将计算复杂度从O(M*M*N*N)降到O(2*M*M*N),M,N分别是图像和滤波器的窗口大小。

    (2)二维高斯函数具有旋转对称性,即滤波器在各个方向上的平滑程度是相同的.一般来说,一幅图像的边缘方向是事先不知道的,因此,在滤波前是无法确定一个方向上比另一方向上需要更多的平滑.旋转对称性意味着高斯平滑滤波器在后续边缘检测中不会偏向任一方向。

    (3)高斯函数是单值函数.这表明,高斯滤波器用像素邻域的加权均值来代替该点的像素值,而每一邻域像素点权值是随该点与中心点的距离单调增减的.这一性质是很重要的,因为边缘是一种图像局部特征,如果平滑运算对离算子中心很远的像素点仍然有很大作用,则平滑运算会使图像失真。而高斯函数只有一个波峰,对图像边缘回油加强而不会减弱。

    (4)高斯滤波器宽度(决定着平滑程度)是由参数σ表征的,而且σ和平滑程度的关系是非常简单的.σ越大,高斯滤波器的频带就越宽,平滑程度就越好.通过调节平滑程度参数σ,可在图像特征过分模糊(过平滑)与平滑图像中由于噪声和细纹理所引起的过多的不希望突变量(欠平滑)之间取得折衷。

  • 9
    点赞
  • 130
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
1. 主要工作: 基于MATLAB图像处理中值滤波均值滤波以及高斯滤波的实现与对比: a) 中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值. b) 均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标像素为中心的周围8个像素,构成一个滤波模板,即去掉目标像素本身),再用模板中的全体像素的平均值来代替原来像素值。 c) 高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。 2. 代码功能: 实现中值滤波均值滤波以及高斯滤波,并对图像进行输出 3. 结果分析 a) 图像经过中值滤波后,高斯噪声没有被完全去除,椒盐噪声几乎被完全去除效果较好。经过均值滤波后不管是高斯噪声还是椒盐噪声大部分都没有被去除,只是稍微模糊化。经过高斯滤波后,高斯噪声和椒盐噪声几乎被很大程度的模糊化,原图好像被加上了一层蒙版。 【注】若添加图片分辨率过高会发出警报,如果可以正常输出则可以忽视。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值