OpenCV 4中同样没有专门为图像添加高斯噪声的函数,对照在图像中添加椒盐噪声的过程,我们可以根据需求利用能够产生随机数的函数来完成在图像中添加高斯噪声的任务。在OpenCV 4中提供了fill()函数可以产生均匀分布或者高斯分布(正态分布)的随机数,我们可以利用该函数产生符合高斯分布的随机数,之后在图像中加入这些随机数即可,我们首先了解该函数的使用方式,该函数的函数原型在代码清单5-5中给出。

void cv::RNG::fill(InputOutputArray mat,int  distType,InputArray a,InputArray b,bool  saturateRange = false )
  • mat:用于存放随机数的矩阵,目前只支持低于5通道的矩阵。
  • distType:随机数分布形式选择标志,目前生成的随机数支持均匀分布(RNG::UNIFORM,0)和高斯分布(RNG::NORMAL,1)。
  • a:确定分布规律的参数。当选择均匀分布时,该参数表示均匀分布的最小下限;当选择高斯分布时,该参数表示高斯分布的均值。
  • b:确定分布规律的参数。当选择均匀分布时,该参数表示均匀分布的最大上限;当选择高斯分布时,该参数表示高斯分布的标准差。
  • saturateRange:预饱和标志,仅用于均匀分布。

该函数用于生成指定分布形式的随机数填充矩阵,可以生成符合均匀分布的随机数符合高斯分布随机数。函数的第一个参数输入用于存储生成随机数的矩阵,但是矩阵的通道数必须小于等于4。第二个参数是选择随机数分布形式的标志,该函数目前只支持两种分布形式,分别是均匀分布(RNG::UNIFORM,简记0)和高斯分布(RNG::NORMAL,简记1)。函数的第三个和第四个参数为确定随机数分布规律的参数,第三个参数在均匀分布时表示均匀分布的最小下限,在高斯分布时表示高斯分布的均值;第四个参数在均匀分布时表示均匀分布的最大上限,在高斯分布时表示高斯分布的标准差。最后一个参数是预饱和标志,仅用于均匀分布,我们使用其默认式即可。需要注意的是该函数属于OpenCV 4的RNG类,是一个非静态成员函数,因此在使用的时候不能像使用正常函数一样的直接使用,而需要首先创建一个RNG类的变量,之后通过访问这个变量中函数进行调用这个函数,具体使用方式在代码清单5-6中给出。

cv::RNG rng;
rng.fill(mat, RNG::NORMAL, 10, 20);

在图像中添加高斯噪声大致分为以下4个步骤:
Step1:首先需要创建一个与图像尺寸、数据类型以及通道数相同的Mat类变量.
Step2:通过调用fill()函数在Mat类变量中产生符合高斯分布的随机数。
Step3:将原图像和含有高斯分布的随机数矩阵相加。
Step4:得到添加高斯噪声之后的图像。

依照上述思想,在代码清单5-7中给出了在图像中添加高斯噪声的示例程序,程序实现了对灰度图像和彩色图像添加高斯噪声,在图像中添加高斯噪声的结果如图5-8、图5-9所示,由于高斯噪声是随机生成的,因此每次运行结果会有差异。

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;int main(){Mat img_=imread("luffy.jpg");Mat luffy;resize(img_,luffy,Size(img_.cols/2,img_.rows/2));Mat luffy_gray;cvtColor(luffy,luffy_gray,COLOR_BGR2GRAY);if(luffy.empty()||luffy_gray.empty()){cout<<"请确认输入的路径是否正确"<<endl;return -1;}//生成与原图像相同尺寸、数据类型和通道类型的矩阵Mat luffy_noise=Mat::zeros(luffy.rows,luffy.cols,luffy.type());Mat luffy_gray_noise=Mat::zeros(luffy.rows,luffy.cols,luffy_gray.type());imshow("luffy原图",luffy);imshow("luffy_gray原图",luffy_gray);RNG rng;//创建一个RNG类rng.fill(luffy_noise,RNG::NORMAL,10,20);//生成三通道的高斯分布随机数rng.fill(luffy_gray_noise,RNG::NORMAL,15,30);//生成三通道的高斯分布随机数imshow("三通道高斯噪声",luffy_noise);imshow("单通道高斯噪声",luffy_gray_noise);luffy=luffy+luffy_noise;//在彩色图像中添加高斯噪声luffy_gray=luffy_gray+luffy_gray_noise;//在灰度图像中添加高斯噪声//显示添加高斯噪声后的图像imshow("lufy添加噪声",luffy);imshow("lufy_gray添加噪声",luffy_gray);waitKey(0);return 0;
}

C++版本OpenCv教程(二十七)图像中添加高斯噪声相关推荐

  1. 向数据中添加高斯噪声

    什么是高斯噪声 高斯噪声既是符合高斯正态分布的误差.一些情况下我们需要向标准数据中加入合适的高斯噪声会让数据变得有一定误差而具有实验价值.高斯噪声还有一些其他用途但是我不太了解,这里我是为了实现多项式 ...

  2. 通过matlab编程,对以下图像分别添加高斯噪声和椒盐噪声(参数自定),并使用理想低通滤波器、高斯低通滤波器和巴特沃斯低通滤波器进行去噪。

    添加高斯噪声和椒盐噪声,并用理想低通滤波器进行去噪 t=imread('C:\Users\Administrator\Desktop\123.jpg'); subplot(3,2,1) imshow( ...

  3. C++版本OpenCv教程(二十四)直方图匹配

    直方图均衡化函数可以自动的改变图像直方图的分布形式,这种方式极大的简化了直方图均衡化过程中需要的操作步骤,但是该函数不能指定均衡化后的直方图分布形式.在某些特定的条件下需要将直方图映射成指定的分布形式 ...

  4. 通过matlab编程,对该图像分别添加高斯噪声和椒盐噪声(参数自定),并使用均值滤波、高斯滤波和中值滤波进行去噪。

    分别添加高斯和椒盐噪声 im = imread('C:\Users\Administrator\Desktop\123456.jpg');% 1)生成含有高斯噪声.椒盐噪声的图像 % imnoise ...

  5. python中添加高斯噪声_关于python:高斯噪声与高斯白噪声

    高斯噪声与白高斯噪声有何不同? 在我阅读高斯噪声时,PDF具有正态分布. 白高斯噪声也有吗? 如何使用Python手动(没有内置函数)为图像生成每种噪声? 我需要考虑哪些参数? 让我们从头开始研究短语 ...

  6. C++版本OpenCv教程

    C++版本OpenCv教程(一)Mat-基本的图像容器 目标 我们有多种方法从现实世界获取数字图像:数码相机.扫描仪.计算机断层扫描和磁共振成像等等.在以上任何情况下,我们(人类)看到的都是图像.然而 ...

  7. python实现向图像随机添加高斯白噪声,并修改尺寸

    基于python向图像随机添加高斯噪声,并修改尺寸 噪声分布设置为(均值为0,方差分布在0~50之间) # -*- coding: utf-8 -*- """ Creat ...

  8. 使用OpenCV和Python从图像中提取形状

    Welcome to the first post in this series of blogs on extracting features from images using OpenCV an ...

  9. 使用Python,OpenCV+OCR检测护照图像中的机器可读区域(MRZ Machine-Readable Zones)

    使用Python,OpenCV+OCR检测护照图像中的机器可读区域(MRZ Machine-Readable Zones) 1. 效果图 2. 原理 3. 源码 参考 这篇博客将介绍如何只使用基本的图 ...

最新文章

  1. 微信小程序 统一支付 php,微信/微信小程序统一下单(PHP版)
  2. java设计模式之装饰器模式
  3. InnoDB memcached插件部署
  4. php动态网页设计制作作业成品
  5. keras+tensorflow —— 可视化及tensorboard
  6. ERP计划参数如何在线更新
  7. python3.7 倒计时
  8. 创建一个超链接,点击这个超链接,显示数据库中的数据信息:MVC模式查询
  9. Android项目之电话黑名单
  10. python全套 百度云-2018年6月北京黑马python24期全套视频课程
  11. fc安卓模拟器_跨平台游戏模拟器RetroArch,一个软件畅玩FC 、MD、SFC、GBA游戏
  12. python做excel表格合并_Python实战:合并 Excel 表格
  13. USRPx310的射频板UBX160
  14. HttpClientHelper
  15. iOS12 Xcode10正式版问题汇总以及新特性(持续更新中....)
  16. win10电脑计算机内存不足,win10系统电脑总是提示“计算机的内存不足”的恢复方案...
  17. CG插画培训班有哪些
  18. 《通信技术导论(原书第5版)》——导读
  19. 卸载wrapt_conda 安装与卸载cudnn
  20. intel硬件视频加速技术简单整理

热门文章

  1. bg算法 matlab,求助大神,有关BG算法
  2. 维昇药业冲刺港交所上市:暂未实现商业化,2021年亏损约4.9亿元
  3. 智慧交通引领不一样的未来出行
  4. 大数据为何成为IT行业热门高薪岗位?
  5. Apache和php安装
  6. igcse计算机科学知识点,常考的IGCSE生物知识点汇总 IG生物想拿A*这些考点你都会做了吗...
  7. DOM中的动态NodeList与静态NodeList
  8. 解决matlab打开批量脚本文件[中文乱码]问题
  9. 这届程序YUAN可太优秀了
  10. [UE5蓝图基础二]1.[1d混合空间] 走和跑的动画切换(shift切换)