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. vue-easytable

    github地址:https://github.com/huangshuwei/vue-easytable

  2. bzoj 4297: [PA2015]Rozstaw szyn【瞎搞】

    从叶子往上先拓扑一下,建立虚拟root,从root开始dfs.注意到每个点的最优取值一定是一个区间(中位数区间),从儿子区间推出父亲区间即可 #include<iostream> #inc ...

  3. robotframework - 基础关键词

    robotframework基础关键词如下: 1.可在python.notepad++ 编辑: *** Settings *** *** Test Cases ***variable ${a} Set ...

  4. WKWebView 和 UIWebView 允许背景音乐自动播放(记录)

    WKWebView WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init]; config.allowsInlin ...

  5. 莫队算法 Gym - 100496D Data Mining

    题目传送门 /* 题意:从i开始,之前出现过的就是之前的值,否则递增,问第p个数字是多少 莫队算法:先把a[i+p-1]等效到最前方没有它的a[j],问题转变为求[l, r]上不重复数字有几个,裸莫队 ...

  6. ACM_递推题目系列之二认错人(递推dp)

    递推题目系列之二认错人 Time Limit: 2000/1000ms (Java/Others) Problem Description: 国庆期间,省城HZ刚刚举行了一场盛大的集体婚礼,为了使婚礼 ...

  7. msxml3.dll 错误 '800c0005' 系统错误: -2146697211。

    asp网站 因为这个问题,困扰自己好多次,还重装过两次服务器系统,非常的麻烦,这次终于找到了问题所在,记录下来,方便以后查看. 服务器症状: 1.服务器上的IE浏览器不能访问外网: 2.set htt ...

  8. 从React看weight开发

    从当前云发展的势头来看几乎所有互联网应用都趋向大一统的趋势,一个node下面加一堆应用,同时我们项目也趋向把复杂的大应用拆分成多个小应用,通过各种复杂的Api来协作,通信,达到同样的效果. 可以看出, ...

  9. Python之Pandas中Series、DataFrame实践

    Python之Pandas中Series.DataFrame实践 1. pandas的数据结构Series 1.1 Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一 ...

  10. self和super的区别

    (1)self调用自己方法,super调用父类方法 (2)self是类,super是预编译指令 (3)[self class]和[super class]输出是一样的 ①当使用 self 调用方法时, ...