系列文章目录
文章目录
- 系列文章目录
- 前言
- 一.如何评价图像质量?
- 二.引起图像噪声的原因
- 三. ISP
- 3.1 ISP Pipeline主要模块
- 3.1.1坏点校正(Defect Pixel Correction, DPC)
- 3.1.2黑电平校正(Black Level Correction, BLC)
- 3.1.3镜头校正(Lens Shading Correction, LSC)
- 3.1.4去马赛克(Demosaicing)
- 3.1.5自动白平衡(Auto White Balance, AWB)
- 3.1.6 色彩校正(Color Correction Matrix, CCM)
- 3.1.7 降噪(Denoise)
- 3.1.8 对比度增强(Contrast Enhancement)
- 3.1.9 锐化(Sharpening)
- 3.1.10 Gamma校正
- 四. 噪声标定
- 五、红外相机与可见光相机的区别
- 六.维纳滤波
- 七.傅里叶变换和小波变换
- 七.BM3D
- 八.NLM
- 九. 双边滤波
- 九.VST
前言
一.如何评价图像质量?
图像质量评价标准分为主观和客观。
主观评价:
- 清晰度:细节是否被表达清楚,滤波过度会导致过于平滑
- 对比度:最亮和最暗之间的亮度差,过高的对比度也可能导致图像细节丢失或色彩失真。
- 锐利度:锐利度与图像的清晰度和边缘的锐利程度相关。锐利的图像边缘能够更清晰地展示物体的轮廓和细节。
- 噪声水平:噪声是指图像中随机出现的亮点或暗点,低噪声水平的图像更加干净。
- 伪影:伪影是指图像中原本不存在的、由于成像系统或图像处理算法等因素引入的干扰物
- 曝光:曝光不足会导致图像过暗,细节丢失;曝光过度则会导致图像过亮,高光部分细节丢失。您提到的“bv>30000”可能是一个特定的曝光量阈值,但需要注意的是,不同成像系统和场景下的最佳曝光量可能会有所不同。
- 动态范围:动态范围是指图像能够同时展现的最亮和最暗部分的亮度范围。宽动态范围的图像能够更好地保留高光和阴影部分的细节,使图像更加真实自然。
客观评价:
MSE 均方误差
这里MN就是图像总像素数,MSE是原始图像和处理后图像差异,MSE越大,噪声越大。
MSE的取值范围是0-无穷 0的话就代表完全一致。
图像中像素值平方最大值与MSE的比值,再取以10为底的对数最后乘以10.
结构相似性的范围为-1到。当两张图像一模一样时,SSIM的值等于1。
均值是图像中所有像素值的平均值
方差是图像中所有像素值与均值之差的平方的平均值,它反映了图像像素值的离散程度
协方差是衡量两个随机变量之间线性相关程度的统计量。在图像处理中,协方差可以用来描述图像中不同区域或像素之间的相似性。如果两幅图像的协方差较大,说明它们的像素值之间存在较强的线性关系,即图像的结构或纹理较为相似。因此,协方差常被用作评估图像结构相似性的指标。
结构相似性的范围为-1到。当两张图像一模一样时,SSIM的值等于1。
二.引起图像噪声的原因
从相机成像角度分析:
传感器部分会有光子噪声和暗噪声,接着在模拟放大器部分会产生读出噪声,最后在模数转换器部分会有所谓的ADC噪声。像素在光子和暗电流的影响下释放出电子,曝光时间内累积的电子被转换为与其数量成比例的电压。然后该电压被放大成与相机中设置的ISO增益成比例的量,并在模数转换器(ADC)中数字化。
- 光子噪声:光子计数的波动在图像中表现为噪声——泊松噪声.传感器像素在单位时间接受的光子数量的这种波动性在图像上表现为可见的噪声,也因此它被称为光子散粒噪声,或泊松噪声。
光子噪声有两个典型的特点:
曝光时间越长,或者场景辐照度越强,平均来说捕获到的光子数量总体越大,其波动也越大,即光子噪声绝对值越大。
光子数量越多,噪声绝对值越大,但在图像中反而越不明显
- 暗噪声:暗噪声的主要来源是传感器中的硅材料在随机产生电子时产生的热能。这种热能会导致像素中的电子随机产生,随着曝光时间的增加,暗噪声会不断积累。我们都知道光电效应会导致传感器激发出光电子,然而传感器即便在没有接受到光子时,因为温度的影响也会释放出电子。
在天文观测一类的长曝光应用中,暗噪声影响特别大。如果要消除暗噪声,最基础的方法是:
(1)降低传感器温度,比如超低温环境下放置传感器(例如太空中)
(2)或者控制曝光时间
(3)提前测量出暗噪声图像,并在最终图像中减去暗噪声图像
-
读出噪声:模拟放大器部分会产生读出噪声
-
放大噪声:原始数字并不精确地反映光子计数。信号处理链中的每个电子电路组件–从传感器读出、ISO增益到ADC数字化–都会受到电压波动的影响,导致原始值偏离与光子计数成正比的理想值。由信号处理电子设备引起的原始值波动构成了传感器的读取噪声和ADC噪声,其中ADC噪声还包括了因为从连续的电压值量化为离散的整数值的过程中的量化误差
拍摄多幅图像并取均值的方法可以消除读出噪声和ADC噪声,但无法去掉暗噪声
- 量化噪声:当传感器产生的模拟电压信号被数字化为原始值时,它会被四舍五入到附近的整数值。由于这种四舍五入,原始值会略微偏离实际信号;这种由数字化引入的误差称为量化误差,有时也称为量化噪声。
为什么高ISO时图像通常会有更大的噪声呢?
因为读出噪声被放大了,像素值越大,信噪比也越大,噪声在图像中看起来越不明显。如果图像亮度保持不变(即SNR的分子不变时),ISO越大,g越大,SNR越低,噪声越明显—。
为什么对单帧图像做色调映射会带来更大的噪声呢?
拉伸暗处细节时,噪声加强也是很自然的了,因为此时暗处噪声的绝对值被放大了,而暗处几乎没有捕获到有效的信号。
为什么我们之前看到的多帧融合来做HDR时,不会有这么明显的噪声呢?
场景很亮时,光子噪声起主导作用
场景很暗时,加性噪声起主导作用
最重要的是,由于光子噪声和输入信号本身绑定在一起,所以无法消除
低ISO值时,ADC噪声会更突出,而高ISO值时,光子噪声和读出噪声更突出
曝光时间越长,暗噪声影响越大
信号的方差反映了它的噪声的绝对大小(的平方)
而信噪比则反映了噪声相比信号的相对大小,当噪声减小时方差变小,而信噪比减大
三. ISP
ISP(Image Signal Processor,图像信号处理器)是摄像头系统中的核心组件,负责处理图像传感器输出的原始图像数据,通过一系列算法优化图像质量,最终提供高质量的图像和视频输出。以下是ISP处理流程的详细整理:
光线投射与光电转换:
光线通过镜头(Lens)进入相机,投射到图像传感器(Sensor)上。
传感器上的光敏元件将接收到的光线转换为模拟电信号。
模拟信号数字化:
模拟电信号经过模数转换器(A/D Converter)转换为数字信号。
ISP芯片处理:
数字信号进入ISP芯片,开始一系列的处理流程。
Raw域处理:对原始图像数据进行灰度补偿、坏点校正等预处理操作。
RGB域处理:进行色彩插值,将Bayer格式的原始图像转换为完整的RGB图像。同时进行白平衡、色彩校正等处理,以确保图像色彩的准确性。
YUV域处理:将RGB图像转换为YUV格式,以便进行后续的压缩和显示处理。YUV格式更适合于视频压缩和传输。
图像输出与存储:
经过ISP芯片处理后的图像数据,最终会被压缩成一个彩色的JPEG格式图像。JPEG格式的图像便于存储和传输,可以用于照片保存、网络分享等应用场景。
3.1 ISP Pipeline主要模块
ISP Pipeline的主要模块包括但不限于以下几个部分:
3.1.1坏点校正(Defect Pixel Correction, DPC)
原因:
感光元件芯片自身工艺技术瑕疵造成;
光线采集存在缺陷;
制造商产品差异;
通过在全黑环境下观察输出的彩点和亮点,或在白色物体下观察输出的彩点和黑点,就可以看到无规律的散落在各处的坏点。
功能:检测和校正图像传感器中的坏点,防止这些坏点对图像质量产生负面影响。
方法:动态矫正:就是在ISP算法中通过特殊得算法判断一个点是否为坏点,如果是坏点就行行矫正,否则原样输出;
具体算法:通过算法自动检测坏点并进行插值或替换处理。
PINTO算法
1.计算中心像素与周围八个像素值的差;
2.判断八个差值是否都为正值或者都为负值;
3.如果有的为正有的为负,那么就为正常值,否则进行下一步;
4.设置一个阈值,如果八个差值的绝对值都查过阈值,那么就判断为坏点;
5.判断为坏点后就用八个临近的像素值的中位值来替换当前的像素值;
梯度法
该算法的作者针对三个通道都使用这一种窗口进行检测,具体步骤如下:
计算四个方向的梯度:
水平方向三个二阶梯度:Dh1 = |P1+P3-2P2|, Dh2 = |P4+P5-2Pc|,Dh3 = |P6+P8-2P7|;
数值方向三个二阶梯度:Dv1 = |P1+P6-2P4|, Dv2 = |P2+P7-2Pc|,Dv3 = |P3+P8-2P5|;
45°三个二阶梯度:D45_1 = 2*|P4-P2|, D45_2 =|P3+P6-2Pc|, D45_3 = 2|P7-P5|;
135°三个二阶梯度: D135_1 = 2*|P2-P5|, D135_2 =|P1+P8-2Pc|, D135_3 = 2|P7-P4|;
取出各个方向梯度绝对值的中值median_Dh = median(Dh1,Dh2,Dh3),同理求出其他三个方向的中值;
求出四个中值的最小值作为边缘方向:min_grad = min(median_Dh,median_Dv,median_D45,median_D135);
如果最小梯度方向为水平或者竖直,若过Pc那个梯度的绝对值大于同方向的另外两个梯度绝对值和的4倍,则Pc为坏点;
如果是45°方向,则计算135°三个梯度绝对值两两之差的绝对值的和
如果D135_sum小于100,若此时D45_2>3x(D45_1+D45_3)且D135_2>3x(D135_1+D135_3),则Pc为坏点。否则D45_2>3x(D45_1+D45_3)就为坏点;
135°方向和45°相反的方向计算和判断即可;
为减少漏判,当Pc小于15且周围点都大于Pc40以上,则Pc为坏点。如果Pc大于230,且周围的点都下于Pc30以下,则该点为坏点;
边缘为水平方向,且判断为坏点,如过|P4-Pc|<|Pc-P5|则Pc更靠近P4,根据同一颜色通道亮度的渐变性可以推导出ouput=P4+(P2+P7-P1-P6)/2;否则ouput=P6+(P2+P7-P3-P9)/2;
如果为竖直方向可以参考水平方向求出;
边缘为45°,如果|P3-Pc|<|P6-Pc|则根据同一原则output=P3+(P4+P7-P2-p5)/2;否则为output=P7+(P2+P5-P7-p3)/2;
边缘为135°则按照45°的方式反过来计算即可。
梯度法先用梯度找到边缘,根据边缘的不同做不同的校正,就是保留了边缘,不至于把边缘弱化。
DPC和demosaic结合法
将DPC算法和去马赛则算法融合到一块而,大体的思路就是在先对bayer图像插值成全彩图像,然后对每个点进行坏点检测,检测的时候只用同一通道的像素检测,而且每个像素点用的颜色通道即为该点raw图对应的颜色通道,换句话说就是RGGB图像,对于这四个点,第一个点我只通过周围插值出的R来检测R是否为坏点,其他两个同样这么处理,这样就保证和raw处理的时候一样,只用处理MxN个像素点就行,然后如果该点是坏点就对其进行矫正并重新对齐进行颜色插值,那么执行完这整个流程,坏点被矫正了而且直接输出了全彩图,所以说是一种融合算法。
输入入为Bayer格式,输出为RGB格式,先做去马赛克,
3.1.2黑电平校正(Black Level Correction, BLC)
功能:去除由于传感器暗电流引起的图像黑电平偏移。
方法:从图像信号中减去一个参考暗电流信号值,以恢复正确的黑电平。
具体算法:
采集黑帧RAW图,将其分为Gr,Gb,R,B四个通道;
对四个通道求平均值(有的算法也用中位值或者别的方式);
后续图像每个通道都减去2中计算出的各个通道的校正值;
对Gr和Gb通道进行归一化,就是A’b’平移到AB后最大值就是B点的纵坐标,但是我们需要把这个值恢复到255使得恢复后的像素值范围依旧是0-255;
Gin×255/(255-BL)
通过上述公式就可以完成校正。然后需要注意的是RB通道不用归一化到0-255区间,因为后续的AWB中会通过gain将其范围提升到0-255。
3.1.3镜头校正(Lens Shading Correction, LSC)
功能:校正由于镜头制造缺陷导致的图像亮度或色彩不均匀问题。
方法:通过算法计算每个像素对应的亮度或色彩矫正值,从而补偿图像边缘的亮度衰减或色彩偏差。
3.1.4去马赛克(Demosaicing)
功能:将Bayer格式的图像(每个像素点只有一种颜色信息)转换为RGB格式的全彩色图像。
方法:使用插值算法(如双线性插值、双三次插值等)来估计每个像素点缺失的颜色信息。
3.1.5自动白平衡(Auto White Balance, AWB)
功能:调整图像的颜色温度,使白色物体在不同光照条件下均呈现为白色。
方法:通过分析图像中的颜色信息来计算并应用适当的颜色增益。
3.1.6 色彩校正(Color Correction Matrix, CCM)
功能:调整图像的颜色平衡,使其更符合人眼的感知或特定场景的需求。
方法:使用色彩校正矩阵对图像中的RGB值进行线性变换。
3.1.7 降噪(Denoise)
功能:减少图像中的噪声,提高图像的清晰度和信噪比。
方法:采用空间域或频率域的降噪算法,如均值滤波、高斯滤波、双边滤波、小波去噪等。
3.1.8 对比度增强(Contrast Enhancement)
功能:增加图像的对比度,使图像的细节更加清晰可见。
方法:通过拉伸图像的灰度级范围或应用非线性变换来实现对比度增强。
3.1.9 锐化(Sharpening)
功能:增强图像的边缘清晰度,使图像看起来更加鲜明。
方法:通过增强图像的高频成分来实现锐化效果,常用的算法包括高通滤波、反锐化掩模等。
3.1.10 Gamma校正
功能:调整图像的亮度和对比度,以匹配人眼对亮度的非线性感知特性。
方法:对图像的灰度值进行非线性变换,使输出图像的灰度值与输入图像的灰度值呈指数关系。
四. 噪声标定
噪声标定原理:
K为全局系统增益(DN/e-),即单位电荷转换输出的灰度值, 用来描述相机系统将光子转换为数字信号的增益强度。
光子转移法:
μy =K(μe+μd)或
σ²=K²σ²/a+σ²/+K(μy-μy. dark)
噪声标定步骤:
- 准备工作: 确定相机设备和环境: 确定使用的相机型号以及相机的设置参数, 包括ISO 设置、曝光时间等。准备固定光源和恒定亮度环境。
- 拍摄亮帧: 在固定光源和亮度条件下, 使用不同的ISO 设置, 抓取30帧图像。
- 拍摄暗帧: 2中同样设置下盖上镜头, 连续拍摄5张暗帧。
- 数据采集: 对每个ISO 设置下的暗帧进行图像处理,提取出暗噪声的特征,比如均值、方差等。
- 噪声模型拟合: 使用统计方法或数学模型拟合暗噪声与ISO 设置和曝光时间之间的关系。
- 噪声补偿: 根据噪声模型,计算出每个ISO 设置下相应曝光时间对应的噪声补偿参数。
- 验证和调整: 对标定后的噪声模型进行验证,可以使用额外的测试图像进行验证。
五、红外相机与可见光相机的区别
光线感知范围不同
可见光相机仅能捕捉到可见光范围内的图像,而红外相机则可以捕捉到红外光范围内的图像。因此,红外相机能够在全黑环境或低照度条件下正常工作,这是可见光相机无法做到的。
图像分辨率不同
由于红外能量能够穿透一些可见光不能穿透的物质,例如烟雾、灰尘等,因此红外相机能够捕捉到更为清晰的图像,分辨率较高。而可见光相机在面对这些情况时可能会受到阻碍。
六.维纳滤波
参考博客 信号处理–维纳滤波(wiener filter)
在信号处理中,维纳滤波是常用的降噪方法,它能够把实际信号从带有噪声的观测量中提取出来。
维纳滤波是一种线性最小均方误差(LMMSE)估计,线性指的是这种估计形式是线性的,最小方差则是我们后面构造滤波器的优化准则,也就是说实际信号与估计量的差要有最小的方差。而维纳滤波就是要构造一种滤波器,使得观测信号通过滤波器后能够得到的输出是实际信号的最小均方误差估计。
七.傅里叶变换和小波变换
为什么要变换,或者什么是变换–即对信号进行数字变换,以从该信号中获得原始信号中不容易获得的进一步信息。
为什么我们需要频率信息,时域上看不到的可以在频域上看到。FT给出了信号的频率信息意味着它告诉我们信号中每个频率有多少,但是无法告诉我们这些频率成分在什么时间存在。平稳信号频率内容不随时间变换,不需要知道频率成分什么时候存在,因为一直存在。傅里叶变换不适用于频率随时间变换的信号。
运动粒子的动量和位置不能被同时知道,即信号在时频平面上某一点的频率和时间无法知道。我们不知道在任何给定时刻存在什么频谱成分。
短时傅里叶变换STFT,信号被分割成足够小的片段,这些片段的部分信号可以假定是静止的。为此选择窗口函数,该窗口宽度必须等于信号平稳性有效部分。这个窗口必须首先位于信号的最开始,也就是说,窗口函数位于t=0处,假设宽度为T秒,在t=0时刻,窗口函数将与第一个T/2秒重叠,然后将窗口函数和信号相乘。
而使用短时傅里叶变换是固定分辨率,小波变换是可变分辨率,即较高的频率可以更好地在时间上分辨,较低的分辨率可以更好的在频率上分辨。即某个高频分量可以比低频更好的定位在时域,低频分离比高频分量更好定位在频域。因为更高频域下,有更多样本,对应更小的时间间隔。低频,信号表征少,在时间上不好分辨。
小波变换具体是未来弥补傅里叶变换的不足,把整个时间域分解成无数个等长的小过程,每个过程近似平稳,再傅里叶变换,就知道那个时间点上出现了什么频率。就是将傅里叶的基换了,将无限长的三角函数基换成了有限长的会衰减的小波基。它的能量有限,都集中在某一点附件,且积分值为0.傅里叶变换只有w,但小波变换则有尺度a和平移b。尺度对应频率,窗口平移量对应时间,所以小波变换用于时频分析,得到信号频谱。
小波特点:
- 低熵性。由于小波系数分布,使得图像经小波变换后熵明显降低。
对图像小波变换时,图像被分解成多个子带,每个子带对应不同的频率和方向信息。在这些子带中,小波系数反应了图像在不同频率和方向上的能量分布。熵是衡量信息量的指标。 - 多分辨率。适合图像处理。
小波用于阈值去噪:
- 先对含噪图像进行小波变换,再选定一个阈值对小波系数进行取舍,然后通过小波反变换重构图像。
- 小波变换能将信号能量集中到少数小波系数上,而白噪声在任何正交基上的变换仍然是白噪声。(白噪声L均匀分布在小波系数上)
相对而言,信号小波系数值>噪声
所以调阈值
- 选择小波函数并确定分解层数N(一般N=3)
- 对图像信号进行小波分解,低频加高频,噪声部分一般通常在高频成分中
- 对小波分解的高频系数进行阈值量化处理
- 利用小波分解的第N层低频系数和经过阈值处理后的1~N层高频系数进行小波重构,重构后得到的图像即去噪后的图像。
硬阈值:-----非线性的阈值处理方法,对于输入数据绝对值小于阈值的置零
软阈值:相对硬阈值更为平滑,对每个数据点应用了一个凹函数,如(L1范数),该函数在数据接近0时逐渐变抖,然后迅速变0.
soft(x,T)= sign(x).max(|x|-T,0)
硬阈值更好地去除噪声,软阈值常用于保留图像细节。
七.BM3D
BM3D是一种基于变换域稀疏表示增强的新型图像去噪策略
BM3D有两大步骤:基础估计和最终估计
两大步骤有三小步。分组,协同滤波,聚合
分组的重要性在于能够对每个组进行更高维度的过滤,利用分组片段之间相似性来估计每个片段真实噪声。相似块分组到三维数组中,实现稀疏性增强,即将相似块分到一组,这些块在内容和结构上相似,在变换域中,表示可能共享一些主特征或模式。
三维转换后会呈现更强的稀疏性,大部分系数接近0,小部分系数包含重要信息。
分组:时候溴铵在噪声图像中选择一些kxk大小的参考快,(考虑到算法复杂度,一般隔三个像素为一个步长选取,复杂度降低到1/9),在参考块的周围适当大小(n*n)区域内进行搜素,寻找若干差异度最小的块,并把这些块整合成一个三维矩阵,整合顺序对结果影响不大。参照块也要整合进三维矩阵,差异度为0。
协同滤波:形成若干个三维矩阵之后。首先将每个三维矩阵中的二维块进行二维变换,小波变换或离散余弦变换。二维变换结束后,在矩阵的第三个维度进行变换,通常为硬阈值变换。变换完之后对三维矩阵进行硬阈值处理,将小于阈值系数置0,然后通过在第三维的一维反变换和二维反变换得到处理后的图像块。
每个二维块都是对去噪图像的估计。分别将融合到原来的位置,每个像素的灰度值通过每个对应位置的块的值加权平均,权重取决于置0的个数和噪声强度。
最终估计
(1)分组:得到两个三维数组,原图像形成的三维矩阵和基础估计结果的三维矩阵
(2)协同滤波:两个三维矩阵都进行二维和一维变换,这里二维变换采用DTC变换。用维纳滤波对噪声图像形成的三维矩阵进行系数缩放,该系数通过基础估计的三维矩阵的值以及噪声强度得出。
片段内相关性,出现在每个分组片段像素之间
片段间相关性,出现在不同片段的相应像素之间分组片段相似性
八.NLM
参考博客:NLM去噪算法
- 权重计算
高斯函数的应用:在NLM算法中,权重的计算通常依赖于高斯函数或其变体。高斯函数因其平滑性和对噪声的鲁棒性而被广泛应用于图像处理中。在NLM算法中,高斯函数用于衡量两个像素邻域之间的相似度,相似度越高,则对应的权重越大。
相似度度量:NLM算法通过计算两个像素邻域之间的欧氏距离(或其他距离度量),并应用高斯函数(或其衰减特性)来将这个距离转换为一个权重值。这个权重值反映了两个像素邻域之间的相似程度,进而决定了在估计当前像素值时,这两个像素应该被赋予多大的重要性。 - 平滑参数h
h的作用:在NLM算法中,平滑参数h是一个重要的参数,它控制了高斯函数的衰减程度。h的值越大,高斯函数变化越平缓,去噪效果越明显,但同时可能会导致图像细节的丢失;反之,h的值越小,边缘细节保持得越多,但可能无法完全去除噪声。
调整h值:通过调整h的值,可以在去噪效果和图像细节保留之间找到一个平衡点。这个过程类似于在高斯滤波中调整滤波器的标准差σ,以控制滤波的强度和效果。 - 算法实现
算法流程:NLM算法的基本流程包括确定搜索窗口和邻域窗口的大小、计算每个像素邻域之间的相似度、应用高斯函数计算权重、以及根据权重加权平均得到当前像素的估计值。在这个过程中,高斯函数作为权重计算的核心部分,对算法的性能和效果起着至关重要的作用。
九. 双边滤波
空域权重和值域权重的意义
空域权重衡量的是两点之间的距离,距离越远权重越低;
值域权重衡量的是两点之间的像素值相似程度,越相似权重越大。
这里从图像的平坦区域和边缘区域定性分析双边滤波的降噪效果:
在平坦区域,临近像素的像素值的差值较小,对应值域权重接近于1,此时空域权重起主要作用,相当于直接对此区域进行高斯模糊。因此,平坦区域相当于进行高斯模糊。
在边缘区域,临近像素的像素值的差值较大,对应值域权重接近于0,导致此处核函数下降(因),当前像素受到的影响就越小,从而保持了原始图像的边缘的细节信息。
九.VST
方差稳定变换是将泊松分布转换为近似高斯分布的方法。应用VST弱化噪声方差和信号依赖性,再通过高斯降噪模块对图像进行降噪。