目录
一、卷积高斯模糊 (Gaussian Blur)
1. 原理与数学基础
高斯模糊是通过高斯核与图像进行卷积运算实现的平滑滤波,其核心是高斯函数: [ G(x,y) = \frac{1}{2\pi\sigma^2}e^{-\frac{x^2+y^2}{2\sigma^2}} ]
- 权重呈正态分布,中心像素权重最高
- 标准差σ控制模糊程度,σ越大模糊效果越强
- 核大小通常为奇数(如3×3,5×5,7×7),确保中心对称
2. OpenCV函数实现
void cv::GaussianBlur(
InputArray src, // 输入图像
OutputArray dst, // 输出图像
Size ksize, // 高斯核大小 (width, height)
double sigmaX, // X方向标准差
double sigmaY = 0, // Y方向标准差(默认与sigmaX相同)
int borderType = BORDER_DEFAULT // 边界处理方式
)
3. 关键参数说明
- ksize:必须为正奇数,如(3,3)、(5,5),核越大计算量越大
- sigmaX/sigmaY:控制模糊程度,建议设置σ=0让函数自动计算(σ = 0.3×((ksize-1)×0.5 - 1) + 0.8)
- borderType:常用BORDER_DEFAULT(等价于BORDER_REFLECT_101),处理图像边缘像素
4. 代码示例
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
Mat img = imread("input.jpg");
Mat blurImg;
// 应用5×5高斯模糊,sigma自动计算
GaussianBlur(img, blurImg, Size(5,5), 0, 0);
imwrite("gaussian_result.jpg", blurImg);
return 0;
}
5. 特点与应用
✅ 优点:平滑效果自然,保留更多图像细节
❌ 缺点:对椒盐噪声抑制效果有限
📌 适用场景:
- 预处理阶段去除高斯噪声
- 边缘检测前的降噪
- 图像缩放前的抗锯齿处理
二、中值模糊 (Median Blur)
1. 原理与数学基础
中值模糊通过取邻域像素的中值替代中心像素值,属于非线性滤波:
- 将核内所有像素排序
- 取中间值作为中心像素新值
- 核大小为奇数以确保存在唯一中值
2. OpenCV函数实现
void cv::medianBlur(
InputArray src, // 输入图像
(单通道或三通道8位/16位)
OutputArray dst, // 输出图像
int ksize // 核大小(正
奇数)
)
3. 关键参数说明
- ksize:必须为正奇数(3,5,7,...),核大小增加会显著提升计算量
- 仅支持单通道或三通道图像,不支持多通道或浮点型图像
- 无需设置标准差等参数,使用简单
4. 代码示例
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
Mat img = imread("noisy_input.jpg");
Mat medianImg;
// 使用3×3核进行中值模糊
medianBlur(img, medianImg, 3);
imwrite("median_result.jpg", medianImg);
return 0;
}
5. 特点与应用
✅ 优点:
- 有效去除椒盐噪声(salt-and-pepper noise)
- 边缘保留效果优于高斯模糊
❌ 缺点:
- 计算复杂度高(O(n²logn),n为核大小)
- 可能导致图像细节模糊
📌 适用场景:
- 相机传感器噪声去除
- 医学图像去噪
- 工业检测中的斑点噪声处理
三、两种模糊方法对比分析
指标 | 高斯模糊 | 中值模糊 |
---|---|---|
算法类型 | 线性滤波(卷积) | 非线性滤波(排序取中值) |
噪声抑制 | 高斯噪声效果好 | 椒盐噪声效果好 |
边缘保留 | 一般(边缘会模糊) | 较好(边缘更锐利) |
计算效率 | 高(O(n²)) | 低(O(n²logn)) |
参数敏感性 | 受sigma和核大小共同影响 | 仅受核大小影响 |
核大小要求 | 正奇数 | 正奇数 |
四、实际应用建议
噪声类型判断:
- 高斯噪声(如传感器热噪声) → 高斯模糊
- 椒盐噪声(如传输错误) → 中值模糊
参数选择策略:
- 高斯模糊:优先调整sigma,核大小通常取(2σ+1)×(2σ+1)
- 中值模糊:从3×3开始尝试,噪声严重时逐步增大
性能优化:
- 嵌入式系统建议使用高斯模糊(计算量小)
- 中值模糊可考虑分离核优化(OpenCV已内部实现)
组合使用: 复杂场景可先中值去椒盐噪声,再高斯模糊去除剩余高斯噪声