ISP Pipeline
ISP(Image Signal Process, 图像信号处理器,又称成像引擎)是手机拍照/摄像流程中的核心单元之一。
Sensor
常用的相机Sensor有COMS和CCD两种,COMS一般用于手机,CCD用于单反。CCD的一个主要优点在于所有像素共享同一个电荷-电压转换器,所以像素一致性非常好。相比之下CMOS每个像素都有自己专用的电荷-电压转换器,一致性很不容易控制。 CMOS sensor 的典型曝光方式称为卷帘曝光(rolling shutter),与rolling shutter 做对比的是CCD sensor 采用的全局快门 (global shutter),其特点是sensor 上所有像素是在同一瞬间全部开始曝光的,因此sensor 采集的是物体在同一时间点的画面。下图是两种曝光方式的对比。
Raw data
CMOS sensor的输出是Bayer mosaic格式的Raw数据。根据硬件的不同,分为bayer,quad bayer和hex bayer。 RAW存储的是图片的原始数据,即各个像素点的亮度,本身并不包含色彩信息。RAW的特点是后期空间大,可以保留很多的暗部和亮度细节,但缺点是通常所需的存储空间大,大约每12mp需要24MB的存储空间(14bit)。
使用ISP处理图像raw数据时有两种常用的数据接入方式,即
- 在线模式,online mode,sensor产生的实时数据和时序控制信号以行为单位送入ISP进行处理。常见于平台的硬件ISP出图。
- 离线模式,offline mode,待处理的图像以帧为单位存储于系统内存,需要处理时由一个控制逻辑通过DMA从内存中读取数据,并添加模拟sensor行为的时序控制信号,然后送给ISP进行处理。常做为自研算法的输入
Quad
Quad Bayer排列仍然基于传统的Bayer排列,只是在每个颜色的滤镜下覆盖了四个像素。起初,这种排列是因为像素尺寸太小,滤镜工艺跟不上,只能采用这种方式。
该技术主要用于手机摄像头,根据环境光线自动切换输出模式:
如果对这种排列合理利用,可以将相邻4个同色滤光片的像素中,主对角线的像素采用相同的一个ISO或曝光时间,次对角线采用另一个,从而较为简单地做到单帧HDR合成。
这种排列大量应用在手机上的原因是它既可以提供高分辨率照片为手机提供卖点,又可以利用整个传感器读出低分辨率图像,便于手机进行多帧合成提高画质(并不是因为手机厂家所声称的因为单像素尺寸变得更大)。类似的还有可以九合一的Nano-Cell(Samsung)和十六合一的Hex-Bayer(SONY)。
Hex
去噪
在数码照相机和摄影机产品中,总的规律是光圈越小、(电子)快门越短、ISO越高,图像噪声就越大。图像中的噪声有多种来源,根据其对信号的影响和分布形式,一般将其分类两大类,一个是跟信号相关符合泊松分布的噪声,另一类是跟信号无关的高斯噪声。所以对噪声建模的时候一般认为噪声是一个泊松高斯噪声。
降噪既可以在空域(spatial domain)上实现,也可以在频域(frequency domain)上实现,比较有常用频域方法有傅里叶变换,离散余弦变换(DCT),小波变换,多尺度几何分析等。
传统的RAW域降噪基本都需要将RAW图像按照颜色分成四个通道(R,Gr,Gb,B),然后在各个通道上分别应用滤波器进行平滑。随着人工智能技术的发展,近些年来还涌现了一批基于深度学习技术实现的降噪算法。
Demosaic
对RAW数据进行插值的过程叫做Bayer demosaicking,其原理如下图所示:
Demosaic是RAW域处理的最后一步,将像素从RAW域变换到RGB域进行下一阶段的处理。Demosaic 算法的主要难点在于,RAW域的任何一个像点(photosite)只包含一个真实的采样值,而构成像素(R,G,B)的其它两个值需要从周围像点中预测得到。既然是预测,就一定会发生预测不准的情况,这是不可避免的,而预测不准会带来多种负面影响,包括拉链效应(zipper artifacts),边缘模糊,颜色误差等。
所以Demosaic 算法的主要挑战就是尽量提高算法的准确性,减少图像边缘损失和颜色误差。Demosaic有两种方式,一种是传统的插值算法,另一种是AI模型。
SR
超级分辨率(Super-Resolution,SR)是通过软件算法对现有图像进行放大并提升清晰度的一种技术,适用于低像素原始文件。通过深度学习技术扩大图像像素,抑制画质下降,适用于特写、远景等需要细节放大的场景。
HDR
高动态High Dynamic Range (HDR),与之等价的一个术语是宽动态,即Wide Dynamic Range。单从语法的角度看,WDR比HDR在语法上更严谨一些,因为形容一个范围可以说“宽窄”但很少说"高矮",除此之外其实并无技术层面的区别。
从另一个角度看,当用水平的图表比较动态范围时,用WDR术语是最恰当的,如下图。
不同曝光EV
对于同一环境,当快门速度、光圈的平方、ISO三者乘积相同时,画面的亮度相同,且这三者乘积翻倍时,称为“增加一档曝光”,即+1EV。例如同一环境中,乘积为4相对1为+2EV。短曝光图像偏暗,保留更多的亮区细节,长曝光图像偏亮,暗区细节更丰富。

在拍摄RAW时,若提亮的亮度对应的ISO不会跨越基准ISO,则几乎仅有进光量即快门速度与光圈的平方影响成片画质。例如对于基准ISO为100(绝大多数相机的基准ISO之一为100)和640的相机,快门1s,光圈F/2.8,使用ISO640和6400时,暗部细节基本是相同的,但640能显著保留更多高光细节。虽然使用更高的ISO时噪声会略小一些,同时因为14bit的限制,在ISO差距过大时,提亮与在拍摄时直接使用高ISO的画质有可见差距,但相比对高光部分的损失则微乎其微。因此在必然存在过曝部分的高光的暗光环境下,例如有路灯的夜景中拍摄RAW时,在光圈和快门都开到可接受的最大值后,同档位的ISO越低越好。而如果画面中不会出现过曝的部分,则拉高ISO至刚好不过曝即可。
多帧HDR
时域HDR
时域HDR是多帧HDR,是最普通的实现HDR的方法。优点是对CIS要求不高,所有CIS都可以实现时域HDR;缺点是若被摄物体移动较大,则会产生叠影。
当遇到明暗差距很大的场景时,手机的CIS面积小,仅依靠普通的单次曝光无法提供足够的动态范围,即要么高光过曝,要么暗部难以看清。因此拍摄多张照片,一部分提高曝光使照片的暗部可以看清,另一部分压低曝光使照片亮部可以看清,该过程称为包围曝光。将这样的照片叠加,即可得到暗部亮部均清晰的照片,从而变相提高动态范围。手机的夜景模式,就是一种较为暴力的HDR合成。
单帧HDR
BME-HDR(Binning Multiplexed Exposure)
这种HDR方式将CIS上每两行为一组(因为Bayer排列的RGGB需要占用两行),分别进行长、短曝光。长曝光获得暗部细节,短曝光获得亮部细节,将相邻两组的图像合并即可获得更高的动态范围。缺点很显著,就是其分辨率会减半。
SME-HDR(Spatially Multiplexed Exposure)
这种方式在4x4的Bayer阵列中,对不同的像素采用不同的曝光,最终合成HDR图像。大约损失20%的图像质量。总体上还挺复杂的。

QBC-HDR(Quad Bayer Coding HDR)
这种方式与上一种类似,但结合了Quad Bayer排列使用,在4个同颜色滤光片下,两对角线的像素分别采用长短曝光,从而合成HDR图像。
双增益输出(Dual Gain Output,DGO)
这种方式需要结合双电路增益(双原生ISO)技术,两路不同原生ISO的图像同时输出并融合,从而提升图像的信噪比。这种方式主要应用于摄像机上,例如ARRI和Canon的部分摄像机等等。
DGO对于动态范围提升的幅度虽然不如前几种大,但仍然非常显著,并且对画质不会有什么负面的影响,除了功耗和成本略高一些就没什么缺点了。
双原生ISO技术(Dual Gain Amplifier)
双原生ISO技术是指:电路中有两条电路,连接增益大小不同的PGA。
事实上,更准确地讲,该技术应称为双电路增益。
色调映射 Tone Mapping
当HDR模块完成多帧合成(frame stitch)后,接下来就需要对数据位宽进行压缩以节约后续步骤的计算资源。比较合理的做法是采取逐级压缩策略,比如在HDR模块先压缩到12位精度,经过CCM、Gamma 等颜色处理后进一步压缩到10位精度,经过CSC模块后进行最后一次压缩得到最终的8位精度输出。从16/20位精度压缩到12位精度的过程称为色调映射,这一步骤的主要任务是压缩图像的动态范围,将HDR图像映射到LDR图像,并尽量保证图像细节不损失。
色调映射的方法大致分为两类 ,即全局算法(Global Tone Mapping,GTM)和局部算法(Local Tone Mapping,LTM)。
GTM
全局算法可以理解为每幅图像有一个颜色映射表,GTM算法通过查表的方法把一个输入颜色映射为一个输出颜色。有些算法对所有图像都使用固定的表,有些算法则是针对每一帧图像创建不同的表。
GTM算法特点 :
1. 任意相同颜色的像素点,在映射后,还是相同的颜色;
2.全局算法一般较简单,速度快;
3.全局算法的性能一般劣于局部方法;
存在算法 : 直方图均衡化、Gamma、对数校正、直方图规定化、分段灰度变换
LTM
局部算法借鉴了人眼的知觉原理,在映射一个像素时,不仅考虑该像素的绝对值,还会考虑该像素周围区域的平均亮度值,将对比度大的像素映射为高亮,对比度小的像素映射为低亮,往往可以取得更好的效果。
LTM算法特点 :
1.映射前颜色相同的像素点,映射后颜色可能不同
2.局部算法一般较全局方法更复杂,速度相对较慢;
3.局部算法的性能一般优于全局方法;
4.会出现光晕等现象
镜头阴影校正 LSC
镜头阴影有两种表现形式,分别是
- Luma shading,又称vignetting,指由于镜头通光量从中心向边缘逐渐衰减导致画面边缘亮度变暗的现象。
- Chroma shading,指由于镜头对不同波长的光线折射率不同引起焦平面位置分离导致图像出现伪彩的现象。
Vignetting
如上图所示,由于镜头中都会存在多处光阑,当入射光线偏离光轴角度较大时,部分光线就会被光阑遮挡而不能参与成像,因此越靠近sensor边缘的像素接收到的曝光量就越低。
Chroma shading
镜头对不同波长的光线折射率不同会导致色差问题,即不同波长的焦点在空间上不重合,导致焦平面分裂为三个不完全重合的曲面,这会破坏图像的白平衡,使图像出现伪彩,如下图所示。根据sensor所处的前后位置不同,伪彩可能偏红也可能偏蓝。
Tuning
对相机ISP参数的调试,或者也叫图像质量调试。图像质量,也称 Picture Quality (PQ), 是camera产品中最受关注的技术参数。图像质量是一个系统工程,涉及方方面面的技术和参数。
3DLUT
输入(R,G,B)信号,经过3D查找表变换之后,变成(R1,G1,B1)。(R1,G1,B1)与(R,G,B)相比存在细微的不同,表现出来的效果或者在客观上更加正确(补偿器件缺陷),或者更加符合人的主观审美。
Acutance 锐度
锐度常用于描述边界处图像信息过渡的快慢。高反差图像过渡速度非常快,可以形成非常明确的边缘,而低反差图像存在一定的过渡缓冲,表现在成像上就是模糊的边缘。