高斯噪声

高斯噪声

图像噪声之高斯噪声(gauss noise)

概述:

高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声

与椒盐噪声相似(Salt And Pepper Noise),高斯噪声(gauss noise)也是数字图像的一个常见噪声。

椒盐噪声是出现在随机位置、噪点深度基本固定的噪声,高斯噪声与其相反,是几乎每个点上都出现噪声、噪点深度随机的噪声。

算法步骤:

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

高斯分布(正态分布):

对于每个输入像素,我们可以通过与符合高斯分布的随机数相加, 得到输出像素:

   Pout = Pin + F(means,sigma)

获得一个符合高斯分布的随机数有好几种方法,比如最基本的一个方法是使用标准的正态累积分布函数的反函数。除此之外还有其他更加高效的方法,Box-Muller变换就是其中之一。另一个更加快捷的方法是ziggurat算法。

而python的random库也提供了产生高斯随机数的方法:

高斯分布
random.gauss(mu, sigma)
Gaussian distribution. mu is the mean, and sigma is the standard deviation. This is slightly faster than the normalvariate() function defined below.

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

  • a.设定参数sigma 和 Xmean
  • b.产生一个高斯随机数
  • c.根据输入像素计算出输出像素
  • d.重新将像素值限制或放缩在[0 ~ 255]之间
  • e.循环所有像素
  • f.输出图像。

编程实例:

# -*- coding: utf-8 -*-

from PIL import Image

from pylab import *

from numpy import*

import random

#读取图片并转为数组
im = array(Image.open('./source/test.jpg'))

#设定高斯函数的偏移
means = 0

#设定高斯函数的标准差
sigma = 25

#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 = int(r[i]) + random.gauss(0,sigma)

    pg = int(g[i]) + random.gauss(0,sigma)

    pb = int(b[i]) + random.gauss(0,sigma)

    if(pr < 0):

    pr = 0

    if(pr > 255):

    pr = 255

    if(pg < 0):

    pg = 0

    if(pg > 255):

    pg = 255

    if(pb < 0):

    pb = 0

    if(pb > 255):

    pb = 255

    r[i] = pr

    g[i] = pg

    b[i] = pb

im[:,:,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()         

这里由于默认图像会被编码成无符号八位整数(unit8),所以当进行数值计算时,如果出现大于255和小于0的情况会进行滚动,比如255 + 10 = 9 ,如果不进行处理,结果是错误的,所以必须转成int计算,限制范围后再赋值回去,下面是直接运算造成的错误结果(sigma = 25):

# -*- coding: utf-8 -*-

from PIL import Image

from pylab import *

from numpy import*

import random

#读取图片并转为数组
im = array(Image.open('./source/test.jpg'))

#设定高斯函数的偏移
means = 0

#设定高斯函数的标准差
sigma = 25

#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]):

    r[i] = r[i] + random.gauss(0,sigma)

    g[i] = g[i] + random.gauss(0,sigma)

    b[i] = b[i] + random.gauss(0,sigma)

im[:,:,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()

运行结果:

原图

sigma = 15

sigma = 25

sigma = 40

结语:

本篇博客主要介绍了高斯噪声这种常见的图像噪声的原理与生成,希望对大家有所帮助~

时间: 2024-10-02 17:53:16

高斯噪声的相关文章

图像处理------添加高斯与泊松噪声

数学基础: 什么是泊松噪声,就是噪声分布符合泊松分布模型.泊松分布(Poisson Di)的公 式如下: 关于泊松分布的详细解释看这里:http://zh.wikipedia.org/wiki/泊松分佈 关于高斯分布与高斯噪声看这里: http://blog.csdn.net/jia20003/article/details/7181463  二:程序实现 以前在图像加噪博文中现实的加高斯噪声,比较复杂.是自己完全实现了高斯随 机数的产生,这里主要是利用JAVA的随机数API提供的nextGau

【数字图像处理】七.MFC图像增强之图像普通平滑、高斯平滑、Laplacian、Sobel、Prewitt锐化详解

       本文主要讲述基于VC++6.0 MFC图像处理的应用知识,主要结合自己大三所学课程<数字图像处理>及课件进行讲解,主要通过MFC单文档视图实现显示BMP图像增强处理,包括图像普通平滑.高斯平滑.不同算子的图像锐化知识.希望该篇文章对你有所帮助,尤其是初学者和学习图像处理的学生.        [数字图像处理]一.MFC详解显示BMP格式图片        [数字图像处理]二.MFC单文档分割窗口显示图片        [数字图像处理]三.MFC实现图像灰度.采样和量化功能详解  

图像处理------应用卷积一实现噪声消去

均值滤波: 均值滤波,是图像处理中最常用的手段,从频率域观点来看均值滤波是一种低通滤波器,高 频信号将会去掉,因此可以帮助消除图像尖锐噪声,实现图像平滑,模糊等功能.理想的均 值滤波是用每个像素和它周围像素计算出来的平均值替换图像中每个像素.采样Kernel数 据通常是3X3的矩阵,如下表示: 从左到右从上到下计算图像中的每个像素,最终得到处理后的图像.均值滤波可以加上两个 参数,即迭代次数,Kernel数据大小.一个相同的Kernel,但是多次迭代就会效果越来越好. 同样,迭代次数相同,Ker

高斯滤波

高斯滤波 图像滤波之高斯滤波(Gauss filter) 概述: 高斯滤波: 高斯滤波在图像处理概念下,将图像频域处理和时域处理相联系,作为低通滤波器使用,可以将低频能量(比如噪声)滤去,起到图像平滑作用. 高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程.通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到.高斯滤波的具体操作是:用一个模板(或称卷积.掩模)扫描图像中的每一个像素,用模板确定的邻域内像

通信matlab高斯...-请教matlab高斯白噪声问题

问题描述 请教matlab高斯白噪声问题 产生一定方差的高斯白噪声时y=randn(1,2500); y=y/std(y); y=y-mean(y); a=0; b=sqrt(5); y=a+b*y; 其中y/std(y)是什么意思啊?不能直接用randn产生吗?另外高斯白噪声的带宽怎么设计? 解决方案 matlab 产生高斯噪声和高斯白噪声方法matlab 产生高斯白噪声高斯白噪声

图像平均及其在降噪方面的应用

图像平均及其在降噪方面的应用 图像平均以及图像平均在应对椒盐/高斯/相机噪声方面的对比分析 概述: 图像平均操作是减少图像噪声的一种简单方式. 我们可以简单地从图像列表中计算出一幅平均图像. 假设所有的图像具有相同的大小,我们可以将这些图像简单地相加,然后除以图像的数目,来计算平均图像. 算法步骤: 对列表中的数字图像进行图像平均的处理顺序如下: a.输入或者获取文件名列表 b.读取路径列表中的图像文件,转化为数组进行相加 c.将累加结果除以图像数量,进行平均 d.将平均结果构建为图片 e.输出

如何在实战路上与时俱进:深度学习最佳实践

自2006年Hinton提出神经网络新的训练方法起,深度学习发展迅速,促使人工智能在图像.语音.自然语言处理等多个领域有了实质性的突破,达到产业应用标准.然而,深度学习作为人工智能领域的一项前瞻技术,实践性强,入门门槛高,关于深度学习的研究与应用,现在仍有很多问题没有找到满意的答案,这些都给深度学习的广泛应用带来挑战.本文旨在提供一份清晰.简洁的深度学习实践说明,以便从事深度学习研究与工程技术人员能够快速掌握深度学习的实际经验. 第一节:深度学习概述 深度学习是模拟人脑进行分析学习的多层神经网络

计算机视觉的一些测试数据集和源码站点

转自:http://blog.csdn.net/zhubenfulovepoem/article/details/7191794        以下是computer vision:algorithm and application计算机视觉算法与应用这本书中附录里的关于计算机视觉的一些测试数据集和源码站点,我整理了下,加了点中文注解. ComputerVision: Algorithms and Applications Richard Szeliski 在http://szeliski.or

数据-寻求一个可以实现的最小均方误差的matlab

问题描述 寻求一个可以实现的最小均方误差的matlab 2C Noise是均值为0,方差分别为0.12 12的高斯噪声信号.输入输出信号见附件所示,其中,文档input_u.txt里存储的是输入数据u的值,文档output_y_01.txt,output_y_1.txt(分别对应噪声方差为0.12 12情况下系统的输出). 采用递推的最小二乘法或者是智能优化算法对参数a1 a2 a3 a4进行估计 *y(n)=a1*y(n-1)+a2*y(n-2)+a3*u(n-1)+a4*u(n-2)数据均为