博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何正确地给图像添加高斯噪声
阅读量:6859 次
发布时间:2019-06-26

本文共 921 字,大约阅读时间需要 3 分钟。

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

如果图片的数据格式为 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 的正态分布,然后我们乘以 $\sigma_n$,将方差调整到 $\sigma_n^2$,再加到图片上即可。

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

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

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

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

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

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

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

转载地址:http://xlnyl.baihongyu.com/

你可能感兴趣的文章
Windows 8实用窍门系列:8.Windows 8 中Slider控件和ToggleSwitch控件
查看>>
在IIS 7.0中架设网站,并用VS2005来调试Web项目
查看>>
白话学习MVC(七)Action的执行一
查看>>
javaweb学习总结(四)——Http协议
查看>>
GridView实战二:使用ObjectDataSource数据源控件
查看>>
C# 视频监控系列(3):客户端——连接服务器并预览
查看>>
oracle表空间使用率统计查询
查看>>
virtualbox不能安装64位操作系统
查看>>
MyBatis Generator(MBG)Oracle使用说明 公共同义词 LONG数据类型
查看>>
ORA-00918:未明确定义列
查看>>
控件如何禁止手动输入(转载)
查看>>
为什么Java byte 类型的取值范围是-128~127
查看>>
ElasticSearch怎样加入,检索数据
查看>>
redis事务
查看>>
Cloud Foundry体验
查看>>
深入分析 Javascript 单线程
查看>>
502 Bad Gateway
查看>>
【译】RAID的概念和RAID对于SQL性能的影响
查看>>
Python介绍
查看>>
SOAP Webservice和RESTful Webservice
查看>>