ISP基本框架及算法介绍
扫描二维码
随时随地手机看文章
ISP 的Firmware 包含三部分,一部分是ISP 控制单元和基础算法库,一部分是AE/AWB/AF 算法库,一部分是sensor 库。Firmware 设计的基本思想是单独提供3A 算法库,由ISP 控制单元调度基础算法库和3A 算法库,同时sensor 库分别向ISP 基础算法库和3A 算法库注册函数回调,以实现差异化的sensor 适配。ISP firmware 架构如下图所示。不同的sensor 都以回调函数的形式,向ISP 算法库注册控制函数。ISP 控制单元调度基础算法库和3A 算法库时,将通过这些回调函数获取初始化参数,并控制sensor,如调节曝光时间、模拟增益、数字增益,控制lens 步进聚焦或旋转光圈等。
1. TestPattern------测试图像 Test Pattern主要用来做测试用。不需要先在片上ROM存储图片数据,直接使用生成的测试图像,用生成的测试图像进行后续模块的测试验证。以下是常用的两种测试图像。
2. BLC(BlackLevel Correction)------黑电平校正
Black Level 是用来定义图像数据为 0 时对应的信号电平。由于暗电流的影响, 传感器出来的实际原始数据并不是我们需要的黑平衡( 数据不为0) 。所以,为减少暗电流对图像信号的影响,可以采用的有效的方法是从已获得的图像信号中减去参考暗电流信号,或者更确切是:模拟信号很微弱的时候,有可能不能被A/D转换出来,导致光线很暗的时候,图像暗区细节丢失。因此,sensor一般会在A/D转换之前,给模拟信号一个偏移量,以确保输出的图像保留足够多的细节。而黑电平校正主要是通过标定的方式确定这个偏移量。使得后续ISP模块的处理在保持线性一致性的基础上进行。
一般情况下, 在传感器中,实际像素要比有效像素多, 像素区头几行作为不感光区( 实际上, 这部分区域也做了 RGB 的 color filter) , 用于自动黑电平校正, 其平均值作为校正值, 然后在下面区域的像素都减去此矫正值, 那么就可以将黑电平矫正过来了。如下图所示,左边是做黑电平校正之前的图像,右边是做了黑电平校正之后的图像。
黑电平校正是在一倍系统增益的情况下标定计算而来,有些sensor在高倍增益和低倍增益时,OB相差会比较大。这个时候就需要获取不同增益环境下的遮黑RAW数据,分析R/Gr/Gb/B四个通道下的mean值。分析出来的均值即为各个通道的OB值。如果需要微调,即可在标定的OB上进行。例如:低照度下偏蓝,即可根据所在的ISO范围将B通道的幅度增加,减轻偏蓝现象。
BLC原理及具体算法可以参考:ISP——BLC(Black Level Correction)
3.LSC(Lens Shade Correction)------镜头阴影校正 由于相机在成像距离较远时,随着视场角慢慢增大,能够通过照相机镜头的斜光束将慢慢减少,从而使得获得的图像中间比较亮,边缘比较暗,这个现象就是光学系统中的渐晕。由于渐晕现象带来的图像亮度不均会影响后续处理的准确性。因此从图像传感器输出的数字信号必须先经过镜头矫正功能块来消除渐晕给图像带来的影响。同时由于对于不同波长的光线透镜的折射率并不相同,因此在图像边缘的地方,其R、G、B的值也会出现偏差,导致CA(chroma aberration)的出现,因此在矫正渐晕的同时也要考虑各个颜色通道的差异性。
常用的镜头矫正的具体实现方法是,首先确定图像中间亮度比较均匀的区域,该区域的像素不需要做矫正;以这个区域为中心,计算出各点由于衰减带来的图像变暗的速度,这样就可以计算出相应R、G、B通道的补偿因子(即增益)。下图左边图像是未做镜头阴影校正的,右边图像是做了镜头阴影校正的。
出于节约成本的考虑以及尺寸方面的原因,手机相机镜头向小型化和低成本方向发展。由于摄像头尺寸小,制造材料品质低,拍摄的图像在靠近边缘处会出现亮度衰减的现象。因此要对 Bayer raw 图像进行镜头衰减校正,以降低计算负荷。使用 LUT 分段线性近似法代替模拟曲线和多项式运算。每种颜色都有自己的 LUT,因此亮度衰减和色偏问题可同时得到解决。
针对不同增益下的LSC校正强度也会有所不一样。低照度下相对会比正常光照情况下校正强度要小一些。因此,ISP会预留接口以便对不同增益下的LSC强度进行调整。抑或者预留接口控制图像不同区域的LSC校正强度。例如:从中心区域开始往图像四周校正强度逐级减弱。
具体算法原理可以参考:ISP之LSC LSC校准原理 LSC校准前后结果对比
4.DPC(Bad Point Correction)------坏点校正 所谓坏点,是指像素阵列中与周围像素点的变化表现出明显不同的像素,因为图像传感器是成千上万的元件工作在一起,因此出现坏点的概率很大。一般来讲,坏点分为三类:第一类是死点,即一直表现为最暗值的点;第二类是亮点,即一直表现为最亮值的点:第三类是漂移点,就是变化规律与周围像素明显不同的像素点。由于图像传感器中CFA的应用,每个像素只能得到一种颜色信息,缺失的两种颜色信息需要从周围像素中得到。如果图像中存在坏点的话,那么坏点会随着颜色插补的过程往外扩散,直到影响整幅图像。因此必须在颜色插补之前进行坏点的消除。
盐椒噪声是一种在图像中产生黑点或白点的脉冲噪声,这类噪声往往和图像信号内容不相关,与邻域周边像素灰度值差别明显。中值滤波能够较好的滤除盐椒噪声(冲激噪声)。对于Sensor坏点来说,在一定程度上也可以看做是盐椒噪声,因此,坏点校正也可以使用中值滤波进行滤除。
算法基本原理:
以图1.10中P4点为例,坏点消除基本过程为:首先计算该像素点与周围像素点像素值的差: 设定一个阈值,作为判断的标准。判断各个方向上的差值跟阈值的关系,如果都大于阈值的话,就表明该点像素值与周围像素点的差别较大,就可以确定该像素点为坏点,否则该像素就为正常的像素点,可以进行下一个像素点的处理。
若判断出某点为坏点,接下来进行对其的校正,过程如下:计算该点各个方向上的导数: 确定出该值最小的方向,表明该像素点需要在该方向上进行补偿,则按照下面的公式对该像素进行补偿,即若假设有
((DV<=DH)