常见的噪声:高斯、泊松和椒盐噪声

news2024/11/18 22:46:49

一、什么是图像噪声?

噪声在图像上常表现为一引起较强视觉效果的孤立像素点或像素块。一般噪声信号与要研究的对象不相关,它以无用的信息形式出现,扰乱图像的可观测信息。通俗的说就是噪声让图像不清楚。

二、噪声来源两个方面

1)图像获取过程中

两种常用类型的图像传感器CCDCMOS采集图像过程中,由于受传感器材料属性、工作环境、电子元器件和电路结构等影响,会引入各种噪声,如电阻引起的热噪声、场效应管的沟道热噪声、光子噪声、暗电流噪声、光响应非均匀性噪声。

2)图像信号传输过程中

由于传输介质和记录设备等的不完善,数字图像在其传输记录过程中往往会受到多种噪声的污染。另外,在图像处理的某些环节当输入的对象并不如预想时也会在结果图像中引入噪声。

三、常见噪声介绍

图像常见噪声基本上有以下四种,高斯噪声,泊松噪声,乘性噪声,椒盐噪声。

下面五幅图分别代表了,原图,以及添加了高斯噪声,泊松噪声,乘性噪声,椒盐噪声的图像。

(1)原图:

(2)高斯噪声(下图)

高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。高斯白噪声的二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性。

产生原因:

1)图像传感器在拍摄时不够明亮、亮度不够均匀;

2)电路各元器件自身噪声和相互影响;

3)图像传感器长期工作,温度过高

(3)泊松噪声(下图)

泊松噪声,就是符合泊松分布的噪声模型,泊松分布适合于描述单位时间内随机事件发生的次数的概率分布。如某一服务设施在一定时间内受到的服务请求的次数,电话交换机接到呼叫的次数、汽车站台的候客人数、机器出现的故障数、自然灾害发生的次数、DNA序列的变异数、放射性原子核的衰变数等等

(4)乘性噪声(下图)

乘性噪声一般由信道不理想引起,它们与信号的关系是相乘,信号在它在,信号不在他也就不在

(5)椒盐噪声(下图)

椒盐噪声,椒盐噪声又称脉冲噪声,它随机改变一些像素值,是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。

椒盐噪声往往由图像切割引起

四、MATLAB实现高斯、泊松和椒盐噪声

在图像处理的过程中,一般情况下都进行图像增强,图像增强主要包括“空域增强”和“频域增强”, 空域增强包括平滑滤波和锐化滤波。

平滑滤波,就是将图像模糊处理,减少噪声。那么在滤波之前,首先需要了解一下噪声的种类,行成原因以及各种的特点。

噪声可能来自于开始的图像采集,量化或者后续的图像编码压缩传送过程,根据具体的离散性和随机性主要讲噪声分成三类:'gaussian''poisson''salt&pepper'

(1)高斯白噪声(gaussian)

高斯白噪声,在百度的定义为幅度分布服从高斯分布,概率谱分布服从均匀分布。

白光是所有颜色光的集合,而白噪声也可以理解成在频谱上分布丰富,且在功率谱上趋近于常值。

频域有限,时域无限,那么也就是说,它在任何时刻出现的噪声幅值都是随机的。

高斯分布也称正态分布,有均值和方差两个参数,均值反应了对称轴的方位,方差表示了正态分布曲线的胖瘦。高斯分布是最普通的噪声分布。

在MATLAB中 有用于创建噪声的函数,调用格式为J=imnoise(I,type),例子如下:

clear all
>> i=imread('god.jpeg');
>> j=imnoise(i,'gaussian');
>> j1=imnoise(i,'gaussian',0,0.05);
>> j2=imnoise(i,'gaussian',0,0.2);
>> figure
>> subplot(2,2,1),imshow(i);
>> xlabel('原图像');
>> subplot(2,2,2),imshow(j1);
>> xlabel('高斯白噪声,方差=0.05');
>> subplot(2,2,3),imshow(j);
>> xlabel('高斯白噪声,默认方差');
>> subplot(2,2,4),imshow(j2);
>> xlabel('高斯白噪声,方差=0.2');

上段代码即对图像进行了 不同方差参数的 高斯加噪,

                                                                                                                                                           

从图像中可以看出,方差参数越大,图像越模糊。

(2)泊松噪声

何为泊松噪声,就是符合泊松分布的噪声模型,泊松分布适合于描述单位时间内随机事件发生的次数的概率分布。

如某一服务设施在一定时间内受到的服务请求的次数,电话交换机接到呼叫的次数、汽车站台的候客人数、

机器出现的故障数、自然灾害发生的次数、DNA序列的变异数、放射性原子核的衰变数等等

了解了泊松分布数学模型,那什么是泊松噪声、以及为什么会图像会出现泊松噪声呢?

由于光具有量子特效,到达光电检测器表面的量子数目存在统计涨落,因此,图像监测具有颗粒性,

这种颗粒性造成了图像对比度的变小以及对图像细节信息的遮盖,我们对这种因为光量子而造成的测量不确定性成为图像的泊松噪声。

泊松噪声一般在亮度很小或者高倍电子放大线路中出现。具体调用格式如下:

clear all
>> i=imread('god.jpeg');
>> j=imnoise(i,'poisson');
>> figure
>> subplot(1,2,1),imshow(i);
>> xlabel('原图');
>> subplot(1,2,2),imshow(j);
>> xlabel('poisson加噪');

(3)椒盐噪声

何为椒盐噪声,椒盐噪声又称脉冲噪声,它随机改变一些像素值,是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。

椒盐噪声往往由图像切割引起。具体调用格式如下:

>> clear all
>> i=imread('god.jpeg');
>> i=imread('god.jpeg');
>> j=imnoise(i,'salt & pepper',0.05);
>> j1=imnoise(i,'salt & pepper',0.2);
>> j2=imnoise(i,'salt & pepper',0.5);
>> figure
>> subplot(2,2,1),imshow(i);
>> xlabel('原图');
>> subplot(2,2,2),imshow(j);
>> xlabel('d=0.05');
>> subplot(2,2,3),imshow(j1);
>> xlabel('d=0.2');
>> subplot(2,2,4),imshow(j2);
>> xlabel('d=0.5');

                                                                                                                                                            

从上图可以看出,噪声密度d越大,对图像的影响也就越大,

一般l大约影响d*numel(I)个像素。

五、散粒噪声 shot noise 泊松噪声

raw image中,主要的噪声为两种,高斯噪声和散粒噪声,其中,高斯噪声是与光强没有关系的噪声,无论像素值是多少,噪声的平均水平(一般是0)不变。另一种是散粒噪声,因为其符合泊松分布,又称为泊松噪声,下图可见,泊松噪声随着光强增大,平均噪声也增大。

(1)什么是散粒噪声

散粒噪声=泊松噪声=shot noise=poisson noise

Shot noise存在的根本原因是因为光是由离散的光子构成(光的粒子性)。我们来看看光源发出的光是怎么在CMOS上面成像的。光源发出的光子打在CMOS上,从而形成一个可见的光点(简化成如下图所示,忽略光学元件和电路等)。光源每秒发射的光子到达CMOS的越多,则该像素的灰度值越大。但是因为光源发射和CMOS接收之间都有可能存在一些因素导致单个光子并没有被CMOS接收到或者某一时间段内发射的光子特别多,所以这就导致了灰度值会有波动,也就是所谓的散粒噪声

光源强度比较低的时候,比如说设定光强为每秒5个光子的时候,那么每秒实际CMOS接受到的光子数可能从0到10(或者更多,但是概率几乎为0了), 所以噪声最大为5。当光源强度比较高的时候,比如说每秒10000个光子,那么每秒实际CMOS收到的光子就可能从7000到13000(粗略的数字),所以噪声最大为3000。以上数据基于一个假设,试验次数少的时候,异常发生的会相对整个试验次数较多。这个很好理解,流感时期,一个小公司全部5个人都生病的概率肯定大于一个大公司全部10000个人都生病的概率。

从上面的例子也可以看到,强度越高,噪声越大,但是信噪比其实是在提升的。这个就是散粒噪声的一个特点

(二)散粒噪声为什么服从泊松分布?

 泊松过程定义如下,如果一种分布满足以下几个条件

1.时间越长,事件发生的可能越大,且不同时间内发生该事件的概率是相互独立的

2.对于非常短的一段时间△t来说,事件发生的可能性为,o(△t)为高阶无穷小     

3.对于非常短的一段时间来说,出现该时间两次的概率几乎为零

4.一开始的时候事件没有发生过

 我们就说这个事件是泊松过程,符合以下的概率分布。

在时间△t内发生该事件k次的概率如上式所示。

 对应到我们的光源成像在CMOS上面的事件,则很明显,时间越长,有一个光子被CMOS接收到这个事件发生的可能性就越大,在非常短的时间内同时受到两个光子的可能性为零。可以自己一一对应。故而是符合泊松分布的。

 放一张泊松分布的图供参考

总结一下,我们在CMOS的raw域看到的图像带有的噪声既有高斯噪声,也有散粒噪声。最终出来的信号如下图所示,紫色越深表明输出在CMOS上的信号幅度可能性越大,所以可以看到,光强越强,噪声越大

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1095376.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构 二叉树OJ题

数据结构 二叉树OJ题 文章目录 数据结构 二叉树OJ题1. 检查两颗二叉树是否相同2. 判断树是否为另一个树的子树3. 翻转二叉树4. 平衡二叉树5. 对称二叉树6. 二叉树遍历7. 二叉树层序遍历8. 最近公共祖先9. 二叉树创建字符串10. 非递归方式实现前序遍历11. 非递归方式实现中序遍历…

动态内存管理+柔性数组+经典笔试题

💓博客主页:江池俊的博客⏩收录专栏:C语言进阶之路👉专栏推荐:✅C语言初阶之路 ✅数据结构探索💻代码仓库:江池俊的代码仓库🎉欢迎大家点赞👍评论📝收藏⭐ 文…

springboot 使用RocketMQ客户端生产消费消息DEMO

创建springboot项目省略 项目依赖 注意&#xff1a;当前客户端版本是 5.1.3 &#xff0c;安装的rocketmq服务的版本要与其对应 <properties><java.version>11</java.version><rocketmq-client-java-version>5.1.3</rocketmq-client-java-version&…

EasyX趣味化编程note6,图片操作及文字

大家好这里是Dark FlameMaster 如果说前边所学的内容会给我们带来一定的乐趣&#xff0c;那么今天这篇可以说是最好玩的了&#xff0c;我们可以进一步改进写出小程序的好玩度&#xff0c;你甚至可以把身边的人或事写进一个小程序&#xff0c;制作一个小游戏&#xff0c;恶搞身边…

工业级Netty网关,京东是如何架构的?

说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;很多小伙伴拿到一线互联网企业如阿里、网易、有赞、希音、百度、滴滴的面试资格。 最近&#xff0c;尼恩指导一个小伙伴简历&#xff0c;写了一个《高并发网关项目》&#xff0c;此项目帮这个小伙拿到 字节/阿里/…

掌握Golang匿名函数

一个全面的指南&#xff0c;以理解和使用Golang中的匿名函数 Golang以其简单和高效而闻名&#xff0c;赋予开发人员各种编程范式。其中一项增强代码模块化和灵活性的功能就是匿名函数。在这篇正式的博客文章中&#xff0c;我们将踏上探索Golang匿名函数深度的旅程。通过真实世…

机器学习之Sigmoid函数

文章目录 Sigmoid函数是一种常用的数学函数&#xff0c;通常用于将实数映射到一个特定的区间。它的形状类似于"S"形状曲线&#xff0c;因此得名。Sigmoid函数在机器学习、神经网络和统计学中经常被使用&#xff0c;主要用于二元分类和处理概率值。 Sigmoid函数的一般…

【蓝桥】契合匹配

一、题目 1、题目描述 小蓝有很多齿轮&#xff0c;每个齿轮的凸起和凹陷分别用一个字符表示&#xff0c;一个字符串表示一个齿轮。 如果这两个齿轮的对应位分别是同一个字母的大小写&#xff0c;我们称这个两个齿轮是契合的。 例如&#xff1a;AbCDeFgh 和 aBcdEfGH 就是契合…

基于html+js编写的生命游戏

前言 本文将介绍一个基于htmljs的生命游戏&#xff0c;该项目只有一个html代码&#xff0c;无任何其他以来&#xff0c;UI方面采用了vueelement-plus进行渲染&#xff0c;游戏的界面基于canvas进行渲染&#xff0c;先来看一下成果。 我不知道游戏规则有没有写错&#xff0c;感…

Vue-3.2自定义创建项目

基于VueCli自定义创建项目架子 选择第三个 空格选中&#xff0c;再空格取消 选择vue2 其实就是mode模式&#xff0c;之后再去修改就可以&#xff0c;history和hash 选择less 无分号规范&#xff08;标准化&#xff09;&#xff0c;目前最流行的 将配置文件放在单独的文件中 是否…

Linux环境配置安装Redis

Windows版本因官网不在提供与支持&#xff0c;以下基于linux环境安装 前提&#xff1a; 1.一台linux服务器 2.服务器已安装gcc 安装 1、官网下载 https://redis.io/download/ 对应压缩包 2、上传压缩包至服务器并解压缩 tar -zxvf redis-stable.tar.gz3、cd 至该目录下 4、…

双周总结#002 - 红树林

红树林公园&#xff0c;一棵单独生长在海岸边的树&#xff0c;下面一根根树立的幼苗&#xff0c;是从它的根茎上生长出来的。傍晚落潮后&#xff0c;会有一只只小螃蟹在这里浪荡。当然&#xff0c;也会有海鸟在这里进食。 文档 深入了解 Commonjs 和 Es Module1 Web 开发中&am…

两道关于顺序表的经典算法

文章目录 力扣&#xff1a;[移除元素](https://leetcode.cn/problems/remove-element/)[力扣&#xff1a;88. 合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) 力扣&#xff1a;移除元素 题目 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移…

JAVA实战项目 超市商品管理系统

师傅开发的实战项目&#xff0c;感觉不错&#xff0c;拿出来分享分享。 目录 一、摘要1.1 简介1.2 项目录屏 二、研究内容三、系统设计3.1 用例图3.2 时序图3.3 类图3.4 E-R图 四、系统实现4.1 登录4.2 注册4.3 主页4.4 超市区域管理4.5 超市货架管理4.6 商品类型管理4.7 超市商…

JDBC操作BLOB类型字段

JDBC中Statement接口本身不能直接操作BLOB数据类型 操作BLOB数据类型需要使用PreparedStatement或者CallableStatement(存储过程) 这里演示通过PreparedStatement操作数据库BLOB字段 设置最大传入字节 一般是4M 可以通过以下命令修改 set global max_allowed_packet1024*1…

C语言,洛谷题,赦免战俘

先上答案&#xff0c;再对答案进行解释&#xff1a; #include <stdio.h> int arr[1025][1025] { 0 }; void fun(int bian,int x ,int y) {if (bian 2)//进入if再出去if之后&#xff0c;结束递归&#xff0c;因为递归在else里面{arr[x][y] 0;}else{int i 0;int j 0;…

【Linux】:Linux中Shell命令及其运行原理/权限的理解

Shell命令以及运行原理 Linux严格意义上说的是一个操作系统&#xff0c;我们称之为“核心&#xff08;kernel&#xff09;“ &#xff0c;但我们一般用户&#xff0c;不能直接使用kernel 而是通过kernel的“外壳”程序&#xff0c;也就是所谓的shell&#xff0c;来与kernel沟通…

SpringCloud之Gateway整合Sentinel服务降级和限流

1.下载Sentinel.jar可以图形界面配置限流和降级规则 地址:可能需要翻墙 下载jar文件 2.引入maven依赖 <!-- spring cloud gateway整合sentinel的依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-s…

从基础到卷积神经网络(第14天)

1. PyTorch 神经网络基础 1.1 模型构造 1. 块和层 首先&#xff0c;回顾一下多层感知机 import torch from torch import nn from torch.nn import functional as Fnet nn.Sequential(nn.Linear(20, 256), nn.ReLU(), nn.Linear(256, 10))X torch.rand(2, 20) # 生成随机…

苍穹外卖(七) Spring Task 完成订单状态定时处理

Spring Task 完成订单状态定时处理, 如处理支付超时订单 Spring Task介绍 Spring Task 是Spring框架提供的任务调度工具&#xff0c;可以按照约定的时间自动执行某个代码逻辑。 应用场景: 信用卡每月还款提醒 火车票售票系统处理未支付订单 入职纪念日为用户发送通知 点外…