ISP算法 | 黑电平(BLC)

BLC其实和sensor的结构有关,奈何楼主对sensor结构的研究不是特别深入,所以就从ISP的角度来简单介绍一下BLC相关知识。

1. 什么是黑电平

黑电平(Black Level)这个概念其实在不同的位置有不同的叫法,对于sensor厂家来说,黑电平指的是OB(Optical Black),就是光学上的绝对暗区,处于绝对暗区的像素是不曝光的,OB在sensor中的排列顺序如下图1所示。

ea270979bd0d4c22a78ee58c474f21ff.png

图1 Optical Black示意图

 

图1中彩色的部分就是sensor的曝光数据,黑色的部分就是预留的未曝光的部分,也就是Optical Black,由于sensor本身存在暗电流,所以即使没有外部的光线输入,也有一定的输出电压。sensor中未曝光的部分也是可以读取的,通过读取这些暗区像素的大小,可以实时得到optical black level,大多数sensor厂家都会通过设计自己的算法把它给处理掉,这部分不用ISP操心,所以sensor实际输出的RAW为:

RAW=sensor input - optical black level

但是下面这个pedestal就需要ISP来做了。

在sensor端,AD芯片(模数转换芯片)的精度无法将很小的电压值转换出来,因此,sensor厂家一般会在AD的输入之前加上一个固定的pedestal(基底),此时sensor的输出就变成了:

RAW=sensor input - optical black level + pedestal

这样做的好处是完全保留了暗部的细节,坏处是加了pedestal之后高光信号会有溢出现象,会损失一部分亮部的细节,考虑到人眼对画面暗处更敏感,亮区的一点点损失是可以接受的。而ISP拿到的就是加了这个pedestal的数据,所以ISP的第一个模块就是要把pedestal减掉,在ISP中用于减去pedestal的模块被称为BLC(Black Level Correct),即黑电平校正。

2. 有哪些因素影响BLC

对于ISP端来说,pedestal是可以通过sensor厂家直接获得的,拿过来直接减就行了,但是OB(Optical Black)的处理就会有些麻烦,涉及到了一些算法上的分析和设计。主要有传感器模拟增益和温度两个方面影响OB。

 

​​​​​​​2.1 传感器模拟增益(AG)对OB的影响

Sensor Analog gain(传感器模拟增益,简称AG):芯片像素点感应光子,将光子转换为电荷,并最终转换为模拟信号,模拟信号放大的过程称之为“模拟增益”,此过程发生在模数转换之前。

在低增益的时候,图像的亮度比较均匀,图像中没有特别亮的区域也没有特别暗的区域,这个时候OB还是比较集中的,此时用减去OB均值这样的方法没什么问题。但是在高增益的情况下,OB的均值可能没变,但是方差变大了,这就是说OB的波动变大,此时如果还按照OB的均值来减,就有可能有较多的残余,且RGB分量会有明显的不平衡,后面再受到白平衡(Rgain、Bgain)的影响,图像暗处会偏紫。

​​​​​​​2.2 温度对OB的影响

    随着温度的变高,OB的偏移也在加大,此时去除OB就要考虑到各家sensor在设计、工艺和算法上的能力了,sensor内部的BLC算法有没有根据温度扣除OB,要看各家的算法设计。

​​​​​​​3. 总结

由于pedestal是固定值,目前的ISP设计,都是去除全局均值的做法,根据不同的gain做不同的校准采样。若ISP多扣一点OB,一是会导致awb在暗区偏绿,二是会导致噪声形态被破坏,若ISP分通道扣除OB,会导致不同的色温下,偏色情况不同。

 

### ISP BLC电平校正)算法原理 #### 电平校正的目的 在图像信号处理(ISP)管道中,电平校正的主要目标是消除由暗电流噪声和感光元件非均匀性所造成的色彩偏差[^2]。这有助于提高最终成像质量。 #### 工作机制概述 为了达到上述目的,BLC通过调整传感器输出电压来补偿这些不理想因素的影响。具体来说: - **测量偏移量**:当相机处于完全遮蔽状态时获取数据作为参考点;此时像素应只记录环境温度下的电子活动即所谓的“暗帧”。此过程可以揭示每个像素位置上的固有偏置水平。 - **计算平均值或最小值**:对于整个画面或者特定区域内的所有有效像素求取其均值或是寻找最低亮度等级以代表全局性的暗基线。 - **应用修正因子**:基于之前得到的信息创建一个映射表用于后续正常拍摄期间实时减去相应的偏移从而使得实际场景反射光线强度能够被更准确地反映出来。 #### 实现方法举例 下面给出了一种简单的Python伪代码表示如何执行基本形式的电平校正操作: ```python import numpy as np def apply_black_level_correction(image, dark_frame): """ 对输入image应用电平校正 参数: image (numpy.ndarray): 输入待校正的原始图像数组. dark_frame (numpy.ndarray): 预先采集好的全条件下参考帧. 返回: corrected_image (numpy.ndarray): 经过电平校正后的图像. """ # 计算并应用偏移差分 offset = np.mean(dark_frame) corrected_image = image.astype(float) - offset # 确保不会出现负数像素值 corrected_image[corrected_image < 0] = 0 return corrected_image.clip(0, 255).astype(np.uint8) ``` 该函数接收两个参数一个是需要处理的目标图片另一个则是事先准备完毕的标准暗场样本(`dark_frame`)。它会首先估计整体偏移然后逐个元素相减最后再做一次裁剪确保结果落在合理范围内。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大凝的IC进阶之路

一起学习一起进步

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值