高斯滤波 详解

实际上,很多算法:

  • 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、作用

  1. 去除图像高斯噪声(最擅长);
  2. 图像平滑、模糊,弱化细小纹理;
  3. 预处理:给边缘检测、特征提取 "降噪打底"(比如 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 等算法采用高斯而不是其他核
相关推荐
const_qiu4 分钟前
第二章 2.4:搭建 Monorepo 骨架 + 共享包 @autix/contracts
java·人工智能·arcgis
luoganttcc7 分钟前
AI 编译器中的 Tiling Shape 推导与选择
人工智能
Smoothcloud润云9 分钟前
PyTorch推理输入长度分桶与Padding优化实战:减少无效计算
人工智能·pytorch·python·深度学习·gpu算力
橙色云-智橙协同研发13 分钟前
汽车零部件行业:如何应对主机厂的严苛审核?
大数据·运维·服务器·人工智能·安全
微三云云仔16 分钟前
2026年10月微三云 GEO 优化技术拆解:AI引用机制、结构化部署与服务商评估框架
人工智能·深度学习·geo系统·微三云
努力变大白21 分钟前
把“会说话的模型“变成“会干活的 Agent“
大数据·人工智能·机器学习
救救孩子把24 分钟前
AI面试八股文-03_3-RAG 系统面试题
人工智能·redis·面试·agent·rag
lazy熊29 分钟前
Codex 能聊天但读不到项目文件:通常是这 4 个地方没有对上
人工智能
tianyatest40 分钟前
魔兽争霸 III 接入大语言模型:基于文件通道的混合式游戏 AI 智能体系统设计与实现
人工智能·游戏·语言模型·war3