一、什么是图像噪声?
噪声在图像上常表现为一引起较强视觉效果的孤立像素点或像素块。一般噪声信号与要研究的对象不相关,它以无用的信息形式出现,扰乱图像的可观测信息。通俗的说就是噪声让图像不清楚。
二、噪声来源—两个方面
(1)图像获取过程中
两种常用类型的图像传感器CCD和CMOS采集图像过程中,由于受传感器材料属性、工作环境、电子元器件和电路结构等影响,会引入各种噪声,如电阻引起的热噪声、场效应管的沟道热噪声、光子噪声、暗电流噪声、光响应非均匀性噪声。
(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上的信号幅度可能性越大,所以可以看到,光强越强,噪声越大。