高斯滤波 详解

实际上,很多算法:

  • 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 等算法采用高斯而不是其他核
相关推荐
MartinYeung511 分钟前
DC Scameter:一份反诈骗相关的专业分析报告
人工智能·安全
硅徒20 分钟前
企业 RAG 的检索注入:让知识库吐出机密文档的攻击面
人工智能
Getflare23 分钟前
前端 + UI 设计 + AI:这不是三个工种,是一个新三角能力模型(附自检清单)
前端·人工智能·ui
墨舟的AI笔记26 分钟前
Core Web Vitals 闭环:LCP/INP/CLS 的前端监控落地
人工智能
NPE~30 分钟前
[AI]Agent开发——ADK框架使用
人工智能·python·ai·教程·adk·agent开发
莫名的好感°31 分钟前
国内AI视频工具哪家强?FusionAI聚合即梦Seedance、可灵Kling、HappyHorse、Google Veo,一个平台看懂所有选择
大数据·人工智能
语歌33 分钟前
AI 语言学习系统的工程边界:为什么 LLM 不该负责复习排期
人工智能·swift
咖啡星人k1 小时前
企业内网引入 AI 编程:MonkeyCode 私有化部署思路
大数据·人工智能·私有化部署·monkeycode
QYRdata1 小时前
50.6%高增速!2026-2032年人形机器人大脑控制器赛道驶入高速成长通道
人工智能·机器人