1.椒盐噪声

        Mat dstImage = srcImage.clone();
for (int k = ; k < n; k++)
{
//随机取值行列
int i = rand() % dstImage.rows;
int j = rand() % dstImage.cols;
//图像通道判定
if (dstImage.channels() == )
{
dstImage.at<uchar>(i, j) = ; //盐噪声
}
else
{
dstImage.at<Vec3b>(i, j)[] = ;
dstImage.at<Vec3b>(i, j)[] = ;
dstImage.at<Vec3b>(i, j)[] = ;
}
}
for (int k = ; k < n; k++)
{
//随机取值行列
int i = rand() % dstImage.rows;
int j = rand() % dstImage.cols;
//图像通道判定
if (dstImage.channels() == )
{
dstImage.at<uchar>(i, j) = ; //椒噪声
}
else
{
dstImage.at<Vec3b>(i, j)[] = ;
dstImage.at<Vec3b>(i, j)[] = ;
dstImage.at<Vec3b>(i, j)[] = ;
}
}

2.高斯噪声

高斯噪声是指高绿密度函数服从高斯分布的一类噪声。特别的,假设一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度有事均匀分布的,则称这个噪声为高斯白噪声。

高斯白噪声二阶矩不相关。一阶矩为常数,是指先后信号在时间上的相关性。高斯噪声包含热噪声和三里噪声。

高斯噪声万有由它的事变平均值和两瞬时的协方差函数来确定,若噪声是平稳的。则平均值与时间无关,而协方差函数则变成仅和所考虑的两瞬时之差有关的相关函数。在意义上它等同于功率谱密度。高斯早生能够用大量独立的脉冲产生,从而在不论什么有限时间间隔内。这些脉冲中的每个买充值与全部脉冲值得总和相比都可忽略不计。

依据Box-Muller变换原理,建设随机变量U1、U2来自独立的处于(0,1)之间的均匀分布,则经过以下两个式子产生的随机变量Z0。Z1服从标准高斯分布。

上式中Z0,Z1满足正态分布,当中均值为0,方差为1,变量U1和U2能够改动为下式:

#define TWO_PI 6.2831853071795864769252866  

double generateGaussianNoise()
{
static bool hasSpare = false;
static double rand1, rand2; if(hasSpare)
{
hasSpare = false;
return sqrt(rand1) * sin(rand2);
} hasSpare = true; rand1 = rand() / ((double) RAND_MAX);
if(rand1 < 1e-) rand1 = 1e-;
rand1 = - * log(rand1);
rand2 = (rand() / ((double) RAND_MAX)) * TWO_PI; return sqrt(rand1) * cos(rand2);
}
void AddGaussianNoise(Mat& I)
{
// accept only char type matrices
CV_Assert(I.depth() != sizeof(uchar)); int channels = I.channels(); int nRows = I.rows;
int nCols = I.cols * channels; if(I.isContinuous()){
nCols *= nRows;
nRows = ;
} int i,j;
uchar* p;
for(i = ; i < nRows; ++i){
p = I.ptr<uchar>(i);
for(j = ; j < nCols; ++j){
double val = p[j] + generateGaussianNoise() * ;
if(val < )
val = ;
if(val > )
val = ; p[j] = (uchar)val; }
} }

【OpenCV, MFC, DIP】向图像中加入各种噪声的更多相关文章

  1. (转)使用Python和OpenCV检测图像中的物体并将物体裁剪下来

    原文链接:https://blog.csdn.net/liqiancao/article/details/55670749 介绍 硕士阶段的毕设是关于昆虫图像分类的,代码写到一半,上周五导师又给我新的 ...

  2. 深入学习OpenCV检测及分割图像的目标区域

    准备1:OpenCV常用图片转换技巧 在进行计算机视觉模型训练前,我们经常会用到图像增强的技巧来获取更多的样本,但是有些深度学习框架中的方法对图像的变换方式可能并不满足我们的需求,所以掌握OpenCV ...

  3. 访问图像中的像素[OpenCV 笔记16]

    再更一发好久没更过的OpenCV,不过其实写到这个部分对计算机视觉算法有所了解的应该可以做到用什么查什么了,所以后面可能会更的慢一点吧,既然开了新坑,还是机器学习更有研究价值吧... 图像在内存中的存 ...

  4. OpenCV——反向投影(定位模板图像在输入图像中的位置)

    反向投影: #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namesp ...

  5. 【opencv学习笔记七】访问图像中的像素与图像亮度对比度调整

    今天我们来看一下如何访问图像的像素,以及如何改变图像的亮度与对比度. 在之前我们先来看一下图像矩阵数据的排列方式.我们以一个简单的矩阵来说明: 对单通道图像排列如下: 对于双通道图像排列如下: 那么对 ...

  6. C#使用OpenCV剪切图像中的圆形和矩形

    前言 本文主要介绍如何使用OpenCV剪切图像中的圆形和矩形. 准备工作 首先创建一个Wpf项目--WpfOpenCV,这里版本使用Framework4.7.2. 然后使用Nuget搜索[Emgu.C ...

  7. opencv 替换图像中的一部分

    首先选取图像中的Roi区域,然后对Roi区域进行赋值,那么原图像相应的区域也跟着变化了: dst = src.clone(); cv::Mat Roi(dst, cv::Rect(x, y, cut_ ...

  8. Opencv+MFC获取摄像头数据,显示在Picture控件

    分为两步:OpenCV获取摄像头数据+图像在Picture上显示 第一步:OpenCV获取摄像头数据 参考:http://www.cnblogs.com/epirus/archive/2012/06/ ...

  9. OpenCV 第二课 认识图像的存储结构

    OpenCV 第二课 认识图像的存储结构 Mat Mat 类包含两部分,矩阵头和矩阵体.矩阵头包含矩阵的大小,存储方式和矩阵体存储空间的指针.因此,Mat中矩阵头的大小是固定的,矩阵体大小是不定的. ...

随机推荐

  1. sshfs把远程主机的文件系统映射到本地的目录中(转载)

    转自:http://www.fwolf.com/blog/post/329 windows之外的世界比想像中要大得多呢,几乎天天都在用ssh,却到今天才知道有sshfs这个好东西,前几天还在为Zend ...

  2. sqlalchemy配置多读写库多连接后的关系设置

    前言 一般来说,解决sqlalchemy 连接多个库的最简单的方式是新建两个或多个db.session 相互没有关联,modle配置不同的db.session来连接,这样的话,relationship ...

  3. 【原创】Eclipse实现图形化界面插件-vs4e

    vs4e插件下载地址:http://visualswing4eclipse.googlecode.com/files/vs4e_0.9.12.I20090527-2200.zip 下载完成后,解压,然 ...

  4. 《Maven实战》(许晓斌)导读(读书笔记&第二次读后感)

    第一章 Maven简介 Maven是构建工具,但同时还是jar包管理工具.项目信息管理工具 与Make.Ant比较,更为先进 第二章 Maven的安装和配置 Windows和Unix上安装都很简单,下 ...

  5. [USACO09NOV]灯Lights

    题目描述 Bessie and the cows were playing games in the barn, but the power was reset and the lights were ...

  6. ACM_递推题目系列之三放苹果(递推dp)

    递推题目系列之三放苹果 Time Limit: 2000/1000ms (Java/Others) Problem Description: 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放 ...

  7. working hard to be a professional coder

    1:read 2 : code 3 : 勤奋 4:技术栈 就前端主流技术框架的发展而言,过去的几年里发展极快,在填补原有技术框架空白和不足的同时也渐渐趋于成熟.未来前端在已经趋向成熟的技术方向上面将会 ...

  8. elasticsearch 查询优化

    首先对不必要的字段不做分词也就是不做索引,禁止内存交换 1.shard 一个Shard就是一个Lucene实例,是一个完整的搜索引擎. 分片数过多会导致检索时打开比较多的文件,多台服务器之间通讯成本加 ...

  9. scala-基础-映射(1)

    //映射(1)-构建,获取,更新,迭代,反转,映射(可变与不可变 互换) class Demo1 extends TestCase { //构建与获取 def test_create_^^(){ // ...

  10. Unity笔记(3)自学第三天

    学习记录: 脚本使用: