首页 > 编程知识 正文

图像滤波模板,图像处理中值滤波

时间:2023-05-06 13:30:14 阅读:150993 作者:1457

本文介绍线性滤波(块滤波、平均值滤波和ngdgtx滤波)的五种常用图像滤波方式。 非线性滤波(中值滤波、双边滤波)。提醒,本文主要是算法公式,没有具体完整的代码。

一、线性滤波

一般来说,这三种线性滤波的原理是每个像素的输出值是输入像素的加权和。 其处理方式都是将图像的像素与对应的内核卷积,内核为权重(下图中中央3*3大小的图为内核),其作用是用权重分配原图像的像素。 简单地说,所谓卷积,是指选择与原图像的核相同大小的部分(下图左侧的对照部分),与对照相乘进行相加,将得到的值与原图像中的定位点(下图为中心点,右侧的对照部分) (关于卷积的解说是下图的转载链接)

卷积(图片为https://blog.csdn.net/Zou xy 09/article/details/49080029,入侵删除) ) ) ) ) ) ) ) )0) 0

所以,这三种过滤方式的不同就是卷积核的不同。 以下分别叙述。

1.1方框滤波和均值滤波的卷积核

如下图所示,k是块滤波器的核,可见,不管a具有什么值,矩阵中的每个元素都相等,卷积时像素的权重相同。 平均滤波是将块滤波规范化的特殊处理,在下图中,normalize=ture时的k是平均滤波的核心。 我个人认为块滤波和平均滤波没有实质性的区别。

1.2ngdgtx滤波的卷积核

首先,我们来看看一维的ngdgtx函数。 如下图所示,a表示尖峰的高度,b表示尖峰中心的x坐标,c表示标准方差,表示尖峰的宽度。 图3示出了“3”的原则,意味着定义域的范围是正的无限到负的无限,但曲线的大部分在“-3 - 3”之间。

一维ngdgtx函数(图1,2为https://blog.csdn.net/jorg _ Zhao/article/details/52687448,入侵删除) ) ) ) ) ) ) )

其次,=0时服从二维正态分布的二维ngdgtx函数,即x、y是无关的。 类似地,参考一维ngdgtx函数,a表示振幅,即高度; x。 y。 是中心点坐标; y是方差,表示底面两个方向的宽度。

二维ngdgtx函数(https://blog.csdn.net/jorg _ Zhao/article/details/52687448,入侵删除) ) ) ) ) ) ) )

在计算ngdgtx核时,由于在x、y两个方向上我们所需的宽度完全一致,所以可以取x=y。 此时,公式为

根据上述公式可以求出ngdgtx核,代码如下

/* * * * * * * ngdgtx卷积成核函数* * * * * * * * * * * * * * * * * * * * *第一参数Guass为ngd gtx * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * const int size,cconst int //圆周率赋值int center=size/2; 双尾sum=0; for(intI=0; isize; I ) for(intj=0; jsize; j ) ) guass[I](j )=(1/) pi*sigma*sigma ) ) exp(-) (j - center ) ) ) j - center ) ) j ) }for(intI=0; isize; I//归一化(for ) intj=0; jsize; j ) { Guass[i][j] /=sum; } }选择sigma和size的值:一般情况下,size=sigma*3 1

为“3σ”原则。

 

二、非线性滤波

2.1中值滤波

基本思想:用像素点邻域灰度值的中值来代替该像素点的灰度值。

如下图,将中心点周围被称为邻域的像素点(包括自身)进行排序,取排序后9个像素值中间值作为当前新的像素值。

                    中值滤波原理图(图片转载自https://blog.csdn.net/qq_36359022/article/details/80116137,侵删)

 

 2.2双边滤波

基于空间分布的ngdgtx滤波函数,其核为一个与空间距离相关的ngdgtx函数与一个灰度距离相关的ngdgtx函数相乘所得。简单说就是ngdgtx滤波的加强版,在ngdgtx滤波中,只有关于空间距离的权重,离中心点越远,权重越小,而双边滤波在此基础上添加了关于灰度距离的权重,邻域中的像素灰度值越接近中心点灰度值,权重越大。

下面开始来讲权重的计算获取。

空间距离:指的是当前点与中心点的欧式距离。空间域ngdgtx函数其数学形式为:

                                                     

(i, j)代表输出点;(k, l)代表(多个)输入点;sigma为空间域标准差。

这也叫定义域核的表示形式,叫这个名字的原因,个人理解是:这里的权重只和平面位置距离有关,只和x、y有关。同时可以发现,这公式其实就是ngdgtx滤波的公式。

灰度距离:指的是当前点灰度与中心点灰度的差的绝对值。值域ngdgtx函数其数学形式为:

                                       

(i, j)代表输出点;(k, l)代表(多个)输入点;sigma为值域标准差。

同样,这也叫值域核的表示形式,理由和上面类似,其所求结果r只与灰度值有关。

将上述两公式相乘就可以得到,依赖数据的双边滤波权重函数:

                     

至此,即得到了双边滤波的权重,最后在将权重与像素对应相乘相加再除以权重和,即求出最后输出像素值。

                                             

再求出权重后,如果先归一化,最后这一步其实是在求卷积。个人认为,双边滤波的算法流程也是先求出一个核,只是这个核是在ngdgtx核的基础上乘了一个代表灰度相似程度的一个权重,最后在进行类似卷积操作。

 

以上,便是部分了。本人小白一枚,有错还请指出,欢迎探讨。

转载于:https://www.cnblogs.com/wy1996/p/10858376.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。