第27期
“眼前的黑不是黑,你说的白是什么白…”
▲图自丨360图片
不知你是否有想象过,有时候你眼睛看到的黑图其实也并不是全黑。对于摄像头模组而言,图像从全黑感应光线至图像过曝,芯片ADC输出数字信号也从0不断增大到1023。
然而实际应用中,模组通常不会用0数值来表示全黑信号,而是会加上基础数值比如64。当然这并不是模组芯片坏了,而是故意而为之的设定操作,该基础数值称之为黑电平(black level)。
需要设定黑电平的原因主要有以下两点:
01
前面科普文提到过,感光芯片感应到光线信号,进而转换为模拟信号,再通过A/D转换成数字信号。以10bit数据为例,转换成的数字信号通常为0~1023的范围,然而A/D转换器的精度无法将电压值很小的一部分转换出来,从而导致暗态细节损失。
芯片人为地给输出信号加一个固定的偏移量,使整体信号值放大,有效保留了电压值很小的暗部细节,当然也会损失部分亮度细节。然而我们平时较注重暗态拍照,保留暗部细节牺牲部分动态范围的操作是大众比较认可的。
02
Sensor的电路本身会存在暗电流。 暗电流主要产生在CMOS芯片通过光电二极管将光信号转化成模拟信号的过程中,光电二极管受到温度,电压稳定性等因素的干扰,导致全黑状态下输出的电平并不一定稳定为0,而信号的不稳定会导致部分图像的偏色。人为将全黑状态的数值固定钳制在黑电平这个值,很大程度上是为了保证信号的稳定性,以保证全图图像效果表现一致。
Black Level的应用
由于Black Level是所有信号的基础值,在做手机效果调试时,最先做的操作就是黑电平标准(BLC,Black Level Calibration)。拍摄几张全黑的图片放入调试工具,工具会读取并减去实拍图片的黑电平值。
减掉的黑电平值需要是准确的,否则容易造成图像整体偏色。
把一只毛色纯白萌萌哒的小猫咪拍成暖橘猫,甚至包括整个背景都渲染成暖橘色,比如下图左边就是整体偏色的效果。
Black Level校正失效也会有类似的影响,如下图,
-
当Black Level值扣除过少时,整体图像画面灰蒙蒙的,整画面对比度没有那么高;
-
当Black Level值扣除过多时,整体画面暗沉沉,动态范围变低细节损失多,黑色部分偏色无法通过白平衡纠正。
理想情况下,我们想象全黑下的整副图像的信号值都是一样的,都是64,我们在做BLC时只要把这个值扣掉就可以了。然而实际应用中并没有那么简单,Black Level受到很多因素的影响,比如增益,温度,PCB Layout等等。而且这种影响比较随机,不是想象中整体图像信号值的增加或减少,而有可能是左上角增大了,右下角减小了,或者左侧整体增大了,而右侧整体减少了,也就造成了整体画面的Black Level分布不均匀。
好比军队阅兵走方步,说好了大家步调一致一起走的,左上角那几位你跨那么大的步伐是想干啥。
▲图自丨网络
理想情况全黑原图,黑电平值都是64,如左图,BLC校准之后如右图。
实际应用时,当加大增益值,原图黑电平值在边缘出现偏移64的情况。经BLC校准之后,尚有部分信号余留。
下图便是某模组在增益加大到16x时,BLC校准后的全黑图像,图像左侧和右侧都出现了偏红偏紫的现象。
对于这种现象,一般是由于Black Level值不稳定造成的,通常可以修改芯片参数设定,或者通过其他效果调试来掩藏该效果,甚至修改模组PCB设计来优化。如下图为修改某个寄存器的值后,图片R通道的Black Level值均匀程度得到大幅改善,校正之后的图像效果有了显著提升,原理在于芯片对不同通道或不同视场的增加补偿系数以达到稳定Black Level的结果。
将默认值0X06修改成0X00之后,OB最均匀,边缘红色偏色现象明显减弱。
综上,黑电平及其校正在整个图像调试过程中有着十分重要的意义,如果一开始黑电平的校正就不准确的话,那么后面整个调试的流程都会产生偏差,可谓一步错,步步错。在后续遇到全黑状态下的偏色现象,可以首先诊断下是不是模组的Black Level值出现了问题。