原文:https://mp.weixin.qq.com/s/UanwwJAPuJGXZCiuZ-QoSQ
目录
引言
凡是和图像领域工作的人,都会经常听到ISP(Image Signal Process,图像信号处理),知道ISP对图像质量非常重要。比如华为和小米竞争手机拍照和录像效果,主要的竞争领域就是ISP;做AI(Artificial Intelligence,人工智能)的人也知道,如果ISP不给力,后续的AI处理效果会受到影响。
ISP在图像输入流中的位置如下(图中的成像引擎):
有时,我们想了解一下ISP里面到底有什么,会拿到一个巨大图,伴随一个名词列表,搞不清重点,搞不清前因后果。
再请教几个图像处理的教授,他会说,你说的都是工程问题,我现在在研究更深奥的课题,比如三维重建,语义分割,人体运动捕捉等算法。What?我就是为了这些AI算法,遇到了ISP的瓶颈。
为什么相机的CMOS传感器(Sensor)输出的原始数据(raw data)不能做好一点,不要让ISP做这么复杂?
现在的ISP通常做了哪些工作,每个工作的原因是什么?处理的原理是什么?哪些处理对于图像效果最明显?哪些处理比较成熟?
接下来我们就来回答。
Sensor输出的原始数据和人类预期的图像有巨大差异
需要ISP模块的原因有2个方面,一个是镜头和Sensor的物理缺陷(不完美),第二是拍摄的光线条件多样,镜头和Sensor需要根据环境做适应(就像人眼要通过瞳孔缩放,适应环境明暗一样)。
由于这2个方面原因,如果没有ISP模块,现在无法让我们生成人类预期的图片质量。如下图,是几幅油画,这就是人类期望的调整ISP成像效果的方向。
梦幻田园│法国画家Jean Marc Janiaczyk油画作品
跨越阿尔卑斯山圣伯纳隘口的拿破仑│法国画家雅克-路易·大卫 (1801-1805年)
抱陶女│画家谢楚余油画作品(1997年)
再来一张Sensor输出的Raw Data的效果,可以看到效果很差(注意是正常室内光线下):
Sensor的问题以及ISP的处理原理
镜头和Sensor的物理缺陷(不完美)导致以下问题,需要ISP模块去补偿。
问题一:Sensor有漏电流。
由于Sensor漏电流存在,刚把镜头放入一个全黑的环境,Sensor输出的原始数据不为0;而我们希望全黑时原始数据为0.
处理模块名称:BLC(BlackLevel Correction)------黑电平校正
处理原理:我们需要找到一个矫正值,所有像素值都减去这个值,就得到一个矫正成功的结果。一般情况下,sensor的传感器周边,还有一小部分区域是有感光器的,但是没有光透射进来。可以把这部分的传感器的信号作为矫正值,从可感光部分的信号中减去,就可获得校正后信号。
处理流程:在运行时调整,不需要依赖人工矫正。
处理效果:处理方案成熟。
左边未校验,右边是矫正后的图像
问题二:通过镜头到达Sensor中间的光多于到达Sensor的边缘的光,即光学系统中的渐晕。
这是由于随着视场角慢慢增大,能够通过照相机镜头的斜光束将慢慢减少。导致Senor捕获的图像中间亮度高,周围边缘亮度低。
处理模块名称:LSC(Lens Shade Correction)------镜头阴影校正
处理原理:首先检测出图像中间亮度比较均匀的部分,认为这部分不需要矫正,然后以此为中心,计算出周围区域需要补偿的因子(增益)。实际项目中,可以把镜头对准白色物体,检查图像四周是否有暗角。
处理流程: