高斯滤波 详解

实际上,很多算法:

  • 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 等算法采用高斯而不是其他核
相关推荐
ArkAPI5 分钟前
Claude Code 连发安全修复:AI 编程 Agent 的权限,正在成为新的“安全事故高发区”
人工智能·大模型·api·codex·ai工具·claude code·arkapi
Thecozzy5 分钟前
大厂 AI Coding 面试大招
人工智能·面试·职场和发展
维核科技8 分钟前
推理加速实战:投机解码与KV Cache优化让大模型“快起来“
人工智能
数智化管理手记17 分钟前
海量数据如何沉淀有效数据资产?数据标准化治理方案如何搭建?
java·大数据·人工智能
过期的秋刀鱼!21 分钟前
LangChain-D1-模型的工作流程
人工智能·python·langchain
科技象限28 分钟前
数智落地提速:2026下半年传统行业智能化升级爆发场景预判
人工智能
cfm_291437 分钟前
SpringAI + Ollama 本地大模型
java·开发语言·人工智能·语言模型
147API1 小时前
蒸馏模型版本升级怎么做,权重、评测器和服务配置一起管
人工智能·深度学习·蒸馏·模型蒸馏
湘美书院--湘美谈教育1 小时前
湘美书院主理人谈AI文学:提示词与Skill的与时俱进
大数据·人工智能·安全·自动化·生活
漏刻有时1 小时前
本地部署 Dify + DeepSeek 搭建AI知识问答客服全流程复盘
人工智能