ISP-黑电平校正(BLC)

概述介绍黑电平(Black Level Correction)也就是黑色的最低点 , 以8bit数据来说 , 指在经过一定校准的显示装置上 , 没有一行光亮输出的视频信号电平 。 定义图像数据为0时对应的信号电平 。
原因那么为什么要进行黑电平校正呢?原因如下:

  1. CMOS传感器采集的信息经过一系列转换生成原始RAW格式数据 。 以8bit数据为例 , 单个pixel的有效值是0~255 , 但是实际AD芯片(模数转换芯片)的精度可能无法将电压值很小的一部分转换出来 , 因此 , sensor厂家一般会在AD的输入之前加上一个固定的偏移量 , 使输出的pixel value在5(非固定)~255之间 , 目的是为了让暗部的细节完全保留 , 当然同时也会损失一些亮部细节 , 由于对于图像来说 , 我们的关注度更倾向于暗部区域 , ISP后面会有很多增益模块(LSC、AWB、Gamma等) , 因此亮区的一点点损失是可以接受的 。
  2. sensor的电路本身会存在暗电流 , 导致在没有光线照射的时候 , 像素单位也有一定的输出电压 , 暗电流这个东西跟曝光时间和gain都有关系 , 不同的位置也是不一样的 。 因此在gain增大的时候 , 电路的增益增大 , 暗电流也会增强 , 因此很多ISP会选择在不同gain下减去不同的bl的值 。
Optical Black每个sensor都有OB区域 , CCD sensor初期成像效果较差 , 它会把top OB 和 side OB暴露给isp使用 , 这样isp可以自己估算不同区域不同的black level值 , 再分别处理 。 然而ob并不能真实的反映黑电平的值 , 因此目前很少有ISP或sensor去使用ob区域进行计算 。
校正现在的主流cmos sensor都是自己把black level已经处理完了 。 在isp部分减掉的其实不是black level , 而是sensor统一做出来的pedestal 。 sensor端不会将bl减完 , 因为sensor输出不能为负数 , 若将bl减完 , 就等于小于0的部分直接就丢掉了 , 这样做会改变noise的分布 。
算法【ISP-黑电平校正(BLC)】一般BLC模块会放在ISP比较靠前的位置 , 因为我们希望图像在进入其他模块之前能够还原最为真实的图像 。 有些sensor会在sensor内部集成BLC的模块 , 那么此时ISP里的BLC模块只做微调即可 。
由于硬件设计人员在设计BLC模块时需要考虑效果和成本 , 因此目前市场上使用的ISP一般采用的方法是在sensor输出的图像上减去一个数值 。
BLC各个通道均需要校正 , 目前比较常用的方法有:
  • 中值
  • 全局均值
  • 局部均值
  • 自定义
计算较为简单 , 这里不附代码了 。
tuning由于电源、PCB等各个原因 , 我们遇到的黑平衡并不是那么理想 , 如下两种情况 , 当然还有更糟的 , 这里不一一列举 。
ISP-黑电平校正(BLC)文章插图
ISP-黑电平校正(BLC)文章插图
校正前需要根据图像的具体情况进行分析 , 若图像平面趋于平整 , 则推荐使用全帧均值;若图像出现一些峰值 , 有明显突出山峰等 , 推荐使用中值的方法;若出现某个角的值比较高 , 可能由于电源或者其他的原因引起的 , 则推荐使用局部计算的方法;此外 , 还有自定义、最大值等方法 , 需要根据不同图像的情况去选择方法 , 终其目的都是一样的 。
以单通道为例 , 以下是黑电平校正的示意图:
ISP-黑电平校正(BLC)文章插图