使用2D矢量场的 LIC(line integral convolution ) 算法时,需要使用 白噪声图片 作为输入。查阅了相关资料。整理如下:

1. 白噪声的定义

白光是所有颜色的光的叠加而成,不同颜色的光本质区别是他们的频率不同(如 红光频率低、紫光频率高)。与白光类似,白噪声在功率谱密度上(若以频率为横轴,信号幅度的平方为功率(在纵轴上))分布为常值,即从高频到低频各种频率的噪声都有(从频域上考虑),也即每个时刻出现的噪声幅值都是随机的(从时域上考虑)。

2. 高斯白噪声的定义

高斯分布又名正态分布。(正态分布的概率密度函数曲线图,见 http://zh.wikipedia.org/wiki/File:Normal_distribution_pdf.png )

曲线的形状由两个参数决定:均值 和方差

a. 均值公式:   。均值决定了曲线的对称中线;

b.方差公式:。 方差决定曲线的胖瘦,即贴近中线的程度。

概率密度定义了信号出现的频率随幅值的变化情况,以信号幅值为横轴,以出现的频率为纵轴。因此,从概率密度角度来说,高斯白噪声的幅度服从高斯分布。

下面给出了图示说明:

(1) 白噪声

功率谱:(y轴表示噪声值,已归一化至【0,1】区间。)

概率谱:

(2) 高斯白噪声

功率谱:(未作归一化)

                                               概率谱:

代码 1.1. 使用乘同余法  生成 白噪声

/**************************
用乘同余法产生均匀分布白噪声(一串随机序列)。算法及程序实现叙述如下。
1) 在函数之外设定随机种子,随机序列为sequence,长度 n
2)  取 M =2^35,x = (A*x)mod M;e[i]= x/M ; 循环n次,得到均匀分布白噪声序列e[].该伪随机数的循环周期为2^(35-2)。
3) 实际实现中,将 e[i]= x/M ; 替换为 取ei的 小数部分 再赋值给ei+1,循环n次,就得到均匀分布白噪声序列;
*************************/
void whiteNoise(vector<double> &sequence,int n)
{int x = rand();int A = 3125;double M = pow(2.0f,35.0f);sequence.resize(n);double seed =double(x/M);sequence[0]= ( A * seed - int( A * seed ));//取小数部分double average = 0,serror=0; //统计均值、方差for (int i=1;i<n;++i){sequence[i]=( A * sequence[i-1] - int( A * sequence[i-1] ));//取小数部分,获得均匀分布白噪声序列average+=sequence[i];}average/=n;//得到均值for(int i=0;i<n;++i){serror +=(sequence[i]-average)*(sequence[i]-average);}serror/=n;//得到方差
counter1.resize(pieceNum);//用vecotr<double> counter 进行概率统计,共分为 pieceNum 份 进行统计int max=0;for(int i=0;i<n;++i){int index = sequence[i]/double(10.0f/pieceNum)+pieceNum/2;counter1[index]++;if(counter1[index] > max)max=counter1[index];}for(int i=0;i<counter1.size();++i){counter1[i]/=(double)max;    //归一化
    }
}

代码 1.2. 使用 迭代取中法  生成 白噪声

/*************************************用迭代取中法产生均匀分布白噪声
***************************************/
void MakeWhiteNoise(vector<double> &sequence,int  n)
{        sequence.resize(n);for(int  j = 0; j < n;  j ++){    int  r = rand();r = (  (r & 0xff) + ( (r & 0xff00) >> 8 )  ) & 0xff;//截取后8位sequence[j] = (unsigned char) r/(double)0xff;//归一化
        }counter1.resize(pieceNum);//用vecotr<double> counter 进行概率统计,共分为 pieceNum 份 进行统计int max=0;for(int i=0;i<n;++i){int index = sequence[i]/double(10.0f/pieceNum)+pieceNum/2;counter1[index]++;if(counter1[index] > max)max=counter1[index];}for(int i=0;i<counter1.size();++i){counter1[i]/=(double)max;    //归一化
    }
}

代码 2.1.  使用公式生成 高斯白噪声

/*************************先生成两个(0,1)间随机白噪声序列 sq1,sq2,再利用公式: c[i]=serror*(–2*log sq1[i])^0.5*cos(2*pi*sq2[i]) +average 循环n次计算得到均值和方差可任意调整的白噪声序列。
*************************/
void guassWhiteNoise(vector<double> &vdGuassSequence,int n,double average,double serror)
{//根据均值和方差得到调整后的白噪声序列vector<double> sq1,sq2;whiteNoise(sq1,n); //使用乘同余法
    whiteNoise(sq2,n);/*MakeWhiteNoise(sq1,n); //或使用迭代取中法MakeWhiteNoise(sq2,n);*/vdGuassSequence.resize(n);double average2 = 0,serror2=0;//均值、方差for (int i=0;i<n;++i){if(sq1[i]!=0)vdGuassSequence[i]= serror* sqrt((-2) *log(sq1[i])) * sin( 2*PI* sq2[i])  +average;elsevdGuassSequence[i]= serror* sqrt((-2) *log(0.0000001)) * sin( 2*PI* sq2[i])  +average;average2+=vdGuassSequence[i];}average2/=n;//得到均值for(int i=0;i<n;++i){serror2 +=(vdGuassSequence[i]-average2)*(vdGuassSequence[i]-average2);}serror2/=n;//得到方差
counter2.resize(pieceNum+1);//用vecotr<double> counter2 进行概率统计,共分为 pieceNum 份 进行统计int max=0;for(int i=0;i<n;++i){int index = vdGuassSequence[i]/double(20.0f/pieceNum)+pieceNum/2;counter2[index]++;if(counter2[index] > max)max=counter2[index];}for(int i=0;i<counter2.size();++i){counter2[i]/=(double)max;    //归一化
    }
}

成都互联网名气内推群  571551692

图像去模糊系列二 高斯白噪声相关推荐

  1. matlab 图像中加入高斯白噪声,MATLAB——如何给图像添加高斯白噪声

    如何给图像添加高斯白噪声 今天下午到晚上都在看添加高斯噪声的问题,这也是困扰我半年的一个问题了,非常的难以忍受,今天决定征服它!在网上查阅无数资料后,锁定在振动论坛上的这篇文章中:http://www ...

  2. 详解向图像加入高斯白噪声

    记录一下如何向图像中添加高斯白噪声.0均值高斯分布. 通过skimage.util.random_noise添加噪声_aiyaheart的博客-CSDN博客_skimage.util.random_n ...

  3. 卷积滤波 英文_图像的卷积(滤波)运算(二)——高斯滤波

    1.高斯滤波原理 根据数学知识,一维高斯函数可以描述为: 在图像处理中,选定X方向上长度为3的窗口,令δ=1,中心坐标为1,由上述公式,其卷积核(Xa,X,Xb)可以如下计算: Xa = exp(-1 ...

  4. 图像去模糊(逆滤波)

    引言 图像模糊是一种拍摄常见的现象,我曾在图像去模糊(维纳滤波) 介绍过.这里不再详述,只给出物理模型,这里我们仍在频率域表示 G(u,v)=H(u,v)F(u,v)+N(u,v)(1) 其中提到最简 ...

  5. 怎么p出模糊的照片_36. 盲去卷积 - 更加实用的图像去模糊方法

    本文同步发表在我的微信公众号和知乎专栏"计算摄影学",欢迎扫码关注, 上一篇文章35. 去卷积:怎么把模糊的图像变清晰?吸引了很多朋友的关注.在这篇文章里面,我给大家讲了一种叫做& ...

  6. 浅析“高斯白噪声”,“泊松噪声”,“椒盐噪声”的区别

    from:https://www.jianshu.com/p/67f909f3d0ce 在图像处理的过程中,一般情况下都进行图像增强,图像增强主要包括"空域增强"和"频域 ...

  7. python 高斯白噪声-python高斯白噪声

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 白噪声时间序列的例子在本节中,我们将使用python创建一个高斯白噪声序 ...

  8. 如何在信号中添加指定信噪比的高斯白噪声,为何深度学习去噪研究采用高斯白噪声?

    在信号或者图像的降噪研究中,很多学者采用高斯白噪声添加到干净的样本中,来模拟含有噪声的样本,并以此来验证提出模型的降噪效果(比如降噪自编码器--Denoising Autoencoder).有一次投稿 ...

  9. Python+OpenCV图像处理(五)——图像阈值和二值化

    系列文章 Python+OpenCV图像处理(一)--OpenCV框架与图像插值算法 Python+OpenCV图像处理(二)--几何变换 Python+OpenCV图像处理(三)--彩色空间互换 P ...

  10. 证明:高斯白噪声的正交变换仍然是高斯白噪声

    对于正交变换,如 DCT.DST.Haar 变换等等,我们都可以使用一个正交矩阵 A{\bf{A}}A 来表示其变换核.对于一个向量 x\bf{x}x,记我们添加的加性高斯白噪声(Additive W ...

最新文章

  1. 黄聪:DEDECMS联动调用时提示“你设定了字段为联动类型,但系统中没找到与你定义的字段名相同的联动组名!”...
  2. ANDROID L日志系统——JAVAAPI与LIBLOG
  3. ANSYS——常见梁的后处理方法(弯曲应力、弯矩、轴力等的显示)
  4. 【渝粤题库】陕西师范大学210029 幼儿园游戏(学前儿童游戏)作业
  5. 2020年中国直播电商行业研究报告
  6. devexpress 主从表中从主、从表行列值的获得
  7. Drawable和Bitmap的区别
  8. 为你的.NET/Mono应用程序加入更新支持NetSparkle
  9. (转)IE劫持原理 BHO
  10. C#反编译工具ilspy下载地址
  11. 海龟编辑器 html版,海龟编辑器官方版
  12. 超实用一键破解网页不能复制/右键菜单限制的 Bookmarklet 收藏夹书签小工具
  13. 多个条码标签如何在一张纸上打印
  14. idea的tomcat改端口号_Tomcat修改端口
  15. go语言[3]-数组
  16. 做自媒体4大免费网站,帮助我们更快上手运营
  17. 12C新特性--Application Continuity
  18. Duplicate entry ‘‘ for key ‘Primary‘
  19. SeaWeedfs 分布式网络文件存储介绍
  20. python中如何判断大小写_用python如何判断字符的大小写

热门文章

  1. ARC093 F Dark Horse——容斥
  2. Android系统java/native crash和anr异常处理流程以及DroboxManagerService日志记录
  3. php违章查询源码,ThinkPHP聚合数据违章查询接口
  4. [HDU 5956] The Elder (斜率DP + 可持久化单调队列)
  5. linux ftp pure,linux下安装FTP(pure-ftpd)
  6. 郑捷《机器学习算法原理与编程实践》学习笔记(第二章 中文文本分类(三)—KNN算法)...
  7. 目标检测—DiffusionDet:用于检测的概率扩散模型笔记—DDPM
  8. 饥饿的小易 小易总是感觉饥饿,所以作为章鱼的小易经常出去寻找贝壳吃。最开始小易在一个初始位置x_0。对于小易所处的当前位置x,他只能通过神秘的力量移动到 4 * x + 3或者8 * x + 7。因
  9. PPT——地图快速获取(各地区域)
  10. 5G 技术特点与应用