论文代码开源链接:
A Software Platform for Manipulating the Camera Imaging Pipelinehttps://karaimer.github.io/camera-pipeline/摘要:论文提出了一个Pipline软件平台,可以方便地访问相机成像Pipline的每个阶段。该软件允许修改单个模块的参数,以及在中间图像经过不同阶段时访问和操作中间图像的能力。
概述:数码相机上有许多处理步骤,用于获得最终的RGB输出。这些处理步骤通常是按顺序执行的,并共同构成了相机成像Pipeline。这些处理步骤的例子包括Bayer Demosaic、白平衡、颜色空间映射、降噪、Tone-Mapping和CCM等。
一个传统ISP Pipeline成像过程如下图所示:
但是由于访问底层硬件的成像Pipeline较为困难,因为这些例程嵌入到相机的硬件中,可能涉及到个别相机制造商独有的专有图像操作。
因此对于ISP Pipeline当中某个模块的研究难以演示它将如何影响相机的最终输出。例如,许多针对白平衡和颜色不变性的工作都是直接在特定于相机的原始RAW图像上执行的,而图像最终的输出质量还与Pipeline的其他模块息息相关。另一个例子是去噪研究,由于缺乏通用的RAW原始图像成像Pipeline,通常研究去噪的论文都是在经过ISP处理后的sRGB图像上进行操作,但是经过了ISP非线性模块处理后的图像很多降噪假设已经难以成立。
因此,该论文提供了一个软件平台,允许访问ISP Pipeline 的每个成像阶段图像参数和数据,可以方便的抓取某个成像阶段的图像处理后再插入进去,该操作可以方便研究某个过程的图像处理对于整个ISP pipeline最终成像输出的影响。该软件平台基于DNG原始RAW格式,DNG保存了CMOS Sensor的原始成像二进制RAW数据,并附加了一些关于成像的其他信息和拍摄信息。
PS:我的HUAWEI Mate30手机拍摄的RAW图格式就是DNG格式
相关工作:论文例举了相关文献说明了在各种计算机视觉和图像处理任务中考虑整个ISP Pipeline成像过程的好处。力求优化最终成像输出。
软件平台架构
论文提供的ISP Pipeline成像处理如下图所示:
相应阶段的输出图像为:
各个成像阶段说明
Stage 1:Reading the raw image ( Params: None ),从DNG格式中获取原始二进制RAW数据Stage 2:Black light subtraction and linearization (Params: Level values or 1D LUT),可以理解为BLC(黑电平),对于特定的某张RAW图像,其黑电平与拍摄时的ISO和增益有关,或者可以提供一个一维LUT来进行线性化。(但目前的ISP貌似是减去一个固定值即可)Stage 3:Lens/Flat Field correction ( Params: 4 × Array N × M )。可以理解为LSC(镜头阴影校正),对于每个Bayer通道(总共RGGB四个通道)提供一个NxM的二维矩阵,结合双线性插值来对原始RAW图进行镜头阴影校正。Stage 4:Demosaicing ( Params: func),将原始RAW图每个通道缺失的颜色分量通过插值还原出来,最终得到RGB图。Stage 5:Noise reduction ( Params: func),降噪。Stage 6:White-balancing and color space conversion (Params: Two 3 ×3 matrices),白平衡与颜色空间转换,注意这里指的颜色空间转换可以看作是CCM(颜色校正),指的并不是RGB到YUV的颜色空间转换。Stage 7:Hue/Sat map application ( Params: 3D LUT),非线性变换,调整饱和度和色调,通常的ISP貌似没有这个步骤(CCM是乘以一个3x3矩阵,是对颜色的线性变换,而这个是3D LUT,可以实现对颜色的非线性变换)Stage 8:Exposure compensation ( Params: EV value , 1D LUT),曝光补偿,是一种数字曝光调整,类似于DGain(数字增益),只是对像素值增加一个线性增益。Stage 9:Color manipulation ( Params: 3D LUT),也是对于颜色的非线性调整。Stage 10:Tone-curve application ( Params: 1D LUT),色调映射,对于亮度和对比度的调整。Stage 11:Final color space conversion ( Params: 3 × 3 Matrix),类似于CCM线性颜色校正。Stage 12:Gamma curve application ( Params: 1D LUT),Gamma校正,对于全局亮度的调整。
论文使用了一个Colorimetry Example例子来说明现有的计算机视觉和图像处理研究面临的一个挑战是能够在相机Pipeline中获得中间图像,以评估在各个阶段的有效性。
使用四种相机(LG-G4, Motorola Nexus 6, Samsung S6-Edge, and an HTC One M9)在不同光照条件下拍摄标准色卡并得到DNG格式的原始图像。
分别使用X-Rite software和论文【Bastani, P., Funt, B.: Simplifying irradiance independent color calibration. In: Color Imaging XIX: Displaying, Processing, Hardcopy, and Applications (2014)】中提到的方法来进行颜色空间映射(stage 6)
通过对比颜色转换后的24色与标准24色卡颜色的色差,Bastani and Funt提到的方法取得了良好的结果,余弦角度误差最小。
使用Full Pipeline来评估某个成像阶段的算法性能
论文通过该例子说明,只评估不同AWB算法在RAW域的结果没有什么视觉意义,因为RAW图空间是非标准的显示结果。更为合理的比较应该是对相应图像进行ISP Pipeline全流程后得到标准的显示输出后再进行比较。通过这样才能看不同AWB算法的差异性。
论文通过这个例子说明同通常噪声是通过图像传感器产生的,因此噪声从一开始的RAW原始图像中就开始出现。论文对比了图像在非线性处理前的降噪结果说明了非线性处理会改变噪声的分布情况,因此降噪最好在非线性处理前进行。
同理,论文也论证了Deblur(锐化)也应该在非线性处理前进行,在RAW域进行deblur的结果要比在sRGB域的结果好。
个人总结:论文提供了一个ISP Pipeline的全流程软件,可以方便的更改某一阶段的算法并查看该算法最终Pipeline输出的效果,但是由于使用的是Adobe的DNG SDK,整个ISP Pipeine的很多阶段被隐藏了,通常一些处理都是调用库或者使用DNG中携带的信息,还是不能更好的从数据流角度透明展示ISP pipeine的各个阶段,后续准备使用传统的ISP算法简单搭建一个类似的MATLAB仿真平台。