实际上,很多算法:
- Steger
- Canny
- SIFT
- SURF
- Harris
- ORB
- Lucas-Kanade
- ICP 图像配准
- Zhang 标定
- BA
- CNN 第一层卷积
几乎全部都离不开高斯滤波(Gaussian Filter)。
很多教材一开始就给出

但是不知道为什么
一、为什么需要高斯滤波?
假设有一条激光线

出现了
- CCD噪声
- CMOS噪声
- 光照波动
- 电流噪声
这些统称 Noise(噪声) 如果直接计算梯度 ,梯度会乱跳,例如:

求导 就会非常不稳定。
所以 第一步必须
平滑(Smooth)
最简单的方法------平均滤波
平均滤波
一维: 1 2 3 中心变成 2
2维: 
不好因为 边缘也被平均掉了。
世界上最自然的权重------正态分布
加权;离中心近的点应该影响大一点。
那 权重到底应该是多少?
最合理的权重就是 高斯
二、高斯函数
1. 一维高斯公式

2. 二维高斯公式(图像用,核心)

3、高斯核
目标:算出 3×3 高斯核,理解权重怎么来
步骤 1:设定参数

步骤 2:代入二维高斯公式

步骤 3:归一化(关键!图像滤波必须做)

步骤 4:卷积计算(图像滤波过程)

- 权重分布:中心权重最大,向四周递减,平滑保边缘;
- 可分离卷积 二维高斯核 = 一维行卷积 + 一维列卷积

- 参数影响
- 核尺寸越大、\(\sigma\) 越大 → 模糊越强、降噪越强、细节丢失越多;
- OpenCV/Halcon 中,只给核大小,框架会自动计算最优 \(\sigma\);
- 适用噪声 :专门压制高斯噪声,对椒盐噪声效果一般。
4、作用
- 去除图像高斯噪声(最擅长);
- 图像平滑、模糊,弱化细小纹理;
- 预处理:给边缘检测、特征提取 "降噪打底"(比如 Canny 必须先高斯滤波)。
对比均值滤波:
- 均值滤波:邻域所有像素权重一样,边缘容易糊、丢细节;
- 高斯滤波:离中心越近,权重越大;越远权重越小 ,平滑同时保留边缘,效果更自然。
三、测试
OpenCV 实现
cpp
void GaussianBlur(
InputArray src, // 输入图像
OutputArray dst, // 输出图像
Size ksize, // 核大小 (w,h),必须是奇数:3,5,7...
double sigmaX, // X方向标准差
double sigmaY = 0, // Y方向标准差,0则=sigmaX
int borderType = BORDER_DEFAULT
);
cpp
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main()
{
Mat src = imread("test.jpg");
if(src.empty()) return -1;
Mat dst3, dst5;
// 3×3 高斯滤波
GaussianBlur(src, dst3, Size(3,3), 1);
// 5×5 高斯滤波,σ更大,更模糊
GaussianBlur(src, dst5, Size(5,5), 2);
imshow("src", src);
imshow("Gauss 3x3", dst3);
imshow("Gauss 5x5", dst5);
waitKey(0);
return 0;
}
Halcon 实现
cpp
gauss_filter (Image, ImageGauss, MaskWidth, MaskHeight)
cpp
* 读取图像
read_image (Image, 'test.jpg')
* 3×3 高斯滤波
gauss_filter (Image, ImageGauss3, 3, 3)
* 5×5 高斯滤波
gauss_filter (Image, ImageGauss5, 5, 5)
* 显示
dev_display (Image)
dev_display (ImageGauss3)
dev_display (ImageGauss5)

哪里用到了
Canny第一步是Gaussian
SIFT第一步是Gaussian
Steger一定先Gaussian
| 性质 | 含义 |
|---|---|
| 对称 | 不偏向任何方向 |
| 单峰 | 中心影响最大 |
| 无限光滑 | 可以任意阶求导,非常适合梯度、Hessian 等计算 |
| 可分离 | 二维卷积可拆成两次一维卷积,计算量从 (O(n^2)) 降到 (O(2n)) |
| 傅里叶变换仍是高斯 | 在频域没有振铃(ringing)现象 |
| 尺度空间唯一性 | 满足尺度空间理论的基本公理,因此 SIFT 等算法采用高斯而不是其他核 |