计算机视觉-高斯噪声

来源:互联网 发布:android 实时监听网络 编辑:程序博客网 时间:2024/06/05 14:15

高斯噪声高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声,通过概率论里关于正态分布的有关知识可以很简单的得到其计算方法,高斯噪声的概率密度服从高斯分布(正态分布)其中有means(平均值)和sigma(标准方差)两个参数。

这里写图片描述

对于每个输入像素,我们可以通过与符合高斯分布的随机数相加, 得到输出像素: Pout = Pin + F(means,sigma)

给一副数字图像加上高斯噪声的处理顺序如下:

a.设定参数sigma 和 Xmean

  • b.产生一个高斯随机数(python.gauss(means,sigma))

  • c.根据输入像素计算出输出像素

  • d.重新将像素值限制或放缩在[0 ~ 255]之间

  • e.循环所有像素

  • f.输出图像。

  • PIL版本

  • # -*- coding: utf-8 -*-from PIL import Imagefrom pylab import *from numpy import*import randompath = "E:/zhz/"#读取图片并转为数组im = array(Image.open(path+'lena.jpg'))#设定高斯函数的偏移means = 10#设定高斯函数的标准差sigma = 40def normal(pixel):    if pixel>255:        pixel = 255    elif pixel<0:        pixel = 0    return pixel#r通道r = im[:,:,0].flatten()#g通道g = im[:,:,1].flatten()#b通道b = im[:,:,2].flatten()#计算新的像素值for i in range(im.shape[0]*im.shape[1]):    pr = normal(int(r[i]) + random.gauss(0,sigma))    pg = normal(int(g[i]) + random.gauss(0,sigma))    pb = normal(int(b[i]) + random.gauss(0,sigma))    r[i] = pr    g[i] = pg    b[i] = pbim[:,:,0] = r.reshape([im.shape[0],im.shape[1]])im[:,:,1] = g.reshape([im.shape[0],im.shape[1]])im[:,:,2] = b.reshape([im.shape[0],im.shape[1]])#显示图像imshow(im)show()       
    OpenCV+Numpy版本:




原创粉丝点击