ISP算法简述-BLC

发布时间 2023-11-26 22:46:44作者: 楚千羽

Black Level Calibration, 黑电平矫正

现象

1)在纯黑条件下拍张图,你会发现像素值不为0

2)或者你发现图像整体偏色

这些问题可能是黑电平导致的。

原因

存在黑电平的原因有2个:

1)sensor的电路本身存在暗电流。暗电流主要产生在光电信号转换过程中,光电二极管受温度,电压稳定性等因素的干扰,导致全黑状态下输出电平不一定稳定为0。
2)A/D转换器的精度无法将电压值很小的一部分转换出来,这会导致暗部细节丢失。因此人为的给模拟信号加一个固定的offset,使整体信号放大,有效的保留了暗部细节。当然这也会导致亮部溢出,损失亮部细节。而人眼特性是对暗部细节更加敏感,因此优先保证暗部细节。

BLC就是为了去除上述的暗电流和offset,一般放在ISP的前端。

BLC若处理的不好,会导致图像偏色,因为黑电平影响了RGB之间正常的比例关系:

扣少了会导致图像偏紫,对比度降低
扣多了会导致图像偏率,动态范围降低

image

算法

矫正分为2部分:

1)sensor端的矫正:一般采用OB区矫正法
2)isp端矫正:由于sensor端已完成了最复杂的矫正,这部分处理比较简单。

OB区矫正

关于 OB区的概念与矫正办法,可参考这位大佬的文章:ISP-OB - 知乎 (zhihu.com)

另外,在sensor手册上也是可以看到其具体的矫正算法的,以某sensor为例:

1)先按行读取OB区的值,计算得行均值(各颜色通道独立)
2)行均值经scaled,offset(即y=scaled*x+offset)后,再加权平均得到correction_value

【注】:scaled和offset具体值取决于工作温度。且应该是越靠近active区,权重越高。

3)像素实际值 = 像素readout值 - correction_value
4)上面步骤得到的像素值可能是负数,为保留这些值,我们会添加pedestal值(各通道独立),而不是直接clip为0

综上,像素输出值 = 像素实际值 + pedestal = 像素readout值 - correction_value + pedestal

注:OB区与active区的黑电平毕竟是有差异的,所以这种办法并不能完美矫正。

ISP端

由于OB区已经进行了虽不完美但也不错的处理,isp这边的操作就比较简单了,分通道减去pedestal即可(也可称为offset).

【注】:也有利用标定法来进行处理的,即在不同的Again,Dgain,温度,曝光下拍摄黑帧,以mesh表的形式进行黑电平计算,存储,矫正。这种矫正办法更准确,但考虑的因素越多,模块复杂度也呈指数上升。

转自:https://zhuanlan.zhihu.com/p/505024642