文章目录
- 概述
- 什么是ISP
- ISP实现方案
- ISP Pipeline
- ISP输入
- 行缓冲
- 数据对齐
- 难理解的关键算法
- WDR
- 图像压缩
- 色调映射 Tone Mapping
- RAW域处理
- 镜头阴影校正 LSC
- 降噪:空域滤波器 Spatial Filter
- Bayer Demosaic
概述
什么是ISP
主流的CMOS和CCD sensor基本都是输出Bayer Mosaic格式的RAW数据,需要转换为RGB或YUV格式才能被主流的图像处理软件支持。对于Camera一般还要进一步转换为JPEG格式方便存储。一般情况下,预览YUV格式,拍照JPEG格式。ISP(Image Signal Processing),广义的ISP包含了JPEG和H.264/H.265图像压缩处理,狭义的ISP仅包括RAW格式转RGB或YUV。
ISP实现方案
摄像头类型:
- RAW摄像头:不带isp功能
- YUV摄像头:带isp功能
ISP一般为硬件实现方案,即作为独立的芯片或集成到摄像头中。由于涉及大量图像的处理,独立的芯片具有更好的实时性。集成到摄像头中的ISP模块一般仅支持基础的ISP功能。
ISP Pipeline
典型pipeline如下,由几百MHz的时钟驱动:
更多更全术语欢迎查阅我的博客:
链接: Camera HAL/ISP 专业术语大全
两次颜色空间转换:
- Demosaic: RAW to RGB
- CSC: RGB to YUV
ISP输入
ISP的输入基本都是Bayer mosaic格式的RAW数据,Bayer格式图片是伊士曼·柯达公司科学家Bryce Bayer(1929 –2012)发明的,拜耳阵列被广泛运用与数字图像处理领域。
常用的Bayer格式由GBRG、GRBG、RGGB等,常见精度由8/10/12/14bit等。
另外,很多相机、摄像机产品都会在镜头光路中插入一个红外截止滤光片,其作用是允许波长小于截止频率的光进入系统,而阻止波长大于截止频率的光。常用的截止频率有630nm和650nm两种,它们允许不同程度的红光进入成像系统,因此会对白平衡和颜色校正算法产生影响,所以ISP的参数配置必须要与实际选用的截止频率相配置。
数据接入方式:
- 在线模式,online mode,sensor产生的实时数据和时序控制信号以行为单位送入ISP进行处理
- 离线模式,offline mode,待处理的图像以帧为单位存储于系统内存,需要处理时由一个控制逻辑通过DMA从内存中读取数据,并添加模拟sensor行为的时序控制信号,然后送给ISP进行处理。
在线模式优点:低延时(low latency),数据走专用硬件通路,不经内存总线,节省内存带宽。
在线模式一帧图像的第一个像素数据流出sensor后马上就进入ISP流水线开始处理,而在离线模式下,ISP通常需要等到一帧图像的最后一个像素数据到齐之后才开始启动处理。
举个典型的例子:假设一个1080p的sensor,主频(master clock frequency)是76MHz,即一个clock cycle是13.15ns。假设该sensor的配置是每行2000个cycle,这是一个比较典型的配置,其中包含了1920个有效输出和80个horizontal blanking,则sensor每输出一行数据将消耗13.15ns*2000=26.3us,而输出全部1080行有效像素则需要26.3us*1080=28.4ms。而一个典型的 ISP 处理完这帧1080p图像需要多久呢? 只需要3ms!也就是说,ISP只有在26ms之后启动处理才不至于发生读指针越过写指针的情况。
某些海思系列的ISP芯片支持一种特殊的“低延迟”离线模式,即一帧图像的第X行数据到齐之后即启动ISP进行处理,而不必等到最后一个像素到齐。增加了一个硬件机制可以确保读指针不会越过写指针,这样用户就可以选择更早地开始启动ISP处理,当ISP读指针追上sensor写指针时,硬件自动插入延时周期令ISP空转等待,以保证数据完整性。
行缓冲
不论是在线模式还是离线模式,ISP处理图像都是以行为单位的,所以ISP模块都会设计一个line buffer可以缓存若干行图像。通常这个line buffer的大小就决定了这个ISP所支持的最大分辨率。举例来说,如果一个ISP的line buffer可以容纳每行2048个像素,则它无法支持超过2k/1080p的分辨率规格。
数据对齐
ISP、CODEC等硬件单元在处理图像时通常都会有粒度(granularity)要求,即必须将8/16/32/64/128个像素作为一组来处理,这样就可以通过硬件并行化来提高吞吐率。这个需求称为ISP的数据对齐(alignment)需求,多数sensor都支持一个linesize属性,以保证sensor输出的每行数据的宽度符合ISP的对齐要求。与linesize等价的术语还有stride,pitch,均表示每行数据所占用的实际存储空间。当linesize与图像的实际分辨率不相等时,sensor会用一个数据填充对齐部分,这个数据可以是固定值0(zero-padding),也可以是本行最后一个像素的值(copy-padding)。
难理解的关键算法
ISP Pipeline中一些算法看名知义,不做过多解释。但有一些算法需要特殊说明,非专业人士一般不懂。学会了你就是专家。
WDR
宽动态范围,也可以叫HDR。
由于材料和工艺限制,普通sensor一般可以提供50~70dB的动态范围,一般由ISP进行长短曝光图像融合(frame stitching或叫WDR fusion)。
如果希望camera输出帧率保持30fps不变,则两帧融合WDR需要sensor输出60fps,而三帧融合WDR需要sensor输出90fps,四帧融合WDR需要sensor输出120fps。这也是为什么主流产品以两帧合成WDR为主的原因。
为避免motion artifacts,采用Staggered WDR技术,即 sensor 不再以帧为单位输出,而是以行位单位输出,则可以缓解运动伪影问题。如下图所示,sensor 先输出一行长曝光像素,再输出一行短曝光像素,然后开始输出下一行。
SONY支持WDR的方式称为DOL(Digital OverLap)技术,最多支持三帧曝光。与Staggered WDR技术不同点在于,它的输出格式种使用了一些特别的标志数据,所以需要专用的逻辑电路进行解析。它支持两种像素输出方式,方式1是使用1个stream输出,每行由长曝光+短曝光行交替,方式2是使用两个stream并行输出,如下图所示。
图像压缩
为了减轻传输带宽和存储的压力,支持4K 以上的芯片都会在DMA上设计一个压缩算法。当DMA向内存中写入数据时,实际进入内存的是压缩后的数据。当DMA从内存中读取数据时,用户得到的是解压缩后的数据。
Arm 出售的图像压缩技术叫AFBC,即Arm Frame Buffer Compression,这是一种基于脉冲编码调制(Pulse Code Modulation,PCM) 技术实现的无损压缩技术,典型情况下可以实现50% 左右的压缩率,可以节省存储空间和传输带宽。有情报显示,华为在其手机芯片中实现了基于小波变换的有损压缩技术,压缩效率应该更高。
色调映射 Tone Mapping
当WDR模块完成多帧合成(frame stitch)后,接下来就需要对数据位宽进行压缩以节约后续步骤的计算资源。比较合理的做法是采取逐级压缩策略,比如在WDR模块先压缩到12位精度,经过CCM、Gamma 等颜色处理后进一步压缩到10位精度,经过CSC模块后进行最后一次压缩得到最终的8位精度输出。
从16/20位精度压缩到12位精度的过程称为色调映射,这一步骤的主要任务是压缩图像的动态范围,将HDR图像映射到LDR图像,并尽量保证图像细节不损失。
分为全局算法(Global Tone Mapping,GTM)和局部算法(Local Tone Mapping,LTM)。
RAW域处理
镜头阴影校正 LSC
镜头阴影有两种表现形式,分别是
- Luma shading,又称vignetting,指由于镜头通光量从中心向边缘逐渐衰减导致画面边缘亮度变暗的现象。
- Chroma shading,指由于镜头对不同波长的光线折射率不同引起焦平面位置分离导致图像出现伪彩的现象。
降噪:空域滤波器 Spatial Filter
对图像降噪的主要方法是使用空域滤波器对图像进行滤波。滤波操作通常是针对以某个像素为中心的滤波窗口上进行的,滤波窗口的大小与具体的算法有关,常用的大小有3x3、5x5、7x7等尺寸。滤波操作在数学上称为卷积,需要使用一个与滤波窗口大小一致的卷积核,卷积核的每个元素代表一个权重,与对应位置的图像像素值相乘,然后所有乘积累加到一起就是滤波后的结果。
Bayer Demosaic
RAW域的任何一个像点(photosite)只包含一个真实的采样值,而构成像素(R,G,B)的其它两个值需要从周围像点中预测得到。
RAW域的最后一步处理是Demosaic,将像素从RAW域变换到RGB域进行下一阶段的处理。Demosaic 算法的主要挑战就是尽量提高算法的准确性,减少图像边缘损失和颜色误差。
Demosaic 处理不好会有拉链效应,边缘模糊,伪彩等现象。
未完待续…
参考优秀博客:
链接: Understanding ISP Pipeline
链接: ISP算法学习之ISP Pipeline