高斯噪声是一个均值为 0 方差为 σn2\sigma_n^2σn2​ 的正态分布,是一个加性噪声。但要正确地给图片添加高斯噪声,还要取决于程序中读入图片的数据格式。

如果图片的数据格式为 uint8,也即数据的范围为 [0, 255],那么直接生成对应方差的噪声,然后加到图片上去。

# clean_image uint8 (128, 128)
noise_image = clean_image + np.random.randn(128, 128) * sigma

此处 np.random.rand(128, 128) 生成一个均值为 0 方差为 1 的正态分布,然后我们乘以 σn\sigma_nσn​,将方差调整到 σn2\sigma_n^2σn2​,再加到图片上即可。

如果图片的数据格式为浮点型,而且数据的范围为 [0, 1],那么我们需要对噪声的方差做一些调整,真正加到图片上的噪声方差应该为 σreal2=σn22552\sigma_{real}^2 = \frac{\sigma_n^2}{255^2}σreal2​=2552σn2​​,也即 σreal=σn255\sigma_{real} = \frac{\sigma_n}{255}σreal​=255σn​​。

# clean_image float32 (128, 128)
noise_image = clean_image + np.random.randn(128, 128) * sigma / 255

此处 np.random.rand(128, 128) 生成一个均值为 0 方差为 1 的正态分布,然后我们乘以 σn/255\sigma_n / 255σn​/255,将真实方差调整到 σn2\sigma_n^2σn2​,再加到图片上即可。

在 MATLAB 中,imnoise 会对图片进行处理,将像素值缩放到 [0, 1] 之间,因此我们在传入方差的时候也必须要先进行调整。

noise_image = imnoise(clean_image, 'gaussian', 0, sigma^2/255^2)

另外,若原始图片范围为 [0, 255],添加高斯噪声后数据将会超出此范围,需要特别注意。不过在 MATLAB 中,imnoise 已经对此进行了处理,确保输出数据和输入数据的类型保持一致。

有时候,我们真的需要对知识抱有敬畏之心,任何一个小的知识点都没有那么简单。但如果你在这些小的知识点上犯了小错误,后果却是不可想象的。千里之堤毁于蚁穴,与君共勉!

获取更多精彩,请关注「seniusen」!

如何正确地给图像添加高斯噪声相关推荐

  1. 正确地为图像添加高斯噪声 - python

    开门见山,直接使用 skimage 库为图像添加高斯噪声是很简单的: import skimageorigin = skimage.io.imread("./lena.png") ...

  2. 对一幅图像添加高斯噪声

    参考别人的程序写的,因为网上对图像添加高斯噪声的程序很难找到,我就自己整理出来一份. #include "cv.h"   #include "highgui.h" ...

  3. c语言给图片添加椒盐噪声,图像添加高斯噪声、胡椒噪声、盐噪声和椒盐噪声...

    1.盐椒噪声 图像加入椒盐噪声开始,椒盐噪声其实就是使图像的一些随机的像素为黑色(0)或者白色(255): 盐噪声又称白噪声,在图像中添加一些随机的白色像素点(255):胡椒噪声是在图像中添加一些随机 ...

  4. 高斯噪音 matlab,如何给图像添加高斯噪声(MATLAB)

    噪声分两种性质,加性噪声和乘性噪声.加性噪声一般指热噪声.散弹噪声等,它们与信号的关系是相加,不管有没有信号,噪声都存在.而乘性噪声一般由信道不理想引起,它们与信号的关系是相乘,信号在它在,信号不在他 ...

  5. C++版本OpenCv教程(二十七)图像中添加高斯噪声

    OpenCV 4中同样没有专门为图像添加高斯噪声的函数,对照在图像中添加椒盐噪声的过程,我们可以根据需求利用能够产生随机数的函数来完成在图像中添加高斯噪声的任务.在OpenCV 4中提供了fill() ...

  6. 通过matlab编程,对以下图像分别添加高斯噪声和椒盐噪声(参数自定),并使用理想低通滤波器、高斯低通滤波器和巴特沃斯低通滤波器进行去噪。

    添加高斯噪声和椒盐噪声,并用理想低通滤波器进行去噪 t=imread('C:\Users\Administrator\Desktop\123.jpg'); subplot(3,2,1) imshow( ...

  7. python高斯滤波和降噪_python添加高斯噪声和椒盐噪声,实现中值滤波和均值滤波,实现Roberts算子和Sobel算子...

    写在前面 HIT大三上学期视听觉信号处理课程中视觉部分的实验一,经过和学长们实验的对比发现每一级实验要求都不一样,因此这里标明了是2019年秋季学期的视觉实验一. 由于时间紧张,代码没有进行任何优化, ...

  8. python使用opencv对图像添加(高斯/椒盐/泊松/斑点)噪声

    导读 这篇文章主要介绍如何利用opencv来对图像添加各类噪声,原图 高斯噪声 高斯噪声就是给图片添加一个服从高斯分布的噪声,可以通过调节高斯分布标准差(sigma)的大小来控制添加噪声程度,sigm ...

  9. 图像数据增强(平移,旋转,亮度变换,翻转,添加高斯噪声,缩放,裁剪)

    1.平移: import cv2 import tensorflow as tf import numpy as np from PIL import Image from skimage impor ...

最新文章

  1. 我们公司用了6年的通用的权限管理系统设计方案
  2. 第十六 届全国大学生智能汽车竞赛 讯飞创意组 全国 选拔赛 竞赛规则
  3. [BZOJ1724][Usaco2006 Nov]Fence Repair 切割木板
  4. 【记录】ubuntu18.04 终端下No module named numpy No module name cv2
  5. 如何手动删除一个business document和pricing document的relationship
  6. C++Primer第五版学习笔记
  7. 10进制转化为16进制以内的转化
  8. mongo在哪创建管理员_MongoDB数据库创建管理员账户和数据库管理账户
  9. Oracle 获取月初和月末
  10. PAT-Travel Plan (30)-Dijkstra和SPFA
  11. 远程登录软件secureCRT
  12. MySQL 8.0中的新增功能
  13. C++程序设计:字符图形输出(数字三角形)
  14. 现金红包、裂变红包、企业付款
  15. 创业者应警惕可疑的成功
  16. python函数之plot函数
  17. ONVIF PTZ控制
  18. 漂亮的梦幻图,可用来做背景图(60张左右)
  19. 微观经济学知识点(七)
  20. Abp.Zero 手机号免密登录验证与号码绑定功能的实现(二):改造Abp默认实现

热门文章

  1. 输入a,b,c三个整数,按由大到小顺序输出。(用3个指针变量指向3个整形变量,然后用swap函数来实现互换3个整型变量的值)
  2. 【报错记录】SpringBoot中MultipartFile上传报/tmp/tomcat.***.tmp (No such file or directory)
  3. Sharding JDBC分片和读写分离详解
  4. python爬取股票大单历史记录_python爬取股票实时数据,python爬虫与股票分析
  5. [MAUI] 开篇-初识MAUI
  6. 使用电信 TR069 内网架设 WireGuard 隧道异地组网
  7. 新站发布——寻爱交友网
  8. Human-centric Relation Segmentation: Dataset and Solution论文解读+基础知识介绍
  9. 制作ASCII字符动画
  10. 202309读书笔记|《野性之美:非洲野生动物初窥》——走进自然界的野性之美