BLC,即 Black Level Correction。cmos 在传出黑色图像的时候,由于自身结构的原因,黑色画面传出的像素值并不是 0,为了达到最大的对比度,我们需要通过算法将这个黑色帧的值回归到 0 的值。
我们可以将它想象成照片的“基准线”。每张照片都有自己的黑色基准,而BLC 的任务就是确保这个基准是稳定的,这样我们拍摄出来的照片在暗部细节上才会一致。BLC 模块小,但是魔力巨大。
这是我用 matlab 产生的一张黑帧图,看着很黑,其实它是一张 5-15 随机数组成。通常黑帧值的大小与温度以及增益值相关,不过通常情况下采用减去一个固定值的方式来平衡黑帧没有归零的现象。
运算方式:
1,分离出四个通道。
2,求四个通道的均值。
3,整图减去相应通道的均值。
4,拉升到原来的范围。
当然,这里必须提到,我说的是理想情况下,有些 sensor 非常不理想。
比如黑电平分布非常不均匀,左侧值大右侧值小,或者上边的值大下边的值小等情况,还有就是黑电平与增益,曝光时间都相关了。
这个时候如果想要更理想的图像效果,就需要改进算法。此处我的重点是算法的初步了解和 FPGA 实现,更复杂的算法就不作为开源部分了。
此时需要收敛的,不仅仅是 BLC ,还有 DPC 一起了,目前还是将项目约束到 600M,呈现的效果如下:
目前看到最差的十条路径中,来自于 VIO ,所以算法代码似乎还是有一定的裕量可以争取一下。也就是可以跑到 600M 以上了。
最后别忘了仿真,将FPGA输出的数据输出到txt,再在matlab中将txt转换成image。此处的方法就是和上一节的DPC雷同,就不做重复解释。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !