使用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. 值得研究的 开源数据库
  2. python3.6 安装Scrapy
  3. 题目SPOOLing系统的设计与实现
  4. CentOS误删python环境后怎么办?
  5. 电子相册系统(七)查看原图
  6. Carrot2对文章进行聚类代码示例
  7. 创客匠人工具助力教培机构快速适应线上教学
  8. CCS的c语言编程,CCS_C语言编程
  9. 90行代码爬取链家广州二手房相关信息
  10. 免费开源Blazor在线Ico转换工具
  11. android 摇一摇脚本,python for android : 手机摇一摇
  12. 视频教程-嵌入式Linux驱动教程(韦东山2期)-驱动/内核开发
  13. cesium实现立体墙(垂直、水平)渐变泛光效果
  14. 咸阳师范学院计算机学院女生多嘛,咸阳师范学院宿舍条件怎么样
  15. 数据分析实战项目2:优衣库销售数据分析
  16. union与order by 结合使用
  17. AngularJS博友的笔记教程
  18. 智慧消防让生活更加便利
  19. 设计模式-03(软件设计原则)
  20. 多商户商城系统功能拆解17讲-平台端订单列表

热门文章

  1. 利用WireShark分析H264码流
  2. 【Java】 Java中接口是什么,以及接口的使用和理解
  3. 使用python制作矢量图
  4. Android 端音频变声方案
  5. 北斗产业有哪些“芯”优势
  6. 苹果手机(IOS)蓝牙相关知识【配对后蓝牙设置界面i标识】【连接参数的限制】[只以地址作为识别依据]
  7. 这个Python脚本牛逼了,秒抢红包就算了,还能无视撤回消息
  8. Pure DNS 可能是迄今最不稳定的DNS
  9. JavaScript入门,难不难你来说
  10. 程序员视角:鹿晗公布恋情是如何把微博搞炸的?