FPGA图像处理.从认识噪声到去噪算法
省流概述:文章包含如下内容
噪声定义
噪声来源
噪声分类
去噪算法
作为一个图像人,噪声是我们必须要了解的一个课题,现实生活中,我们将影响自己获取需要信息的其他东西称为噪声,比如我们在欣赏优美的歌声时,这个时候一声尖叫必然是影响我们愉悦体验的一个噪声。迁移到图像领域,我们该如何定义噪声呢,在摄影领域中,我们通常所说的噪声一般都是指影像噪点(image noise),具体指在影像表面所形成的一些随机或固定的斑点或彩色污点。在图像上常表现为一引起较强视觉效果的孤立像素点或像素块。一般,噪声信号与要研究的对象不相关,它以无用的信息形式出现,扰乱图像的可观测信息。通俗的说就是噪声让图像不清楚。
图像噪声来源何处?在讲噪声来源之前,我们先来了解下相机成像的一些知识,光线经过镜头的多重折射后进入相机芯片,先穿过第一层的微透镜,反生折射(使入射光更聚焦)后进入第二层的拜耳滤镜,随后再照射在光电二极管上,与之发生光电效应,由此产生一系列电信号。最后,在时钟控制电路、移位寄存器、放大器等各种复杂电子元件的共同协作下,电信号被转换成数字信号后传输至影像处理器,后者对其进行信号提取、编译、压缩等方面的处理。
入射光是相机系统的输入信号,它由光信号转化为电信号,最后再转化为输入影像处理器的数字信号。由此可见,信号在进入影像处理器之前主要经过了影像传感器和一系列集成电路,它们是影响信号的主要因素,也是噪点的主要来源。
传感器本身会引入噪声,传感器面积直接决定了系统在单位时间内收集光线(光子)的数量,面积越大,收集的光子就越多,光信号越强,信噪比越高,抑噪能力也越强。
除了传感器本身,温度也会直接影响噪点的形成。当曝光时间较长或所处环境温度较高时,相机内部的温度便会升高,温度上升导致电路产生暗电流(dark current)。所谓「暗电流」,是指在无光线照射传感器的情况下,仍会通过感光元件的少量电流。它是影像传感器中的另一个主要噪点来源。
有研究显示,CCD芯片的温度每升高8°C,其暗电流就会成倍增加。这也就是为什么天文用的摄影机需配有热电冷却器,目的就供CCD散热和降温,以减少噪点。
图像噪声各种各样,从噪声与信号的关系分类,可以为如下两种:
加性噪声,加性噪声与图像信号强度是不相关的,常见的加性噪声包括高斯噪声、瑞利噪声和指数噪声等。
乘性噪声,乘性噪声与图像信号强度是相关的,即噪声的大小会随着图像信号强度的变化而变化。
若按噪点的样式划分,噪点还可以分为三类:
固定噪点(Fixed-pattern noise),又称为热噪点(hot pixels),一般形成于相机长曝光或环境温度较高的场景中。在拍摄参数(曝光时长、ISO、温度等)相同的前提下,此类噪点的形态基本保持不变。
随机噪点(Random noise)是一种无论曝光时间长短都会存在的噪点,它主要受相机ISO值的影响。相比固定噪点,随机噪点的质感纹理相对细腻,而且形式随机变化,即使以相同参数拍摄,噪点的表现形式也会有所不同。
带状噪点(Banding noise)是一种与相机强相关的噪点,不同相机型号会产生不同的程度。它主要产生于芯片移位寄存器读取数据的过程。过亮的阴影区域和白平衡设置都可能导致带状噪点的产生。
图像噪声虽然有多种划分方式,但是图像常见噪声基本上有以下四种,高斯噪声,泊松噪声,乘性噪声,椒盐噪声。
高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。高斯白噪声的二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性。产生原因如下:
1)图像传感器在拍摄时市场不够明亮、亮度不够均匀;
2)电路各元器件自身噪声和相互影响;
3)图像传感器长期工作,温度过高。
泊松噪声,就是符合泊松分布的噪声模型,泊松分布适合于描述单位时间内随机事件发生的次数的概率分布。如某一服务设施在一定时间内受到的服务请求的次数,电话交换机接到呼叫的次数、汽车站台的候客人数、机器出现的故障数、自然灾害发生的次数、DNA序列的变异数、放射性原子核的衰变数等等
乘性噪声一般由信道不理想引起,它们与信号的关系是相乘,信号在它在,信号不在它也就不在。
椒盐噪声,椒盐噪声又称脉冲噪声,它随机改变一些像素值,是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。
椒盐噪声往往由图像切割引起。
图像噪声说完了,接下来说说对于提到的噪声,一般都有些啥去噪算法,最基本的是均值滤波,这种滤波算法很容易让图像变模糊,除了均值滤波,常用的滤波算法有中值滤波、高斯滤波、双边滤波、导向滤波等。
中值滤波器是一种常用的非线性滤波器,其基本原理是:选择待处理像素的一个邻域中各像素值的中值来代替待处理的像素。主要功能使某像素的灰度值与周围领域内的像素比较接近,从而消除一些孤立的噪声点,所以中值滤波器能够很好的消除椒盐噪声。不仅如此,中值滤波器在消除噪声的同时,还能有效的保护图像的边界信息,不会对图像造成很大的模糊,更多关于中值滤波的可以参考FPGA图像算法.中值滤波。
高斯滤波也是一种非常常见的滤波方法,具体原理参见文章FPGA图像算法.高斯滤波原理和实现,高斯滤波比较类似于均值模板,对图像的平滑效果比较明显。
双边滤波是一种非线性滤波方法,是结合了图像的邻近度和像素值相似度的一种折中,在滤除噪声的同时可以保留原图的边缘信息。详细信息可以参考FPGA图像算法.一文看懂双边滤波原理。高斯滤波的滤波核的意义是,滤波后的像素值等于窗口内的像素值的加权平均值,权值系数是符合高斯分布,距离该点越近,权值越大。但是没有考虑像素值与当前点的差距。现在加上值域核,意义就在,滤波后当前点的像素值还会受到领域内像素值与自身的像素值差异的影响,不仅仅是距离来决定。这样,在平缓的区域里,由于像素值差异非常小,则值域的权重趋向于1,所以双边滤波就近似为高斯滤波。而在边缘区域中,由于像素值的差异比较大,则值域核趋向于0,权重下降,即当前像素受到领域内像素影响比较小,从而保留了边缘信息。
导向滤波需要有高斯滤波和双边滤波的相关知识背景才能更好的理解导向滤波。具体可以参考FPGA图像算法.导向滤波。在导向滤波中,首先利用了局部线性模型。这个模型认为某函数上一点与其近邻部分的点成线性关系,一个复杂的函数就可以用很多局部的线性函数来表示,当需要求该函数上某一点的值时,只需要计算所有包含该点的线性函数的值并取平均值即可。这种模型,在表示非解析函数上,非常有用。在滤波效果上,引导滤波和双边滤波差不多,然后在一些细节上,引导滤波较好(在PS的磨皮美白中,经过实践,效果更好)。引导滤波最大的优势在于,可以写出时间复杂度与窗口大小无关的算法,因此在使用大窗口处理图片时,其效率更高。
参考文章
照片中的噪点究竟是如何形成的?如何才能有效降噪、提升画质?
常见的噪声:高斯、泊松和椒盐噪声
综述:图像滤波去噪的常用算法实现及原理解析