转载自“蛋片机”的文章:Python+OpenCV图像处理(七)—— 滤波与模糊操作
该文章中还具体介绍了均值模糊和边缘保留滤波EPF
高斯滤波(高斯模糊)
通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。
数学原理
高斯分布的一维和二维原理如下:
高斯分布的标准差σ。标准差代表着数据的离散程度,如果σ较小,那么生成的模板的中心系数较大,而周围的系数较小,这样对图像的平滑效果就不是很明显;反之,σ较大,则生成的模板的各个系数相差就不是很大,比较类似均值模板,对图像的平滑效果比较明显。高斯模糊具体原理见博文:https://blog.csdn.net/u012992171/article/details/51023768
cv2.GaussianBlur函数
GaussianBlur(src,ksize,sigmaX,dst,sigmaY,borderType )
——src:输入图像;图像可以具有任意数量的通道,这些通道可以独立处理,但深度应为CV_8U,CV_16U,CV_16S,CV_32F或CV_64F。
——dst:输出图像,大小和类型与src相同。
——ksize:高斯内核大小。 ksize.width和ksize.height可以不同,但它们都必须为正数和奇数,也可以为零,然后根据sigma计算得出。
——sigmaX :X方向上的高斯核标准偏差。
——sigmaY :Y方向上的高斯核标准差;如果sigmaY为零,则将其设置为等于sigmaX;如果两个sigmas为零,则分别从ksize.width和ksize.height计算得出;为了完全控制结果,而不管将来可能对所有这些语义进行的修改,建议指定所有ksize,sigmaX和sigmaY。
import cv2
img = cv2.imread('test.png')#img为ndarray格式
processed = cv2.GaussianBlur(img,(5,5),0)
cv2.imshow("processed",processed)
cv2.waitkey(0)
cv2.destoryallwindows()
CV_8U - 8位无符号整数(0..255)
CV_8S - 8位有符号整数(-128..127)
CV_16U - 16位无符号整数(0..65535)
CV_16S - 16位有符号整数(-32768..32767)
CV_32S - 32位有符号整数(-2147483648..2147483647)
CV_32F - 32位浮点数(-FLT_MAX..FLT_MAX,INF,NAN)
CV_64F - 64位浮点数(-DBL_MAX..DBL_MAX,INF,NAN)