ISP算法简述-BLC
Black Level Calibration, 黑电平矫正
现象
1)在纯黑条件下拍张图,你会发现像素值不为0
2)或者你发现图像整体偏色
这些问题可能是黑电平导致的。
原因
存在黑电平的原因有2个:
1)sensor的电路本身存在暗电流。暗电流主要产生在光电信号转换过程中,光电二极管受温度,电压稳定性等因素的干扰,导致全黑状态下输出电平不一定稳定为0。
2)A/D转换器的精度无法将电压值很小的一部分转换出来,这会导致暗部细节丢失。因此人为的给模拟信号加一个固定的offset,使整体信号放大,有效的保留了暗部细节。当然这也会导致亮部溢出,损失亮部细节。而人眼特性是对暗部细节更加敏感,因此优先保证暗部细节。
BLC就是为了去除上述的暗电流和offset,一般放在ISP的前端。
BLC若处理的不好,会导致图像偏色,因为黑电平影响了RGB之间正常的比例关系:
扣少了会导致图像偏紫,对比度降低
扣多了会导致图像偏率,动态范围降低
算法
矫正分为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://www.cnblogs.com/chuqianyu/
本文来自博客园,本文作者:楚千羽,转载请注明原文链接:https://www.cnblogs.com/chuqianyu/p/17858137.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利!