Computational Photography(计算摄像学)——相机成像流程
本篇主要是CMU计算摄像学的课程lecture2笔记。(http://graphics.cs.cmu.edu/courses/15-463/)
本篇主要学习了一下几个方面:
1.成像传感器
2.模拟前端
3.颜色
4.相机内置的图像处理系统
相机摄像主要流程
从被拍摄景物上传来的入射光依次穿过相机的光学器件,颜色滤镜后到达传感器,经过模拟前端转换为数字信号,最后通过相机内的图像处理系统转换为最终的RGB格式图像并进行存储。
成像传感器
当快门打开后,传感器的每个光电二极管,将入射光子转换成电子,在光电二极管不饱和的情况下,将电子很好地储存在它的电势中,直到相机快门关闭。然后,模拟前端逐行读出光电二极管的阱,并将其转换成模拟信号,对这些模拟信号应用(可能是不均匀的)增益,将它们转换成数字信号,校正非线性,最后返回图像。
基础的成像传感器包括显微镜头、颜色滤镜、光电二极管、电子势井。
两类常用的传感器类型:CCD和CMOS
CCD:一个或少数几个读出节点统一放大
CMOS:每个像素由各自的信号放大器放大
早期高端相机采用CCD,而消费级相机采用CMOS。近年来,CMOS传感器经过改进,已经具有与CCD相同水平的性能,所以大部分相机(消费级和工业级)都采用了CMOS。
模拟前端
相机中的模拟前端主要由模拟放大器、模数转换器以及LUT组成,其中analog amplifier将模拟值进行增益gain的数值放大(ISO设置),再经过ADC将模拟信号转换为数字信号(输出的值为10-16bits),最后LUT可以在一定的范围内修正传感器响应的非线性,修复一些损坏的像素。
LUT对Vignetting(渐晕)现象的进行了一定程度的修正,vignetting是指图像中出现暗角的现象,原因离中心很远的像素接受的光更少。
vignetting主要由以下几个原因导致:
机械因素:被遮光罩、过滤器和其他物体阻挡的光线;镜头因素:光线被镜头挡住了;自然因素:辐射定律(“余弦第四衰减”);像素因素:光电二极管的角度灵敏度(直射强度大于斜射)。
LUT的非线性修正结果:
颜色
颜色的定义
颜色是人类感知的产物,颜色不是光的客观物理性质(电磁辐射)。相反,光的特征是它的波长。我们所谓的“颜色”是指我们主观地感知这些波长中一个非常小的范围(400nm~700nm的可见光)。
主观感知的颜色与光谱功率分布(SPD)和光谱灵敏度函数(SSF)密切相关。
光谱功率分布(Spectral Power Distribution ,SPD)
各种光源包含多种不同波长的光,每种波长的功率不一样,可以将光源所有的波长对应的功率谱对应描述成图,即是光谱功率分布(SPD)。下图展示了不同的光源的功率谱分布。
光谱灵敏度函数(Spectral Sensitivity Function ,SSF)
任何光传感器(数字的或非数字的)对不同波长都有不同的灵敏度,将传感器的光谱灵敏度函数定义为 f ( λ ) f(\lambda) f(λ),当光谱功率分布(PSD) Φ ( λ ) \Phi(\lambda) Φ(λ)已知时,传感器对入射光的响应是一个累加了所有光波响应的单一的值,我们可以用一个积分表达式来描述:
人眼的光谱灵敏度函数
人眼有三种不同的视锥细胞构成光传感器,最终的视觉响应是由这三种细胞共同感知。
颜色滤波阵列(Color filter arrays ,CFA)
在数字相机中,生厂商通常使用颜色滤镜来模拟人类的视锥细胞,从而使得成像图片带有颜色信息。当颜色滤镜的排列固定,即为颜色滤波阵列。
设计过程中需要考虑两个问题:
1.如何设计滤光镜对不同光线的敏感度;
2.如何设计不同的颜色滤光镜的最佳空间排列。
常用的拜耳模式颜色滤波阵列是2×2的四个格子重复形成的,这四个格子有1个R,1个B,2个G,这是因为人眼视觉对于绿色比较敏感的缘故。目前颜色滤波有很多其他的排列组合的模式。
除了通过CFA来获得颜色信息,还有其他的实现途径:
经过颜色滤波阵列(CFA)到达传感器的光线,经过模拟前端放大和模数转换器的转换的图像称为RAW图像。此时的RAW图像没有显示出颜色,而显示出像马赛克一样的方块,图像中的噪声也很明显。
接下来是通过相机内的图像处理系统对图像进行一系列处理,使得最终的图像为清晰的RGB形式。
相机内置的图像处理系统
摄像机中的ISP(image signal processor)模块采用一系列的图像处理操作将RAW图像转换为最终的RGB图像。
白平衡(White balancing)
人类的视觉系统具有颜色适应性:我们可以在不同的光源下正确地感知白色(和其他颜色),相机却没有这样的感知能力。白平衡是指去除颜色强制转换的过程,使我们认为是白色的颜色在最终图像中呈现为白色。
现在的相机有大量的预置:你可以选择在哪种光线下拍照,并应用适当的白色平衡。
手动白平衡:根据光线选择相机预置,在照片中手动选择颜色中立的物体,并使用它正常化。
自动白平衡: 1.灰色世界假设:假设场景的平均颜色为灰色;2.白色世界假设:假设场景中最亮的物体为白色;3.复杂的基于直方图的算法(大多数现代相机都是这么做的)。
-
灰色世界假设(Gray World Assumption)
要点:假设场景的平均颜色为灰色;
分别计算每个通道的均值;
将每个通道按其平均值标准化;
用绿色通道平均值进行归一化。
-
白世界假设(While World Assumption)
要点:假设场景中最亮的物体为白色;
分别计算每个通道的最大值;
将每个通道按其最大值标准化;
用绿色通道最大值进行归一化。
去马赛克(Demosaicing)
从传感器输出的马赛克图像恢复出完整的RGB图像
基本的实现途径为插值法:
双线性插值(需要4个邻域值);
双三次插值(需要更多的邻域值,可能会过度模糊);
边缘感知插补。
这里具体展示了需要四个邻域值的双线性插值法。
去噪(Denoising)
弱光环境下拍摄的图像在未经去噪前包含大量的噪声,其中噪声的来源是多样的,主要有
- 散粒噪声:光子到达传感器的数量是一个随机过程,符合泊松分布,
- 暗噪声:传感器发热导致逸出电子从而产生的噪声,温度越高,噪声越大
- 读取噪声:由于读取电路引起的噪声(A/D转换)
相机中的ISP的处理算法需要考虑运行的速度以及能耗,一般采用较为简单快捷的算法。
色调重建(Tone reproduction)
色调重建是我们通常所说的gamma校正。
传感器响应是线性的,人眼对输入光的响应也是线性,但是,人的感觉是非线性的,表现在对暗光更加敏感,这种响应接近于Gamma函数。同时,传统CRT显示设备对于输入图像是非线性的,其对输入的敏感性和人眼的特性恰好相反。这两种响应的共同作用,会使得我们大脑感知到的图像很暗。
一般来说,会在相机中加入gamma校正来抵消掉显示设备的响应曲线,具体的gamma曲线取值依赖于拍摄的相机,数学表现 L 1 / γ L^{1/\gamma} L1/γ, γ \gamma γ一般取值为2.2。
gamma校正的操作不在显示之前,而是在压缩编码之前,原因是压缩过程丢失信息,响应曲线发生了改变。
RAW图像数据
必要性
一些算法的假设是在线性图像上,例如photometric stereo, shape from shading, image-based relighting, illumination estimation,即任何与光传输和反向渲染相关的算法。如果这类算法应用在经过压缩的非线性图像上,将会产生无效的结果。
打开RAW
dcraw-用于解析与相机相关的原始文件的工具(文件格式的规范也是保密的)
性**
一些算法的假设是在线性图像上,例如photometric stereo, shape from shading, image-based relighting, illumination estimation,即任何与光传输和反向渲染相关的算法。如果这类算法应用在经过压缩的非线性图像上,将会产生无效的结果。
打开RAW
dcraw-用于解析与相机相关的原始文件的工具(文件格式的规范也是保密的)
adobe dng -最近(-ish)引入了试图标准化原始文件处理的文件格式