7.3.5 ISP图像系统
概述
AE
AE算法通过分析直方图进行操作,以计算相对于校准中设置的AE target的新EV值。AE target由算法动态控制,以确保正确曝光低动态范围场景和高动态范围场景。例如,在低动态范围场景中,AE target将基于AE_LDR_Target(18%灰度目标)。对于高动态范围场景,该算法将动态修改AE target,保证亮区不会过曝。本地色调映射引擎(Iridix)将确保阴影被显示并正确曝光。HDR目标值需要根据 Sensor的动态范围校准,Iridix引擎来还原低亮区域的内容 。
重要概念
曝光时间:图像传感器内部积累电荷的时间,是pixel从开始曝光到电量被读出的这段时间,决定了sensor受光时间的长短,曝光时间可以以行长为单位。
曝光增益:对sensor 的输出电荷的总的放大系数,一般有数字增益和模拟增益,模拟增益引入的噪声会稍小,所以一般优先用模拟增益。
基本原理
AE算法通过分析直方图统计并结合校准的AE目标值来得到新的EV(exposure value)值。为了兼顾低动态场景和高动态场景都能准确曝光,算法会动态的调整AE目标值。
AWB
AWB模块负责实现色彩稳定,因为图像传感器对中性色调的响应取决于场景光照情况,不具有人眼的不同光照色温下的色彩恒定性,使得这些在白色和灰色等中性色调中最为明显。因此白平衡模块就需要将人眼看来白色的物体进行色彩的还原,使其在照片上也呈现为白色。AWB算法处理范围广泛的照明条件和 光谱,以避免不良的偏色。
重要概念
色温:具有一定表面温度的黑体(blackbody)的辐射光的光谱特性。
颜色恒常性:在照度条件发生变化时,人们对物体表面颜色的知觉趋于稳定的心理倾向。
基本原理
白平衡各通道校正由AWB统计信息和算法基于静态校正结果完成的。该校正结果不会在帧数据 中更新,而是作为配置的一部分在下一帧更新。
Demosaic
Demosaic单元负责从覆盖有颜色过滤器阵列(CFA)的图像传感器输出的(空间欠采样)颜色样本中重建出全彩色图像。此外,该模块提供了对图像的高级控制锐化。
数码相机传感器元件本身只能记录落在它们上面光线的强度,无法区分不同的颜色,因此仅产生灰度图像。要捕获颜色信息,必须在每个像素传感器上放置滤镜,它仅允许特定颜色的光通过。使用的滤镜必须能够重建——每个像素具有红色,绿色和蓝色(RGB)值的全彩色图像。这种彩色滤光片阵列最常见的类型称为“拜耳阵列”,之所以这么称呼,是因为滤镜安排每2x2像素组以RGGB方式排列。
所有像素的一半是绿色(G),四分之一是红色(R)和蓝色(B)。与蓝色同一行中的绿色单元格标记为Gb,与红色同一行中的绿色单元格标记为Gr。模式可以以R,Gr,Gb或B中的任 何一个开头。
彩色滤光片的这种布置实质上导致了色彩信息空间欠采样,去马赛克单元负责从这种不完整色彩信息中重建全彩色图像(每个像素含R、G、B三色信息)。
该模块由许多滤波器组成,这些滤波器根据内插的亮度通道重建色度通道。它还考虑了信号相关的传感器噪声(基于较早确定的噪声轮廓),以保持边缘的清晰度和区域均匀的平滑度,同时插补缺失的像素分量。也因此,缺失像素分量的插值包含了传感器的噪声。内置的锐化最大程度地减少了高频噪声的放大。
Sharpen
通常称之为后端锐化,此模块旨在与Demosaic模块的Sharpen协同作用。Demosaic模块的锐化是在RGB域控制锐化,用于达到要求分辨率,但过度锐化会导致伪像和看起来不自然的纹理。
暗区使用配置寄存器:luma thresh low 以及 luma slope low;
亮区使用配置寄存器:luma thresh high 以及 luma slope high。
下图显示了这四个参数对于sharpen效果的影响:
Gamma
该模块对输出Gamma进行编码,通常设置为匹配BT.709或sRGB Gamma曲线。
此模块分别为三个(R,G,B)颜色通道中的每一个应用Gamma LUT。
在典型配置中,LUT具有129个均匀间隔的节点,标记为0…128,硬件在这些节点之间应用线性插值。
每个数据值都是16位无符号数,因此可以预计Gamma [0] = 0和Gamma [128] = 0xFFFF,其他127个值定义Gamma校正曲线。
注意:
自适应对比度增强由Iridix模块动态执行。应根据所需输出的Gamma特性对LUT进行静态修改。同时Gamma会影响 AE、 CCM、 Iridix模块,因此Gamma变动时需要重新验证这几个模块。
Iridix
Iridix®使用本地色调映射进行动态范围压缩(DRC),尝试从HDR场景中可见性低的区域恢复细节,而又不影响全局图像。总体而言,通过增加相对于场景内容的增益,增加了可用于本地区域的色调范围。
CNR
CNR模块通过对周边色度均值智能估计的方式进行α-混合来矫正YUV空间中每个pixel的颜色,从而降低图像中的色度噪声。在此过程中,该模块会保持图像的强度信息完整,仅处理其色度部分。
该模块内部按YUV域处理,会先将RGB图像转换为YUV域,并根据颜色部分进一步细分,分别处理U和V通道,然后再将YUV转换回RGB域。
注意:此YUV不会直接输出, CNR后面模块会把RGB转换成YUV输出到IPU或DDR
对U和V的处理是将高斯核应用于相应段的每个U和V通道,并通过相应的偏移或斜率参数进行配置。为了最大程度地减少硬件实现或减少大内核的行数,垂直高斯滤波被新兴的递归滤波器代替。
另外,为了进一步减小面积,在处理之前先对色彩通道进行下采样,然后在输出阶段进行上采样。输出的U通道和V通道分别是经过处理的U通道和V通道与原始U通道和V通道的混合,这些通道由增量偏移或斜率参数配置。然后将已处理的U和V以及未处理的Y转换回RGB域。
CCM
大多数情况下,标准颜色无法提供最佳图像质量。根据应用程序或客户喜好,CCM模块可以对颜色进行校正和调整。该模块更改图像的色度值以匹配标准色彩空间的色度值。
通过捕获该模块对输入的 {R,G,B} 或 {R,G,B,Ir} 像素值应用线性颜色校正。计算系数矩阵如图所示:
In1、In2、In3和In4是输入(分别是R、G、B和Ir),A11到A34是可配置的矩阵系数。系数为s4.8数字格式的13位值,其中Msbit(12bits)为符号位。负值的MSbit(12bits)设置为1。
注意:如果CFA模式是RGGB,则Ir系数和Ir信道偏移必须设置为零。
Sinter
Sinter®是一种先进的空间降噪模块,结合了一组算法来抑制传感器噪声,该滤波器作用于RAW数据域空间,在保持纹理和细节的同时,可有效降低图像中的人眼感知到的噪声,使得处理得到的图像更自然。
通过使用外部生成的sensor Noise Profile LUT可以简化该模块的使用。正确配置了LUT表之后,可通过较少的一组寄存器来控制模块。大多数情况下,仅需要修改Sinter的阈值以调整噪声滤波器的强度。
Sinter:Thresh Long和Sinter:Thresh Short寄存器分别对应于长曝光和短曝光,用于WDR模式。当曝光比例为1或WDR模式禁止时,Sinter:Thresh Long和Sinter:Thresh Short应该被设置为相同的值。阈值是在标准校正过程中使用以各种ISO值捕获的图像确定的,并通过系统增益进行调制。如果图像是使用frame-switching创建的,则应根据曝光比相应地设置这些值。
Temper
该模块是运动自适应时间降噪滤波器。通过在当前帧中检测到的局部运动程度设置的递归级别来将当前帧与先前历史帧进行递归平均。滤波器工作在RAW域,并且需要两帧外部存储,数据位宽是视频位宽+4位。
注意:在WDR模式下,视频位宽会更大。
可以增加或减少Recursion_Limit来调整递归的深度,反过来会影响进行递归平均操作的有效帧数。增大此参数将导致较小的递归深度、较小的降噪效果以及最小的运动伪影。
当Recursion_Limit设置为 0 时,最多16帧可以被平均。
当Recursion_Limit设置为 0xf 时,不对帧进行平均,这等同于禁止Temper。
Temper的阈值用于调节Temper噪声滤波器的强度。该模块的性能由外部生成的sensor Noise Profile LUT来保证。参考数据通过DMA存储在DDR中,有2个读DMA和2个写DMA管理参考数据的存储。
Mesh Shading
由于镜头光学折射不均匀,导致画面出现中心亮四周暗的现象。网格着色校正为非线性着色失真提供了进一步的校正,并微调径向着色校正所产生的效果。
该模块使用最大64x 64区域的网格对图像应用网格着色校正。网格校正有3页(R/G/B)的校正表,4种不同模式:
设置 Mesh Alpha Mode = 0

设置 Mesh Alpha Mode = 1

设置 Mesh Alpha Mode = 2

设置 Mesh Alpha Mode = 3

Radial Shading
与mesh shading相对应,径向阴影也是一种校正 Lens Shading 校正方法。利用透镜阴影的径向性质,可以校正偏心和椭圆形阴影效果。
径向着色系数存储在类型为32位的4x129条目LUT中,系数采用x.12格式,其中低12位为小数。对于每个颜色平面,从中心到外边缘存储系数。
Color Space Conversion
此模块将输入的 {R,G,B} 像素值转换为 {Y,U,V}值,并使用标准3x3矩阵乘法和向量偏移。如果转换未激活,则ISP输出RGB格式的像素。
如果需要,可以对参数进行修改,以提供不同的转换。以BT.709为例进行说明,公式如下所示:
则calibration中RGB2YUV_CONVERSION中对应的参数如公式所示:
其中,若Coefft11 (Coefft12, Coefft13, Coefft21, Coefft22, Coefft23, Coefft31, Coefft32, Coefft33) 参数为正,clibration中参数为Coefft11*256取整;若该参数为负,则calibraiton中参数为(|Coefft11*256|+1<<15)取整。calibration 中参数为Coefft01(Coefft02, Coefft01)*1024取整。