Python 图像处理 | 图像平滑之均值滤波、方框滤波、高斯滤波及中值滤波( 三 )


图像高斯平滑也是邻域平均的思想对图像进行平滑的一种方法,在图像高斯平滑中,对图像进行平均时,不同位置的像素被赋予了不同的权重 。高斯平滑与简单平滑不同,它在对邻域内像素进行平均时,给予不同位置的像素不同的权值,下图的所示的 3 * 3 和 5 * 5 领域的高斯模板 。

Python 图像处理 | 图像平滑之均值滤波、方框滤波、高斯滤波及中值滤波

文章插图
高斯滤波让临近的像素具有更高的重要度,对周围像素计算加权平均值,较近的像素具有较大的权重值 。如下图所示,中心位置权重最高为0.4 。
Python 图像处理 | 图像平滑之均值滤波、方框滤波、高斯滤波及中值滤波

文章插图
Python中OpenCV主要调用GaussianBlur函数,如下:
dst = cv2.GaussianBlur(src, ksize, sigmaX)
其中,src表示原始图像,ksize表示核大小,sigmaX表示X方向方差 。注意,核大小(N, N)必须是奇数,X方向方差主要控制权重 。
Python 图像处理 | 图像平滑之均值滤波、方框滤波、高斯滤波及中值滤波

文章插图
代码如下:
【Python 图像处理 | 图像平滑之均值滤波、方框滤波、高斯滤波及中值滤波】#encoding:utf-8import cv2 import numpy as np import matplotlib.pyplot as plt#读取图片img = cv2.imread('test01.png')source = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)#高斯滤波result = cv2.GaussianBlur(source, (3,3), 0)#显示图形titles = ['Source Image', 'GaussianBlur Image'] images = [source, result] for i in xrange(2): plt.subplot(1,2,i+1), plt.imshow(images[i], 'gray') plt.title(titles[i]) plt.xticks([]),plt.yticks([]) plt.show输出结果如下所示:
Python 图像处理 | 图像平滑之均值滤波、方框滤波、高斯滤波及中值滤波

文章插图
如果使用15*15的核,则图形将更加模糊 。
Python 图像处理 | 图像平滑之均值滤波、方框滤波、高斯滤波及中值滤波

文章插图
Python 图像处理 | 图像平滑之均值滤波、方框滤波、高斯滤波及中值滤波

文章插图
中值滤波
1.概念
在使用邻域平均法去噪的同时也使得边界变得模糊 。而中值滤波是非线性的图像处理方法,在去噪的同时可以兼顾到边界信息的保留 。选一个含有奇数点的窗口W,将这个窗口在图像上扫描,把窗口中所含的像素点按灰度级的升或降序排列,取位于中间的灰度值来代替该点的灰度值 。例如选择滤波的窗口如下图,是一个一维的窗口,待处理像素的灰度取这个模板中灰度的中值,滤波过程如下:
Python 图像处理 | 图像平滑之均值滤波、方框滤波、高斯滤波及中值滤波

文章插图
如下图所示,将临近像素按照大小排列,取排序像素中位于中间位置的值作为中值滤波的像素值 。
2.代码
OpenCV主要调用medianBlur函数实现中值滤波 。图像平滑里中值滤波的效果最好 。
dst = cv2.medianBlur(src, ksize)
其中,src表示源文件,ksize表示核大小 。核必须是大于1的奇数,如3、5、7等 。
Python 图像处理 | 图像平滑之均值滤波、方框滤波、高斯滤波及中值滤波

文章插图
代码如下所示:
#encoding:utf-8import cv2 import numpy as np import matplotlib.pyplot as plt#读取图片img = cv2.imread('test01.png')#高斯滤波result = cv2.medianBlur(img, 3)#显示图像cv2.imshow("source img", img)cv2.imshow("medianBlur", result)#等待显示cv2.waitKey(0)cv2.destroyAllWindows输出结果如下图所示:
Python 图像处理 | 图像平滑之均值滤波、方框滤波、高斯滤波及中值滤波

文章插图
常用的窗口还有方形、十字形、圆形和环形 。不同形状的窗口产生不同的滤波效果,方形和圆形窗口适合外轮廓线较长的物体图像,而十字形窗口对有尖顶角状的图像效果好 。中值滤波对于消除孤立点和线段的干扰十分有用,尤其是对于二进噪声,但对消除高斯噪声的影响效果不佳 。对于一些细节较多的复杂图像,可以多次使用不同的中值滤波 。
Python 图像处理 | 图像平滑之均值滤波、方框滤波、高斯滤波及中值滤波

文章插图
希望文章对大家有所帮助,如果有错误或不足之处,还请海涵 。
版权声明:本文为CSDN博主「Eastmount」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明 。
原文链接:
https://blog.csdn.net/Eastmount/article/details/82216380


推荐阅读