数学之路-python计算实战(7)-机器视觉-图像产生加性零均值高斯噪声
图像产生加性零均值高斯噪声。在灰度图上加上噪声,加上噪声的方式是每一个点的灰度值加上一个噪声值。噪声值的产生方式为Box-Muller算法生成高斯噪声。
在计算机模拟中,常常须要生成正态分布的数值。最主要的一个方法是使用标准的正态累积分布函数的反函数。
除此之外还有其它更加高效的方法。Box-Muller变换就是当中之中的一个。
还有一个更加快捷的方法是ziggurat算法。以下将介绍这两种方法。
一个简单可行的而且easy编程的方法是:求12个在(0,1)上均匀分布的和。然后减6(12的一半)。
这样的方法能够用在非常多应用中。这12个数的和是Irwin-Hall分布;选择一个方差12。这个随即推导的结果限制在(-6,6)之间,而且密度为12。是用11次多项式预计正态分布。
Box-Muller方法是以两组独立的随机数U和V。这两组数在(0,1]上均匀分布。用U和V生成两组独立的标准常态分布随机变量X和Y:
。
这个方程的提出是由于二自由度的卡方分布非常easy由指数随机变量(方程中的lnU)生成。因而通过随机变量V能够选择一个均匀围绕圆圈的角度,用指数分布选择半径然后变换成(正态分布的)x,y坐标。
Box-Muller 是产生随机数的一种方法。Box-Muller 算法隐含的原理非常深奥。但结果却是相当简单。
它通常是要得到服从正态分布的随机数。基本思想是先得到服从均匀分布的随机数再将服从均匀分布的随机数转变为服从正态分布。
# -*- coding: utf-8 -*-
#加性零均值高斯噪声
#code:myhaspl@myhaspl.com
import cv2
import numpy as np fn="test2.jpg"
myimg=cv2.imread(fn)
img=cv2.cvtColor(myimg,cv2.COLOR_BGR2GRAY) param=30
#灰阶范围
grayscale=256
w=img.shape[1]
h=img.shape[0]
newimg=np.zeros((h,w),np.uint8) for x in xrange(0,h):
for y in xrange(0,w,2):
r1=np.random.random_sample()
r2=np.random.random_sample()
z1=param*np.cos(2*np.pi*r2)*np.sqrt((-2)*np.log(r1))
z2=param*np.sin(2*np.pi*r2)*np.sqrt((-2)*np.log(r1)) fxy=int(img[x,y]+z1)
fxy1=int(img[x,y+1]+z2)
#f(x,y)
if fxy<0:
fxy_val=0
elif fxy>grayscale-1:
fxy_val=grayscale-1
else:
fxy_val=fxy
#f(x,y+1)
if fxy1<0:
fxy1_val=0
elif fxy1>grayscale-1:
fxy1_val=grayscale-1
else:
fxy1_val=fxy1
newimg[x,y]=fxy_val
newimg[x,y+1]=fxy1_val cv2.imshow('preview',newimg)
cv2.waitKey()
cv2.destroyAllWindows()
本博客全部内容是原创,假设转载请注明来源
http://blog.csdn.net/myhaspl/
以下部分代码为彩色图像的高斯噪声产生
# -*- coding: utf-8 -*-
#加性零均值高斯噪声
#code:myhaspl@myhaspl.com
import cv2
import numpy as np fn="test2.jpg"
myimg=cv2.imread(fn)
img=myimg param=30
#灰阶范围
grayscale=256
w=img.shape[1]
h=img.shape[0]
newimg=np.zeros((h,w,3),np.uint8) for x in xrange(0,h):
for y in xrange(0,w,2):
r1=np.random.random_sample()
r2=np.random.random_sample()
z1=param*np.cos(2*np.pi*r2)*np.sqrt((-2)*np.log(r1))
z2=param*np.sin(2*np.pi*r2)*np.sqrt((-2)*np.log(r1))
.........
.........
newimg[x,y,0]=fxy_val_0
newimg[x,y,1]=fxy_val_1
newimg[x,y,2]=fxy_val_2
newimg[x,y+1,0]=fxy1_val_0
newimg[x,y+1,1]=fxy1_val_1
newimg[x,y+1,2]=fxy1_val_2 cv2.imshow('preview',newimg)
cv2.waitKey()
cv2.destroyAllWindows()
数学之路-python计算实战(7)-机器视觉-图像产生加性零均值高斯噪声的更多相关文章
- 数学之路-python计算实战(17)-机器视觉-滤波去噪(中值滤波)
Blurs an image using the median filter. C++: void medianBlur(InputArray src, OutputArray dst, int ks ...
- 数学之路-python计算实战(15)-机器视觉-滤波去噪(归一化块滤波)
# -*- coding: utf-8 -*- #code:myhaspl@myhaspl.com #归一化块滤波 import cv2 import numpy as np fn="tes ...
- 数学之路-python计算实战(21)-机器视觉-拉普拉斯线性滤波
拉普拉斯线性滤波,.边缘检測 . When ksize == 1 , the Laplacian is computed by filtering the image with the follow ...
- 数学之路-python计算实战(20)-机器视觉-拉普拉斯算子卷积滤波
拉普拉斯算子进行二维卷积计算,线性锐化滤波 # -*- coding: utf-8 -*- #线性锐化滤波-拉普拉斯算子进行二维卷积计算 #code:myhaspl@myhaspl.com impor ...
- 数学之路-python计算实战(14)-机器视觉-图像增强(直方图均衡化)
我们来看一个灰度图像,让表示灰度出现的次数,这样图像中灰度为 的像素的出现概率是 是图像中全部的灰度数, 是图像中全部的像素数, 实际上是图像的直方图,归一化到 . 把 作为相应于 的累计概率 ...
- 数学之路-python计算实战(19)-机器视觉-卷积滤波
filter2D Convolves an image with the kernel. C++: void filter2D(InputArray src, OutputArray dst, int ...
- 数学之路-python计算实战(9)-机器视觉-图像插值仿射
插值 Python: cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) → dst interpolation – interpol ...
- 数学之路-python计算实战(13)-机器视觉-图像增强
指数变换的基本表达式为:y=bc(x-a)-1 当中參数b.c控制曲线的变换形状,參数a控制曲线的位置. 指数变换的作用是扩展图像的高灰度级.压缩低灰度级.能够用于亮度过高的图像 本博客全部内容是原创 ...
- 数学之路-python计算实战(16)-机器视觉-滤波去噪(邻域平均法滤波)
# -*- coding: utf-8 -*- #code:myhaspl@myhaspl.com #邻域平均法滤波,半径为2 import cv2 import numpy as np fn=&qu ...
随机推荐
- node搭建服务器
创建简单的服务器,可以简单连接 var http = require("http"); var server = http.createServer(); server.on(&q ...
- BZOJ3511: 土地划分(最小割)
Description Y国有N座城市,并且有M条双向公路将这些城市连接起来,并且任意两个城市至少有一条路径可以互达. Y国的国王去世之后,他的两个儿子A和B都想成为新的国王,但他们都想让这个国家更加 ...
- Java生产者与消费者(上)
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 生产与消费者模式,是编程中最常用的模式之一,在多线程中应用比较明显.个人理解:在自助餐厅,厨师在不断 ...
- [Python] String Formatting
One particularly useful string method is format. The format method is used to construct strings by i ...
- UVa 11094 - Continents
题目:有一些岛屿在湖中.地图用两种字符表示.当前处在位置是一个岛屿.求除了当前岛屿外的最大岛屿. 分析:图论,floodfill.直接利用dfs求联通部分的面积就可以,然后取出最大. 说明:横线没有边 ...
- 关于bcg库记忆界面的问题及其解决办法
作者:朱金灿 来源:http://blog.csdn.net/clever101 今天同事向我请教一个问题,说他使用BCG创建了一个停靠栏,之后把代码注释了,但是程序启动时总出现一个Debug Ass ...
- (转)Tomcat调优
问题定位 对于Tomcat的处理耗时较长的问题主要有当时的并发量.session数.内存及内存的回收等几个方面造成的.出现问题之后就要进行分析了. 1.关于Tomcat的session数目 这个可以直 ...
- [Node & Testing] Intergration Testing with Node Express
We have express app: import _ from 'lodash' import faker from 'faker' import express from 'express' ...
- Mining Station on the Sea (hdu 2448 SPFA+KM)
Mining Station on the Sea Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Jav ...
- bootstrap课程9 bootstrap如何实现动画加载进度条的效果
bootstrap课程9 bootstrap如何实现动画加载进度条的效果 一.总结 一句话总结:在bootstrap进度条的基础上添加js(定时器),动态的改变进度条即可.很简单的. 1.路径导航是什 ...
