ISP Tuning

Posted Arrow

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ISP Tuning相关的知识,希望对你有一定的参考价值。

ISP Tuning

1. 简介

  • ISP:Image Signal Processing(图像信号处理,主要功能有线性纠正、噪声去除、坏点去除、内插、白平衡、自动曝光控制等,依赖于ISP才能在不同的光学条件下都能较好的还原现场细节,ISP技术在很大程度上决定了摄像机的成像质量)

  • ISP:Image Signal Processor(像信号处理器)

  • HDR:High-Dynamic Range (双帧合成的高动态范围图像)

  • WDR:Wide Dynamic Range(单帧处理的高动态范围图像)

  • DRC:Dynamic Range Compression (宽动态)

  • VPE:Video Process Engine(图像处理引擎,负责对一帧输入图像进行图像质量调整)

  • CFA:Color Filter Arrays(彩色滤波阵列)

  • BPC:Bad PixelCorrection (坏像素校正)

  • DPC:Defect Pixel Correction(坏点校正)

  • BPD:Bad Pixel Detect(坏点检测)

  • FPN:Fix Pattern Noise(固定模式噪声)

  • EV:Exposure Value(曝光值)

  • BV:Brightness Value (亮度值)

  • NR:Noise Reduction/Denoise(去噪)

  • CT:Color Temperature(色温)

  • DM:Demosaicing/Color Filter Array Interpolation/CFA插值

  • EE:Edge Enhancement/Edge Sharpening(锐化,边缘增强)

  • Demosaic:颜色插值

  • PCA/VDE:Hue,Saturation,Contrast,Brightness调试

  • 3A:AE+AWB+AF

  • BT:Bright Tone (明亮的色调)

  • DT:Dark Tone(深色调)

  • AE:Automatic Exposure (自动曝光)

  • AWB:Automatic White Balance (自动白平衡)

  • AF:Automatic Focus(自动聚焦)

  • BLC:Black Level Correction(黑电平校正)

  • OBC: Black Level Compensate (黑电平补偿)

  • CCM:Color Correction Matrix (色彩校正矩阵)

  • LSC:Lens Shading Correction(镜头阴影校正, 只校正Y Shading,工作原理:根据标准光源的raw图生成相应的LSC table,以补偿该光源下的中心到四周的亮度阴影和色彩偏差)

  • ALSC:Auto Lens Shading Correction(自动镜头阴影校正,同时校正Color Shading和Y Shading,工作原理:自动计算生成适合当前场景的LSC table,以消除该场景下的中心到四周的亮度阴影和色彩偏差)

  • LS:Lens Shading分为Luma shading(亮度阴影)和Color shading(色彩偏差)

    • Luma shading:产生的原因是镜头通光量从中心到边角依次减少,导致图像看起来,中间亮度正常,四周偏暗。
    • Color shading:称作色彩不均匀性,在不同色温下RGB三原色的透射能力不同,拍照时表现为图像色彩不均匀。
  • Normal mode :表示为Linear mode(single frame) 和HDR mode(2 frames)

  • Combine mode :表示为Sensor端完成长、短曝光的合成影像包含影像数据压缩程序

  • AE Target: ISP 希望 sensor 输出的图片达到的亮度(目标亮度:通常根据环境亮度BV设置对应的值),对于第一次进相机,ISP 检测到当前帧的亮度 cur_luma 低于目标亮度 target_luma,就会增大 exp_index 获取新的 gain & line_count 进行重新曝光,直到 cur_luma 和 target_luma 相当

  • ES:Exposure Strength (曝光强度 = 曝光时间 * 光圈大小 * ISO<Sensor Analog/Digital Gain, ISP Digital Gain>)

1.1 Sensor动态范围

  • Sensor的动态范围:就是sensor在一幅图像里能够同时体现高光和阴影部分内容的能力。
  • 用公式表达这种能力就是:
    d r = 20 l o g 10 ( i m a x / i m i n ) dr = 20 log_10(i_max/i_min) dr=20log10(imax/imin)
    • d r dr dr:单位为dB
    • i m a x i_max imax:是sensor的最大不饱和电流,也可以说是sensor刚刚饱和时候的电流
    • i m i n i_min imin:是sensor的底电流(blacklevel)

2. 常用算法

2.1 BLC

  • 定义:黑色数据的最低电平值,通常指感光图像数据为0时对应的sensor信号电平值
  • 形成成因
    • CMOS传感器采集的信息经过一系列转换生成原始RAW格式数据。以8bit数据为例,单个pixel的有效值是0~255,但是实际AD芯片(模数转换芯片)的精度可能无法将电压值很小的一部分转换出来,因此,sensor厂家一般会在AD的输入之前加上一个固定的偏移量,使输出的pixel value在5(非固定)~255之间,目的是为了让暗部的细节完全保留,当然同时也会损失一些亮部细节,由于对于图像来说,我们的关注度更倾向于暗部区域,ISP后面会有很多增益模块(LSC、AWB、Gamma等),因此亮区的一点点损失是可以接受的。
    • sensor的电路本身会存在暗电流,导致在没有光线照射的时候,像素单位也有一定的输出电压,暗电流这个东西跟曝光时间和gain都有关系,不同的位置也是不一样的。因此在gain增大的时候,电路的增益增大,暗电流也会增强,因此很多ISP会选择在不同gain下减去不同的BL的值。
    • 若sensor输出raw数据中有附加的黑电平值,需要在ISP最前端去干净。如果不去干净,干扰信息会影响后端ISP各模块的处理,尤其会导致AWB容易不准,出现画面整体偏绿或者整体偏红现象。
  • 校正方法
    • 一般BLC模块会放在ISP比较靠前的位置,因为我们希望图像在进入其他模块之前能够还原最为真实的图像。有些sensor会在sensor内部集成BLC的模块,那么此时ISP里的BLC模块只做微调即可
    • 由于硬件设计人员在设计BLC模块时需要考虑效果和成本,因此目前市场上使用的ISP一般采用的方法是在sensor输出的图像上减去一个固定数值,该固定值,对RGB各通道可以是一样,也可以是不一样,目前大多数厂家如安霸、海思等基本都是采用该方案
    • 利用黑电平随温度和gain的漂移曲线,利用一次函数的方式进行校正,但是对于不同sensor,漂移曲线不一样,因此该方案没有作为通用方案

2.2 AWB (处理色温引起的偏色问题)

  • 由于sensor 上R、G、B pixel的感光特性不同,因此在不同光源下看到的灰阶会有色偏,AWB主要的目的就是希望自动找出一组Rgain、Bgain来做补偿,让画面中灰阶的地方R、G、B值尽量接近。
  • AWB的统计值是将整张画面切成128×90个等分,每个等分都具有代表的R、G、B值,预设横轴有做取样来减少运算量,因此实际只有64×90个统计值。如果想查看某个场景的统计信息,可以开启AWB Analyzer外挂程式,点击Update可更新为当时的统计信息,图表横周轴代表(R/G)×100,纵轴代表(B/G)×100,因此每个区块都能以本身的R、G、B值算出一组座标,并将落点以绿点显示在窗口上,如下所示。

2.2.1 色温(Color Temperature:温度越低色温越高)

  • 定义:光源色温的定义为与此光源发出相似的光的黑体辐射体所具有的开尔文温度。
  • 单位:色温是表示光线中包含颜色成分的一种计量标准,色温的单位是“K”,也叫“开尔文
  • 色温表
    • 红——橙红——黄——黄白——白——蓝白的渐变过程
  • 常见光的色温
    • 蓝色属于高色温,大约9300K;中午的日光属于中等色温,大约5500K;蜡烛的橙黄色属于低色温,大约1700K

2.2.2 为什么需要AWB (消除光源颜色的影响)

  • 人类视觉系统具有颜色恒常性的特点,因此人类对事物的观察可以不受到光源颜色的影响。但是图像传感器本身并不具有这种颜色恒常性的特点,因此,其在不同光线下拍摄到的图像,会受到光源颜色的影响而发生变化。例如在晴朗的天空下拍摄到的图像可能偏蓝,而在烛光下拍摄到的物体颜色会偏红。因此,为了消除光源颜色对于图像传感器成像的影响,自动白平衡功能就是模拟了人类视觉系统的颜色恒常性特点来消除光源颜色对图像的影响的。
  • Sensor原始图像中的白色如果不经AWB处理,在高色温(如阴天)下偏蓝,低色温下偏黄,如宾馆里的床头灯
  • 这张图可以理解为在多光源下的白平衡调整.阴影色温比阳光下色温要高一些,如果阳光下是5000k,阴影可能是7000k.有光就有影,它们经常出现在一个镜头里,对着其中一个色温调,另一边就会偏色.为了整体效果好,要把翘翘板平衡起来,可以加一些策略在里面。

2.2.3 AWB的目标

  • 对于白色物体,如果它周围的光线色温较低,那么它看起来就会偏微红色; 相反,如果它周围的光线色温较高,那么它看起来就会偏微蓝色。因此,AWB的作用就是用来处理图像的色彩,使其看起来更加接近自然色
  • 为了让人主观上认可拍出来的图,必须把不同光照下的物体颜色纠正成人眼认同的颜色。比如 ,不同光照下的白色区域RGB值不相等,但为了满足人眼,需要把它们调成相等。白色区域配平后,RGB三个通道分别得到一个调节系数,其他像素也根据这系数做调整,就叫做白平衡。
  • 上图中,左边是原图像,可以很明显的看到处于一种暖色调的状态,以至于原本是白色的云也显得偏暖偏黄;而右边的图是经过自动白平衡处理后的结果图像,可以看出白云蓝天回归了正常的色彩,还有建筑也显得更加真实、自然,符合人眼观感。

2.2.4 如何实现自动白平衡 (先确定色温然后找对应调节系数)

  • 为了适应人眼视觉的特点,相机厂家会把常见的光源条件下,其相机产品的对应白平衡参数调出来,让用户自动去选择拍摄的场景和对应的参数组。但对于普通用户,还是希望简单粗暴直接的一个按钮搞定,所以相机自己就需要识别当前场景的光源色温,根据色温类型查找对应的RGB平衡参数,这就是自动白平衡(AWB)。

2.3 CCM (还原色彩和饱和度)

  • 一般来说sensor 对光谱的响应,在 RGB 各分量上与人眼对光谱的响应通常是有偏差的,通常通过一个色彩校正矩阵CCM(Color Correction Matrix)校正光谱响应的交叉效应和响应强度,使前端捕获的图片与人眼视觉在色彩上保持一致。
  • 色彩还原:通常通过一个色彩校正矩阵校正光谱响应的交叉效应和响应强度,使ISP 处理后的图片与人眼视觉在色彩上保持一致。
  • 饱和度:也称色彩的纯度。取决于该色中含色成分和消色成分(灰色)的比例。含色成分越大,饱和度越大;消色成分越大,饱和度越小。
  • 离线校准工具 Calibration Tool 支持 3x3 Color Correction Matrix 的预校正。在 ISP 运行时,FW 根据当前的光照强度,调整饱和度,实现 CCM(Color Correction Matrix)矩阵系数的动态调整。
  • CCM矩阵

2.4 AE (根据统计值将画面整体亮度控制在一个理想的状态)

  • AE 的目的在于通过收到的统计值将画面整体亮度控制在一个理想的状态。我们一般是根据目前的环境亮度来确定我们需要调到的一个目标亮度Target。AE有一个内收敛和外收敛区间,这就决定了Target是一个区间而不是一个确定值
  • 内收敛区间:是我们需要从当前亮度调至目标亮度的区间内,就停止收敛。
  • 外收敛区间:是稳定时亮度在目标亮度的区间外,则开始进行收敛。
  • 一般主要是根据不同的环境亮度来配置目标亮度,然后配置曝光行程表。配置Target时要注意值的大小,避免跳档。配置曝光行程表是要做到每个档位的变化只修改一个变量,避免跳档时图像变化过大。
  • AE Target Offset与AE Target的关系
  • AE Target与曝光行程表的关系

2.4.1 AE自动曝光不等于亮度

  • 自动曝光 = ISO(感光度) x 光圈 x 曝光时间,使得Sensor输出或者使得ISP在AE测光之前的图像输出达到一定的亮度
  • 亮度:是指最终的成像效果,除了AE之外,还包含后面的gamma、Tone mapping、Multi frame HDR… 对图像输出的处理

2.4.2 RAW格式

  • RAW图像:就是CMOS或者CCD图像感应器将捕捉到的光源信号转化为数字信号的原始数据,表示Sensor接受到的各种光的强度,是Sensor输出的数据格式。
    • RAW文件是一种记录了数码相机传感器的原始信息
    • 同时记录了由相机拍摄所产生的一些元数据(Metadata,如ISO的设置、快门速度、光圈值、白平衡等)的文件
  • RAW格式:Raw 在输出时具有一定的顺序格式,一般分为四种:
格式
00GR/BG
01RG/GB
10BG/GR
11GB/RG
  • 假设一个Sensor的像素是88(分辨率为88),那么这个sensor就有8*8个感光点,每个感光点就是一个晶体管。那么对于上表中四种排列格式的rawRGB数据如下图所示:
  • 因为人眼对绿色比较敏感,所以增强对绿色的采样,每种格式中存在两个G分量。其中每个分量代表一个pixel,所以GR/BG代表4个pixel,就表示sensor上面的4个晶体管,每个晶体管只采集一个颜色分量,然后通过插值计算出每个pixel的其他分量,目的是降低功耗。
  • RAW位数
    • RAW8:用8bit表示G/R/G/B中的一个分量
    • RAW10:用10bit表示G/R/G/B中的一个分量,但是数据中是16bit,高6位没用
    • RAW12:用12bit表示G/R/G/B中的一个分量,但是数据中是16bit,高4位没用

2.4.3 AE统计模块

  • AE模块一般由 ISP的 AE统计模块AE控制策略算法两部分组成
  • AE 统计模块:通常是硬件模块,一般在LSC/WB之后, AE提供的统计信息包括亮度直方图和亮度区域统计值
  • 可同时提供整幅图像的 256 段直方图和 R/Gr/Gb/B 四分量平均值统计信息,还可提供将整幅图像分成 MxN 区块的每个区块的 R/Gr/Gb/B 四分量平均值统计信息

2.4.4 AE算法模块

  • AE算法模块是根据ISP AE统计模块的数据,进行实时计算,然后配置新的曝光参数写给Sensor
  • 合适的曝光:从人眼可见的亮度、直方图两种维度去看什么是合适的曝光 (这是感观上的)

2.4.5 曝光误差的量化

  • 当前曝光值和定义的标准曝光值之前的偏差就叫曝光误差,首先我们先确定一个曝光标准,就是欠曝和过曝的时候,向正确的曝光标准去矫正,我们以“18%中性灰”作为人眼可以接受的标准亮度;
    一般软件的计算公式:
    • Exposure ^gamma(0.45) = pixel_value
    • Log(exposure) = log(pixel_value) /gamma
    • exposure_error = △( log (Exposure) )
  • 18%中性灰
    • 18度灰是指光线反射率为18%的一种灰色
  • 要说清楚曝光的原理就首先要说人眼的视觉,人眼对观察到的亮度变化是一种对数压缩规律:
    • 比如亮度为 1000 烛光/平方米的一个东西,和亮度为 500 烛光/平方米的一个东西,虽然他们亮度相差 500,人眼认为他们亮度差一倍
    • 比如亮度为 10 烛光/平方米的一个东西,和亮度为 5 烛光/平方米的一个东西,虽然他们亮度相差只有 5,人眼认为他们亮度也差一倍
    • 这种对数压缩使我们既能看清楚亮度极高的蓝天白云,又能看清楚烛光下的生日蛋糕
  • 18%灰在人眼看来,做过对数压缩后,正好是 100%的中间,所以用 18%反光率的灰板作为中级灰(中间调、中度灰)是非常科学的
  • 当灰板的反光率从 3.6%(基本就是 0)变到 90%(基本就是 100%)时,人眼观察到的亮度变化, 18%灰正好是中心,所以把它作为标准
  • 一般来说,自然界不主动发光,只是反射光线的物体,其反光率都在 3.6%到 90%之间,所以用反光率 18%的灰板来作为标准也是比较符合实际情况的

2.4.6 计算AE Target

2.4.6.1 均值法

  • 利用均值法得出AE targert,均值法就是要满足当前场景亮度的平均反射率等于18%中性灰的反射率这个假设,来得出此时是曝光正确的
  • Gamma的计算公式:
    O u t p u t = 255 × ( I n p u t / 255 ) 1 / g a m m a I n p u t = 255 × ( O u t p u t / 255 ) g a m m a Output = 255 \\times (Input/255)^1/gamma \\\\ Input = 255 \\times (Output/255)^gamma Output=255×(Input/255)1/gammaInput=255×(Output/255)gamma
  • 在经过gamma后的亮度值是122 (这是色卡厂家提供的24个patch的标准rgb空间下的理论值,是带了2.2gamma的),把122代入进去,结果是约等于50 , 也就是说AE的目标就是把图像的平均亮度在gamma前调整到50
    255 ∗ ( 122 / 255 ) 2.2 = 50 255 * (122/255)^2.2 = 50 255(122/255)2.2=50

2.4.6.2 均值法的局限

  • 均值法是基于图像平均反射率等于18%灰这个假设,但当场景中背景色彩单一的时,这个假设就不成立
  • 比如背景中白色较多,或者黑色较多的时候,如下图右上角的灰卡实际是18%反射率的色卡,但由于背景全白,出现视觉误差,出现欠曝
  • 为了视觉上将其纠正为18%灰,就必须增加亮度,反之当背景全黑时,就会出现过曝 (也就是摄影中的白加黑减原理)

2.4.6.3 均值法AE的改进(直方图法)

  • 因为上面的缺点,在均值法的基础上,引入了直方图的方法,利用了直方图均衡,过程如下:
    • 图1中亮度值达到了平均值,但是分布于低亮度的pixel太多,图像细节较少,对比度小
    • 通过直方图均衡化后,图2和图4可以看出对比度增大,此时再去做均值法曝光
  • 直方图均衡的效果
    • 提高对比度
    • 增加动态范围

2.4.6.4 AE算法要求

  • AE算法的要求是“快,准,稳”。即要很快的能收敛到target附近,而且亮度要准确,收敛过程要平滑,收敛完成后要稳定
  • 影响AE算法的因素:图片亮度的统计,AE target,AE table,收敛速度控制
  • 实际操作中调节的因素有:调节曝光时间,调节光圈大小,调节Sensor的ISO感光度

2.4.6.5 曝光三角形 Exposure Triangle

  • 自动曝光算法可以理解为一个伺服系统,它不断监控ISP生成的每一帧图像的曝光状态,如果发现采集到的状态与理想目标发生偏离(超过容许范围)则立即进行干预响应,使系统尽快回到容许的工作范围内。

  • 在一个响应周期内,AE算法需要处理的具体事项是:

    • 根据ISP 硬件生成的图像曝光统计数据评估当前图像的曝光质量
    • 如果曝光质量需要调整,则根据当前的工作参数和理想曝光目标生成下一帧图像的工作参数
    • 将新的工作参数写入各硬件设备,驱动光圈、sensor 快门及增益到达新的位置
  • AE 算法的第一个任务是评估当前图像的曝光质量,大体上可以分成曝光不足、曝光适当、曝光过度三种情况。

  • 人类使用肉眼观察比较容易判断一副图像是否曝光适当,但是AE 算法需要一定的客观标准来精确地定义什么是曝光适当。目前主流的ISP 硬件都会提供关于图像的直方图统计数据,AE 算法可以利用直方图的均值来判断图像是否曝光适当。对于多数场景而言,当图像直方图的均值位于设备动态范围的一半位置时,画面的曝光质量通常是比较理想的

  • AE调控对象(四个参数)

    • 光圈
    • Sensor积分时间 (曝光时间)
    • Sensor增益(包含模拟增益和数字增益)
    • ISP数字增益
  • 曝光三角形 Exposure Triangle

    • 光圈(aperture)的副作用主要是影响景深
    • 快门(shutter)的副作用主要是影响运动模糊。一般而言,当曝光时间大于15ms时,画面中速度大于40km/h的车辆就会开始变模糊。当曝光时间大于30ms时,画面中走动的人就会变模糊。因此,拍摄对象的预期移动速度基本上决定了曝光时间的上限
    • 增益(ISO)的副作用主要表现为画面噪声,尤其是数字增益会引入较大的噪声,显著降低图像质量
  • 光圈、快门和增益三者的效能

2.4.6.6 AE算法的策略

  • AE算法的策略主要分光圈优先、快门优先、增益优先:
    • 光圈优先算法只适用于Camera 装配有可变光圈镜头的情形,此时算法会优先调整光圈到合适的位置。当光圈调整到极限后再开始分配曝光时间和增益
    • 当camera光圈不可调时,AE 算法通常会优先分配曝光时间,再分配Sensor 增益和ISP 增益
    • 增益优先则是优先分配Sensor 增益和ISP 增益,再分配曝光时间,适合拍摄运动物体的场景

2.4.6.7 AE 策略的理论依据

  • AE 策略的主要考虑是图像质量,不同的控制手段对图像质量的影响是不同的:
    • 增加光圈可以增大sensor 收集光信号的面积,增加曝光时间可以延长sensor 积累光信号的时间,这两种途径都有助于积累信号,提高信噪比,所以会提高图像质量
    • sensor 增益实际上存在两种形式,即模拟增益和数字增益。模拟增益在放大信号的同时会等比例地放大噪声,所以对提高信噪比没有好处,但也没有坏处,可以放心地使用。而数字增益由于精度的限制会引入量化噪声,不仅对提高信噪比没有好处,反而会有恶化信噪比,降低图像质量,因此需要慎用。
    • ISP 增益是纯数字增益,和sensor 数字增益是同样的道理,所以通常很少用。

2.4.6.7 AE算法的分工

  • AE算法需要依赖ISP 硬件提供的关于图像的曝光统计数据。曝光统计需要对图像中的每一个像素进行分类和计算,涉及的计算量非常大,对时序要求非常严格,所以这个工作只能交给硬件流水线去做,不适合CPU 处理。
  • AE算法中根据统计数据评估图像质量、产生新的控制参数的部分则有逻辑比较复杂、算法经常需要升级、数据吞吐量一般不大等特点,因此非常适合用CPU 处理。
  • 通用的Camera ISP 流水线中都会提供AE 统计功能,而且这部分设计有越来越复杂的趋势。
  • 举例如下:
  • 海思ISP 支持
    • 三个 AE 采样点, After DG, WB, DRC
    • 1024bin 全局直方图
    • 不支持 局部直方图
    • 分块统计, 最大支持 15x17 块,最小 1x1 块
  • Apical ISP 支持
    • 三个 AE 采样点,After VTPG / WB / Decompander
    • Luma Variance 统计
    • 1024bin 和 5bin 全局直方图
    • 支持 5bin 局部直方图
    • 分块统计, 最大支持 33x33 块,默认值 21x23。

2.4.6.8 AE 统计策略

  • 当需要对一件事情进行的统计的时候,首要的问题就是如何确立统计口径,或者说如何分配统计权重。不同的统计口径计算出的结果会存在较大差异。这是一个开放的问题,没有对错之分,更多是主观取舍。常用的统计方法有以下几种。
    • 全局统计:是指将图像全部像素都统计进来,像素的权重完全一样
    • 中央权重统计:是指只统计图像中间部分,这主要是因为人们关注的重点通常都位于图像的中间部分;镜头的成像效果也是中央部分清晰度最高,越到边缘清晰度越低
    • 中央加背景:图像中间部分占50%权重,图像整体作为背景占50%权重
    • 加权平均统计:是指将图像分为不同的部分,如9宫格或者13~15个分散的曝光格,每一部分赋予不同的权重,通常中间部分赋予较大权重,相应的边缘部分则赋予较小的权重。
    • 用户ROI:用户通过人机界面划定一个窗口,AE 只统计这个固定窗口内的像素值

2.4.7 典型AE算法

2.4.7.1 基本思想

  • 典型的 AE 算法是一种基于负反馈原理的PID算法。算法的控制参数分段可调,在不同的区间内算法的收敛速度不同,以期在过渡平滑性和快速响应之间取得较好的平衡。
  • 在当前曝光量与目标量差别在range0以内的时候,说明当前曝光已经满足要求,不需要进行调整
  • 当差别在range1的范围内时,则说明当前曝光与要求的光照有差别,但差别不大,只需要用较小的步长来进行调节即可
  • 当差别在range2的时候,则表明差别较大,需要用较大步长来进行调节

2.4.7.2 控制参数 ( g = L t a r g e t / L m e a s u r e d g=L_target/L_measured g=Ltarget/Lmeasured)