高斯滤波 详解

实际上,很多算法:

  • 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 等算法采用高斯而不是其他核
相关推荐
测试者家园32 分钟前
为什么意图驱动测试是自动化测试的下一站,而不是替代品
自动化测试·软件测试·人工智能·持续测试·ai赋能·智能化测试·软件测试变革
D202020202 小时前
TikTok Shop禁止AI语音直播落地后,跨境卖家如何通过达秘合规调整带货内容
人工智能
像风一样自由20202 小时前
20.Milvus常见问题检索不到维度错误和数据一致性
人工智能·大模型·milvus
现代野蛮人2 小时前
【深度学习实验】—— 基于 LSTM 与 Optuna 调参的丙型肝炎预测
人工智能·深度学习·lstm
支支დ2 小时前
VO by Vercel 前端特定优势:为什么它是构建 AI 应用的新范式
前端·人工智能
ZGIAI2 小时前
ZGI 让那些"等你去处理"的事,真正跑起来
人工智能·架构
ZGIAI3 小时前
ZGI:别再做Agent Demo了,先问问它在业务里能不能撑过下周三
人工智能·架构
香芋芋圆3 小时前
AI 冲击内卷之下,普通前端如何破局?WebGIS—— 低门槛突围赛道
前端·javascript·人工智能·学习·职场发展
m0_614523553 小时前
完整教程|输入一句描述,能不能直接生成一段可以继续剪辑的视频:写结构化描述到生成短样片
人工智能·音视频
stormzhangV3 小时前
AGI 时代终于来了!
人工智能·openai