高斯噪声

2023-11-06

高斯噪声

图像噪声之高斯噪声(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

这里写图片描述

结语:

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

高斯噪声 的相关文章

  • OpenCV2 椒盐噪声

    椒盐噪声是由图像传感器 传输信道 解码处理等产生的黑白相间的亮暗点噪声 椒盐噪声往往由图像切割引起 我们用程序来模拟椒盐噪声 随机选取一些像素 把这些像素设为白色 include

随机推荐

  • wazuh介绍

    1 wazuh简介 Wazuh 是一个免费 开源和企业级的安全监控解决方案 用于威胁检测 完整性监控 事件响应和合规性 github地址 https github com wazuh Wazuh由部署到受监视系统的端点安全代理和管理服务器组
  • 基于 OpenOCD 的 STM32CubeIDE 开发烧录调试环境搭建-DAPLINK

    STM32cubeIDE 是ST官方推出的一款用于开发 STM32 的工具 整合了 STM32CubeMX 和 TrueSTUDIO 而成 对于 STM32 的开发这个工具应该会在未来成为主流 毕竟有官方加持又商用免费 但仿真烧录只支持 J
  • 快速排序的三种实现方式

    目录 1 Hoare版本 第一步 第二步 第三步 Hoare图解 Hoare代码 2 挖坑法 第一步 第二步 第三步 挖坑法图解 挖坑法代码 3 前后指针版本 第一步 第二步 第三步 前后指针版本图解 前后指针法代码 优化 时间复杂度 最好
  • linux系统 mysql 5.7.27安装

    1 下载mysql 5 7 27 linux glibc2 12 x86 64 tar gz https dev mysql com downloads mysql 5 7 html downloads 或者命令下载 wget https
  • python 类的继承与重载

    gt gt gt class human age 0 sex height 0 weight 0 name def init self age sex height weight self age age self sex sex self
  • Sui流动性质押黑客松|本周Workshop预告

    Sui流动性质押黑客松正在如火如荼的报名中 Sui基金会现诚邀全球开发者前来参与 助力资产再流通 了解黑客松详情 Sui流动性质押黑客松开启报名 赢取千万美金质押和奖励 黑客松官网 Sui Liquid Staking Hackathon
  • 小程序如何获取手机系统相关信息

    小程序如何获取手机系统信息的方法是 调用 wx getSystemInfo 此接口 通过此接口 可以获取到手机的品牌 型号 像素比 操作系统等信息 微信小程序代码举例 wx getSystemInfo model true 获取手机型号 s
  • Upload-labs-master-Pass-02通关教程——类型绕过

    注意 刷题的时候记得清理之前上传的文件 以免出现干扰 1 先上传准备好的mm php 2 查看代码它对文件的类型进行了查看 3 使用Burp Suit来结束数据包并修改文件类型 然后转发后进入链接 成功绕过 这一关数据文件类型绕过
  • react 数据监听

    监听组件传递的值 componentWillReceiveProps newProps 参数为给组件传递的参数 监听组件内部状态的变化 componentDidUpdate prevProps prevState 参数分别为改变之前的数据状
  • SSH_Unable to negotiate with 192.168.1.152 port 22: nomatching host host key type found. Their offer...

    操作环境 Kali Linux 终端远程登录ssh时 提示如下错误 Unable to negotiate with 192 168 1 152 port 22 nomatching host host key type found The
  • [Python http.server] 搭建http服务器用于下载/上传文件

    动机 笔者需测试bs架构下的文件上传与下载性能 故想通过Python搭建http服务器并实现客户端与服务器之间的文件上传和下载需求 难点 这应该是很基础的东西 不过笔者之前未接触过http编程 谨在此记录下学习的过程 可能不是最优解 方法
  • RabbitMq消息堆积问题及惰性队列

    消息堆积问题 当生产者发送消息的速度超过了消费者处理的速度 就会导致队列的消息堆积 知道队列存储消息达到上限 最早接受的消息 可能就会成为死信 会被丢弃 这就是消息堆积问题 解决消费对接问题 1 增加更多的消费者 提高消费者速度 2 在消费
  • java war tomcat 部署_Tomcat部署java web项目,war包方式

    今天做的网站要上线了 部署的过程中遇到许多问题 在这里记录一下 步骤 项目采用war包的形式发布 war包的生成 使用idea中的maven project中的install命令 一般可以先clean一下 安装tomcat 8和java 1
  • 欧洲最大时尚电商平台工程师:如何使用测试容器进行功能测试

    一直以来 我们探索如何在基于Java的后端应用程序中使用Testcontainers org库编写功能测试 在本文中 我将展示Zalando Marketing Services的团队如何使用功能测试 然后 我们将讨论一个基于 Spring
  • 纯Numpy实现多层神经网络

    纯Numpy实现多层神经网络 本文分为以下几个内容 1 实现层的逻辑结构 2 实现各种激活函数 3 实现Dense层 4 实现前向传播 5 实现反向传播 6 示例 实现网络层的逻辑 首先实现一个简单的网络层 该网络层什么也不做 就是前向传播
  • Ubuntu指令之:统计指定类型文件的数目。eg:json、jpg

    ls grep 和 wc 命令统计指定类型文件数目的技巧 命令之间的交互通过命名管道完成 grep 用户根据给定模式或正则表达式进行搜索的命令 wc 用于统计行 字和字符的命令 1 普通文件的数目 用符号 表示 ls l grep wc l
  • ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.解决方案

    刚刚下载python3第三方库 下载速度真的慢 而且下载超过时间就会报错 真的心态崩了 下面提供我找到的解决方案 解决方法 1 设置控制超时 pip install default timeout 1000 包的名称 2 更换pip下载源
  • 可以说说猿如意的基本功能以及作用是什么啊?

    猿如意是一款软件工具 它的基本功能是帮助用户编写 调试和执行 Python 代码 它可以作为一个集成开发环境 Integrated Development Environment IDE 来使用 也可以作为一个单独的代码编辑器使用 猿如意提
  • LaTeX - 设置中文字体

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 第一步 字体从电脑导出 Window R输入cmd回车 输入fc list f family n lang zh gt d zhfont txt 回车 enter键 可以用
  • 高斯噪声

    高斯噪声 图像噪声之高斯噪声 gauss noise 概述 高斯噪声是指它的概率密度函数服从高斯分布 即正态分布 的一类噪声 与椒盐噪声相似 Salt And Pepper Noise 高斯噪声 gauss noise 也是数字图像的一个常