OpenCV 高斯滤波

1.高斯滤波的理论简析
高斯滤波是一种线性平滑滤波,可以消除高斯噪声,广泛应用于图像处理的减噪过程。高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波的具体操作是:用一个模板(或成为卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度去替代模板中心像素点的值。
高斯模糊技术生成的图像,其视觉效果就像是经过一个半透明屏幕在观察图像,这与镜头焦外成像效果散景以及普通照明阴影中的效果都明显不同。高斯平滑也用于计算机视觉算法中的预处理阶段,以增强图像在不同比例大小下的图像效果。从数学角度看,图像的高斯模糊过程就是图像与正态分布做卷积。由于正态分布又叫高斯分布,所以这项技术就叫做高斯模糊。
图像与圆形方框模糊做卷积会生成更加精确的焦外成像效果。由于高斯函数的傅里叶变换是另外一个高斯函数,所以高斯模糊对于图像来说就是一个低通滤波操作。

2.计算原理
①高斯函数
在这里插入图片描述
②以3*3模板为例
以模板的中心位置为坐标原点进行取样。模板在各个位置的坐标,如下所示(x轴水平向右,y轴竖直向上)。
在这里插入图片描述
然后将坐标代入高斯函数,计算结果如下:
在这里插入图片描述
整理得:
在这里插入图片描述

3.高斯滤波:GaussianBlur函数

C++:void GaussianBlur(InputArray src,OutputArray dst,Size ksize,double sigmaX,double sigmaY=0,intborderType=BORDER_DEFAULT)
第一个参数:src,输入图像,图像深度应该为CV_8U、CV_16U、CV_16S、CV_32F、CV_64F之一
第二个参数:dst,处理后结果图像
第三个参数:Size类型的ksize高斯核大小。其中ksize.width、ksize.height可以不同,但都必须为正奇数。
第四个参数:double类型的sigmaX,表示高斯核函数在X方向的标准差偏差。
第五个参数:double类型的sigmaY,表示高斯核函数在Y方向的标准差偏差。若将其设为0,就将它设为sigmaX;如果sigmaX和sigmaY都是0,那么就由ksize.width、ksize.height计算出来。
第六个参数:int类型的borderType,用于推断图像外部像素的某种边界模式,一般不去管它。

4.案例

void Gauss()
{
	Mat src = imread("img.jpg", 0);
	Mat dst;

	namedWindow("原图", 0);
	imshow("原图", src);

	GaussianBlur(src, dst, Size(3, 3), 0, 0);

	namedWindow("高斯处理图", 0);
	imshow("高斯处理图", dst);
}

在这里插入图片描述

发布了8 篇原创文章 · 获赞 0 · 访问量 77

猜你喜欢

转载自blog.csdn.net/ETNthrough/article/details/103998662