本文来自ICCV 2019的tutorial:“Understanding color & the in-camera image processing pipeline for computer vision”,引子请见这里。
算不上翻译,演绎了不少,希望大家能够结合原pdf甄别地看,欢迎提出疑问。
前一篇介绍了白平衡和其他色彩空间相关的知识,这里开始就要正式介绍相机内图像的处理流程了。
2 相机图像处理流程
我们终于来到了正题
在开始前先介绍一个概念,集成信号处理器(Integrated signal processor, ISP),指的是专门用来处理感光件信号并生成最终图像的硬件,通常会作为一个模块集成到片上系统。接下来将要介绍的各种处理都是在ISP上进行的。
接下来看一个典型的图像流程:
光线进入镜头,到达【带有RGB滤光阵列的传感器】,得到最原始的电信号。这个信号经过【ISO增益和原始图像处理】【RGB去马赛克】和【降噪】,就会得到raw格式的图片,对它接着进行【白平衡以及色彩空间转换】和【色彩处理】,并【映射到sRGB输出】,这时图片已经呼之欲出,只要【JPEG压缩】并【保存成文件】,储存卡里就会增加一张JPEG格式的照片了。
接下来将会以上面提到的顺序进行介绍,但需要注意的是,这里是一个一般意义上的处理流程,不同的ISP可能会有不一样的处理流程,并且往往会更加复杂,但一定会包含上面的这些步骤(可能是以不同的顺序和组合)。
【带有RGB滤光阵列的传感器】
CMOS传感器是相机中用于感受光的部分,几乎所有的消费级相机的传感器都是基于CMOS技术,因此CCD类型的传感器这里就不介绍了。
大家应该都见过类似这样的传感器尺寸对比图,传感器越大,每个像素上接收到的光就越多,从而相对噪声就越小。智能手机的传感器往往是最小的。
相机传感器其实就是我们理想中的那个能够衡量光线强弱的装置,取同样长的时间,如果到达传感器某个像素点的光亮度变成两倍,那么该点的数值也会变成两倍。但要注意的是,传感器只能测量光的强弱,并不能区分颜色,那么我们的彩色是哪里来的呢?这就需要将不同颜色的滤镜和传感器结合起来,实现这一过程的技术叫做拜尔阵列(“Bayer” pattern)。
于是我们就得到了具有色彩阵列(color filter array, CFA)的相机传感器。通过这样的设计,传感器得到的数值就可以用来衡量不同通道信号的强弱了。不同的相机有着各自的传感器阵列,不同阵列的滤光色就构成了相机色彩空间(raw RGB)的三原色,因此相机的raw RGB空间不是一个通用的色彩空间。下面两张图展示了不同相机raw RGB空间的原色以及raw图片的色差。