ISP Pipeline 黑电平 以及 线性化

camera pipeline基本如下:
ISP Pipeline 黑电平 以及 线性化_第1张图片

黑电平(OB)

black level产生原因:

产生black level原因首先与camera工作原理有关,需要保留电压值很小的暗部细节。camera sensor工作原理:先感应到光信号,接着将光信号转换为模拟信号,再通过A/D转换成数字信号。我们以10bit数据为例,转换成的数字信号则在0~1023的范围内,然而A/D转换器的精度无法将电压值很小的一部分转换出来,从而导致暗态细节损失。这时需人为地给输出信号加一个固定的偏移量,使整体信号值放大,有效保留了电压值很小的暗部细节,当然也会损失部分亮度细节。这样操作是因为我们拍照时较注重暗态拍照,保留暗部细节牺牲部分动态范围的操作是被大众比较认可的。
产生black level原因也与camera sensor硬件电路有关,sensor的电路本身会存在暗电流。 暗电流主要产生在CMOS芯片通过光电二极管将光信号转化成模拟信号的过程中,光电二极管受到温度,电压稳定性等因素的干扰,导致全黑状态下输出的电平并不一定稳定为0,而信号的不稳定会导致部分图像的偏色。人为将全黑状态的数值固定钳制在黑电平这个值,很大程度上是为了保证信号的稳定性,以保证全图图像效果表现一致。black level的偏移量及线性化图如下图所示。
ISP Pipeline 黑电平 以及 线性化_第2张图片

为什么我们要进行black level校正呢?

因为暗电流的存在,我们所得到的图像不是真实的经过光电转换后的信号,那我们为了得到真实的图片,我们需要减去black level值。

black level现象如何去处理呢?

目前sensor厂大多采用在sensor上会留下一条由金属遮断的传感器,完全不感光,用这部分的传感器得到“optically black”,叫做光学的黑,但这部分传感器存在于sensor的局部,所以并不能很好地代替sensor本身的black level。如下图所示sensor上有一部分金属遮断的地方。
ISP Pipeline 黑电平 以及 线性化_第3张图片

black level 扣多扣少会有什么影响呢?


从上图可看出,扣多了容易发黑发绿,扣少了,容易发亮发红。

什么是线性化?

一句话总结:对sensor输出的真实曲线进行线性化拟合,图中带箭头的粗线为线性化后的曲线,因sensor的R, Gr, Gb, B四个通道响应不一样,所以需分通道进行线性化拟合,然后使用lut进行查表输出。
ISP Pipeline 黑电平 以及 线性化_第4张图片

线性化曲线拟合如下思路:

linearization:


假设OB = 857(14bit)
tmp = [(2^14 - 1) - OB]/8 = 1,940.75
<r_lut_p>
r_lut_p[0] = 0 * tmp + OB
r_lut_p[1] = 1 * tmp + OB
	...
r_lut_p[7] = 7 * tmp + OB


<r_lut_base>
r_lut_base[0] = 0
r_lut_base[1] = 0 * tmp
r_lut_base[2] = 1 * tmp
	...
r_lut_base[8] = 7 * tmp


example:
    <r_lut_p>857 2798 4739 6679 8620 10561 12502 14442</r_lut_p>
    
    <r_lut_base>0 0 1941 3882 5822 7763 9704 11645 13585</r_lut_b

你可能感兴趣的:(c语言,isp,图像处理,光学成像)