博客
关于我
OpenCV4.0进阶(4)图像噪声
阅读量:518 次
发布时间:2019-03-08

本文共 2207 字,大约阅读时间需要 7 分钟。

图像噪声及处理方法

在图像处理领域,噪声是影响图像质量的重要因素之一。噪声通常来源于数字信号传输过程中的干扰,或是成像设备在拍摄过程中受到环境因素的影响。这种噪声会导致图像的亮度、颜色等现象失真,进而影响图像的可用性和视觉效果。

根据噪声的类型,我们可以将主要的图像噪声分为三类:椒盐噪声、高斯噪声以及均匀分布噪声。

1. 椒盐噪声

椒盐噪声是一种典型的随机分布型噪声,特点是通过在图像的某些像素位置添加极少量的点状变动。其子像素点的颜色和亮度都会发生显著变化。值得注意的是,椒盐噪声在图像中可以展示出较高的可见度,因为它会随机地在图像中以盐粒形态出现。此类噪声的处理方法中,图像中值滤波通常被视为一种有效的手段。

2. 高斯噪声

高斯噪声(Gaussian Noise)的特征是其值服从高斯分布。这种噪声通常发生在数字信号传输、光纤通信等过程中的线路失真中。此外,高斯噪声也可能是成像设备在拍摄时,因光学干扰或电子环节异常导致的。高斯噪声具有其特点的颜色和亮度重叠,使得处理起来需要选择合适的滤波方法,以达到降低噪声干扰的目的。需要注意的是,高斯噪声在处理阶段可以通过设置合适的均值和方差参数来去除。

3. 均匀分布噪声

均匀分布噪声的特点在于其值在某个特定的范围内保持均匀分布。这种类型的噪声一般是由于某些系统性错误引起的,例如传感器校准不准确或传输介质受到规律性的干扰。虽然这种噪声的颜色变化不如椒盐噪声明显,但其特征较为规则,处理起来相对来说也比较简单。

图像噪声的处理代码演示

为了更直观地理解上述知识点,以下将展示两种常见噪声类型的的实现代码。

#include 
#include
#include
using namespace std;using namespace cv;/* 添加椒盐噪声 */void add_salt_pepper_noise(Mat &image) { RNG rng(12345); // 设置随机数种子 int h = image.rows; int w = image.cols; int num_salt = 5000; // 噪声点的数量 for (int i = 0; i < num_salt; ++i) { int x = static_cast
(rng.uniform(0, w)); int y = static_cast
(rng.uniform(0, h)); if (i % 2 == 1) { // 偶数为白色点,奇数为黑色点 image.at
(y, x) = Vec3b(255, 255, 255); } else { image.at
(y, x) = Vec3b(0, 0, 0); } }}/* 添加高斯噪声 */void add_gaussian_noise(Mat &image) { int h = image.rows; int w = image.cols; int channels = image.channels(); // 初始化高斯噪声矩阵 Mat noise = Mat::zeros(h, w,.CV_8UC3); RNG& rng = RNG::defaultRNG(); // 高斯分布参数 const double mean = 15; const double dev = 30; // 生成噪声矩阵 noise = rng.randuX adhere > scratch memory output would filter better. ... // 使用randn函数生成高斯噪声}// 主函数void main() { // 读取原始图像 Mat src = imread("girl2.jpg"); if (src.empty()) { printf("无法加载图像...\n"); return; } // 显示原始图像 namedWindow("原始图像", WINDOW_AUTOSIZE); imshow("原始图像", src); // 添加椒盐噪声 add_salt_pepper_noise(src); namedWindow("椒盐噪声图像"); imshow("椒盐噪声图像", src); // 添加高斯噪声 add_gaussian_noise(src); namedWindow("高斯噪声图像"); imshow("高斯噪声图像", src); waitKey(0);}

结果展示

上述代码实现了椒盐噪声和高斯噪声两种类型的图像噪声生成功能。通过这些代码,可以直观地观察图像在添加不同类型噪声后的变化情况。

如果需要进一步优化图像质量,可以结合滤波技术(如中值滤波、高斯滤波等)来减少噪声影响。如果您对数据恢复技术感兴趣,可以尝试基于先验知识的修复方法。这将帮助您在实际项目中更好地解决图像质量问题。

转载地址:http://ruwiz.baihongyu.com/

你可能感兴趣的文章
http头部 Expect
查看>>
Hadoop(十六)之使用Combiner优化MapReduce
查看>>
C#实现outlook自动签名
查看>>
《机器学习Python实现_10_06_集成学习_boosting_gbdt分类实现》
查看>>
CoreCLR源码探索(八) JIT的工作原理(详解篇)
查看>>
LeetCode 637 二叉树的层平均值-简单
查看>>
IOS开发Swift笔记16-错误处理
查看>>
flume使用中的一些常见错误解决办法 (地址已经使用)
查看>>
设计模式-创建型02-工厂模式-工厂方法模式01
查看>>
【Java-27】Java常见错误记录
查看>>
andriod 开发错误记录
查看>>
C语言编译错误列表
查看>>
看明白这两种情况,才敢说自己懂跨链! | 喵懂区块链24期
查看>>
数字印钞界迎来重磅精英机构,普通人还有翻身机会吗? | 加密货币与阶层穿越...
查看>>
张一鸣:创业7年,我经历的5件事
查看>>
SQL基础语法
查看>>
git拉取远程指定分支代码
查看>>
C语言--C语言总结大纲
查看>>
CentOS5 Linux编译PHP 报 mysql configure failed 错误解决办法
查看>>
idea上的程序报错-> 错误: 找不到或无法加载主类
查看>>