OpenCV图像去噪实战:用GaussianBlur给老照片修复降噪,对比3x3、5x5、7x7核效果
翻开泛黄的家族相册,那些承载着记忆的老照片往往因为年代久远而布满噪点。数字化的扫描过程又可能引入额外的高斯噪声,让本就模糊的画面雪上加霜。本文将带你用OpenCV4的cv::GaussianBlur()函数,通过C++代码一步步实现老照片的智能降噪,并对比不同尺寸高斯核(3x3、5x5、7x7)的处理效果,帮你找到保留珍贵细节与去除噪点之间的最佳平衡点。
1. 高斯滤波原理与老照片修复
高斯滤波之所以成为图像去噪的经典选择,源于其与自然噪声特性的高度契合。不同于简单均值滤波的"一刀切",高斯核为每个像素分配权重时,遵循距离中心越近贡献越大的原则,这种非线性加权方式更符合实际光学系统的物理特性。
对于老照片修复这类特殊场景,我们需要特别注意:
- 纹理保留:旧照中衣物褶皱、发丝等细节具有情感价值
- 噪声特性:扫描件常呈现明显的高斯噪声与椒盐噪声混合
- 边缘保护:过强的平滑会导致人物轮廓模糊失真
高斯滤波的两个关键参数直接影响效果:
- 核尺寸(ksize):决定参与计算的邻域范围
- 标准差(sigma):控制权重分布的陡峭程度
cpp复制// 基础高斯滤波函数原型
void GaussianBlur(InputArray src, OutputArray dst,
Size ksize, double sigmaX,
double sigmaY=0, int borderType=BORDER_DEFAULT);
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 开发环境准备与照片预处理
2.1 环境配置
确保已安装:
- OpenCV 4.x(推荐4.5+)
- C++17兼容编译器
- CMake 3.12+
bash复制# Ubuntu安装示例
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
git
