首页 > 编程知识 正文

图像滤波算法(图像滤波怎么选取合适的值)

时间:2023-05-03 16:58:29 阅读:75268 作者:3413

这篇文章主要是整理图像过滤算法,主要是参考的大神博客:

3359 blog.csdn.net/QQ _ 15606489/article/details/52755444

1 )图像滤波可以在真实区域中执行,也可以在频域中执行。 图像滤波器可以改变或强调图像。 通过过滤,可以强调某些特征,也可以去除图像中不需要的部分。 滤波器是邻域运算符,利用某一像素周围的像素的值来决定该像素的最终输出值。

可以使用以下公式进行图像滤波:

o(I,j )=m,ni ) Im,j n ) k ) m,n ) o ) I,j )=m,ni ) Im,j n ) k ) m,n ) ) ) )

其中k是过滤器,在许多文献中也被称为核(kernel )。 一般应用包括去噪、图像增强、边缘检测、角点检测、模板匹配等。

2 )均值滤波

通过将该像素点周围的像素的平均值置换为原始像素值,在去除噪声的同时也去除图像的边缘信息。 在OpenCV中,可以使用boxFilter和blur函数进行平均滤波。 平均过滤的核心如下:

3 :中值滤波器

中值滤波器使用测试像素周围邻近像素集的中值,而不是原始像素。 用中值滤波器消除椒盐噪声和斑块噪声,效果非常明显。 在OpenCV中,可以使用函数medianBlur进行操作。

4:zddmb滤波

这里参考一位大神的博客,详细地写了https://blog.csdn.net/nima 1994/article/details/79776802

总结:

像平均滤波那样,简单地取平均值,模板系数都是1。 另一方面,这是因为图像上的像素实际上坐标离散但值连续,越近点关系密切,越远点关系稀疏。 因此,加权平均更合理,距离越远的点权重越大,距离越远的点权重越小。 既然是基于距离加权平均,就容易想到zddmb函数f(x )=12e ) x)2 2 2 )=12e ) x) 22,如图所示:

从zddmb函数来看,离原点的距离越近,得到的权重越高,离原点越远,得到的权重越小。

以上是一维的zddmb函数,中心点在该位置时,x x的平均值#x03BC;=0' role=' presentation ' style=' position : relative; '=0=0,此时f(x )=12ex222f ) x )=1

σ 2 π e − x 2 2 σ 2
由于图像是二维矩阵,则采用二维zddmb函数 f(x,y)=12πσ2e−(x2+y2)2σ2 f ( x , y ) = 1 2 π σ 2 e − ( x 2 + y 2 ) 2 σ 2 有了这个函数就可以计算滤波模板中每个点的权重了。
权重矩阵:
假定中心点是(0,0),那么距离它最近的8个点的坐标如下:

更远的点以此类推。
将这模板中的坐标x,y代入到二维zddmb函数中,假定 μ=0 μ = 0 , σ σ 为1.5,则模糊半径为1的权重矩阵如下:

这9个点的权重总和等于0.4787147,如果只计算这9个点的加权平均,还必须让它们的权重之和等于1,因此上面9个值还要分别除以0.4787147,得到最终的权重矩阵。

计算zddmb滤波的结果
假设现在3*3zddmb滤波器覆盖的图像的像素灰度值为:

每个点与上边计算得到的9个权重值相乘:

得到:

将这9个值加起来,就是中心点的zddmb模糊的值。

对所有点重复这个过程,就得到了zddmb模糊后的图像。如果原图是彩色图片,可以对RGB三个通道分别做zddmb模糊。

边界处理
如果一个点处于边界,周边没有足够的点,怎么办?

一个变通方法,就是把已有的点拷贝到另一面的对应位置,模拟出完整的矩阵。

5:双边滤波
参考了大神的博客:http://www.360doc.com/content/17/0306/14/28838452_634420847.shtml
zddmb滤波只考虑了周边点与中心点的空间距离来计算得到权重。首先,对于图像滤波来说,一个通常的intuition是:(自然)图像在空间中变化缓慢,因此相邻的像素点会更相近。但是这个假设在图像的边缘处变得不成立。如果在边缘处也用这种思路来进行滤波的话,即认为相邻相近,则得到的结果必然会模糊掉边缘,这是不合理的,因此考虑再利用像素点的值的大小进行补充,因为边缘两侧的点的像素值差别很大,因此会使得其加权的时候权重具有很大的差别。可以理解成先根据像素值对要用来进行滤波的邻域做一个分割或分类,再给该点所属的类别相对较高的权重,然后进行邻域加权求和,得到最终结果。
双边滤波与zddmb滤波相比,对于图像的边缘信息能够更好的保留,其原理为一个与空间距离相关的zddmb核函数与一个灰度距离相关的zddmb函数相乘。
空间距离: e−(xi−xc)2+(yi−yc)22σ2 e − ( x i − x c ) 2 + ( y i − y c ) 2 2 σ 2 ,其中 (xc,yc) ( x c , y c ) 是中心点坐标,比如为(0,0), (xi,yi) ( x i , y i ) 为当前点的坐标, σ σ 为空间域标准差。
灰度距离: e−(gray(xi,yi)−gray(xc,yc))22σ2 e − ( g r a y ( x i , y i ) − g r a y ( x c , y c ) ) 2 2 σ 2 ,其中 gray(xi,yi) cxdjb ( x i , y i ) 是当前像素点的灰度值, gray(xc,yc) cxdjb ( x c , y c ) 是模板中覆盖图片区域的中心点像素的灰度值,也就是(0,0)处的灰度值, σ σ 为值域标准差。
对于zddmb滤波,仅用空间距离的权值系数核与图像卷积后确定中心点的灰度值。即认为离中心点越近,其权值系数越大。
双边滤波中加入了对灰度信息的权重,即在领域内,灰度值越接近中心点灰度值的点的权值更大,灰度值相差大的点权重越小。其权重大小则由值域zddmb函数确定。
两者权重系数相乘,得到最终的卷积模板,由于双边滤波需要每个中心点领域的灰度信息来确定其系数,所以速度比一般的滤波慢得多,而且计算量增长速度为核的大小的平方。

参数的选择:空间域 σ σ 的选取,和值域 σ σ 的选取。
结论: σ σ 越大,边缘越模糊; σ σ 越小,边缘越清晰。

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