opencv011 滤波器03 高斯滤波

今天来学习一下高斯滤波!高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。 

opencv011 滤波器03 高斯滤波_第1张图片

高斯滤波

1.原理

高斯函数是符合高斯分布(正态分布)的函数,还记得高斯函数长什么样子吗

opencv011 滤波器03 高斯滤波_第2张图片

 均值可以简单理解成曲线中间的对称轴,方差越大,越不集中

高斯函数的一般形式:

opencv011 滤波器03 高斯滤波_第3张图片

高斯滤波就是用符合高斯分布的卷积核进行卷积操作,所以高斯滤波的重点就是如何计算符合高斯分布的卷积核——即高斯模板。

计算方法:

假定中间点为(0,0)取周围8个点的坐标,然后设定б的值,下例б=1.5,模糊半径=1

opencv011 滤波器03 高斯滤波_第4张图片

我们可以观察到越靠近中心,数值越大,越边缘的数值越小,符合高斯分布的特点.
通过高斯函数计算出来的是概率密度的数,所以现们还要尝保这九个点加起来为1,这9个点的权重总和等于0.4787147.因此上面9个值还要分别除以0.4787147,得到最终的高斯模板,。
注:有些整数高斯模板是在归一化后的需斯模板的基础上每个数除上左上角的值,然后取整.

opencv011 滤波器03 高斯滤波_第5张图片

有卷积核了!

假设有9个像素点,灰度值(0-255)的高斯滤波计算如下:

opencv011 滤波器03 高斯滤波_第6张图片

将9个点加起来,就是中心高斯滤波的值

2.API

(1)高斯函数

GaussianBlur(src, ksize, sigmaX, dst=None, sigmaY=None, borderType=None);

(2)参数详解

(1)src:表示输入的原图像;
(2)Ksize:表示卷积核(高斯核)大小(ksize(w,h),w-像素宽度,h-像素高度);
(3)sigmaX:X方向的滤波核;表示卷积核在X方向上的标准差,控制的是权重比例;
(4)sigmaY:Y方向的滤波核;表示卷积核在Y方向上的标准差,控制的是权重比例;
如果 sigmaY 为零,则将其设置为等于 sigmaX;如果两个sigma均为零,则分别根据ksize.width 和 进行计算 ksize.height完全控制的结果,无论这一切的语义未来可能的修改,建议指定所有的ksize,sigmaX和sigmaY。sigma越大,平滑效果越明显。
sigmaX = 0.3 x ((ksize.width-1) x 0.5 - 1) + 0.8
sigmaY = 0.3 x ((ksize.height-1) x 0.5 - 1) + 0.8

(5)borderType:推断图像外部像素的某种边界模式。有默认值BORDER_DEFAULT

3.实例演示

import cv2
import numpy as np
img = cv2.imread("F:\est01\e3.jpg", 1)
dst = cv2.GaussianBlur(img, (5, 5), sigmaX=100)
cv2.imshow('img', np.hstack((img, dst)))
cv2.waitKey(0)
cv2.destroyAllWindows()

 opencv011 滤波器03 高斯滤波_第7张图片

应用:常使用高斯滤波去噪 

你可能感兴趣的:(opencv,算法,opencv,人工智能,计算机视觉,python,学习方法,pycharm)