高斯滤波 详解

实际上,很多算法:

  • 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 等算法采用高斯而不是其他核
相关推荐
HZZD_HZZD1 小时前
用电行为异常检测VAE-基于PyTorch设计用电行为异常检测模型:从时序特征提取到变分自编码器部署的完整实战
人工智能·pytorch·python
威视锐科技1 小时前
AMD生态赋能5G NTN 革新:威视锐空天地一体化基站,融合天地通信与边缘AI
人工智能·5g·软件无线电·威视锐·天地一体化
库拉大叔1 小时前
GPT内容输出优化:如何获得更符合需求的答案
人工智能
蕃茄田艺术1 小时前
学龄儿童创意画画怎么判断是否适合自己
人工智能·蕃茄田艺术
毒爪的小新1 小时前
踩坑实录 | RAG知识库完整搭建-Milvus2.4+BGE大中文AI模型嵌入
linux·人工智能·ai·milvus·rag
思-无-涯1 小时前
AI Agent技能编写与质量保障
人工智能·python
熊猫钓鱼>_>1 小时前
智能革命的巨浪——AI时代的社会重构与生存之道
大数据·人工智能·重构·架构·llm·agent·ai-native
美狐美颜SDK开放平台1 小时前
直播APP平台开发如何降低成本?视频美颜SDK方案解析
人工智能·音视频·美颜sdk·直播美颜sdk·视频美颜sdk·美颜api
百胜软件@百胜软件1 小时前
维达×百胜软件E3+订单协同平台项目正式启动,共筑智能履约新标杆
大数据·人工智能