论文阅读:A Software Platform for Manipulating theCamera Imaging Pipeline

news/2024/11/27 4:43:22/

论文代码开源链接:

A Software Platform for Manipulating the Camera Imaging Pipelineicon-default.png?t=O83Ahttps://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校正,对于全局亮度的调整。
Exposure Compensation & Tone-mapping

Demosaicing

论文使用了一个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来评估某个成像阶段的算法性能

White-balancing/color constancy

论文通过该例子说明,只评估不同AWB算法在RAW域的结果没有什么视觉意义,因为RAW图空间是非标准的显示结果。更为合理的比较应该是对相应图像进行ISP Pipeline全流程后得到标准的显示输出后再进行比较。通过这样才能看不同AWB算法的差异性。

Noise Reduction

论文通过这个例子说明同通常噪声是通过图像传感器产生的,因此噪声从一开始的RAW原始图像中就开始出现。论文对比了图像在非线性处理前的降噪结果说明了非线性处理会改变噪声的分布情况,因此降噪最好在非线性处理前进行。

Deblurring

同理,论文也论证了Deblur(锐化)也应该在非线性处理前进行,在RAW域进行deblur的结果要比在sRGB域的结果好。

个人总结:论文提供了一个ISP Pipeline的全流程软件,可以方便的更改某一阶段的算法并查看该算法最终Pipeline输出的效果,但是由于使用的是Adobe的DNG SDK,整个ISP Pipeine的很多阶段被隐藏了,通常一些处理都是调用库或者使用DNG中携带的信息,还是不能更好的从数据流角度透明展示ISP pipeine的各个阶段,后续准备使用传统的ISP算法简单搭建一个类似的MATLAB仿真平台。


http://www.ppmy.cn/news/1550242.html

相关文章

C# .net core web 程序远程调试

如果有两个同一个web的程序池,附加进程的时候就有两个选择。

vue3 reactive响应式实现源码

Vue 3 的 reactive 是基于 JavaScript 的 Proxy 实现的,因此它通过代理机制来拦截对象的操作,从而实现响应式数据的追踪。下面是 Vue 3 的 reactive 源码简化版。 Vue 3 reactive 源码简化版 首先,我们需要了解 reactive 是如何工作的&…

面试干货:软件测试常见面试题(附答案)

1、文档测试主要包含什么内容? 参考答案: 在国内软件开发管理中,文档管理几乎是最弱的一项,因而在测试工作中特别容易忽略文档测试也就不足为奇了。要想给用户提供完整的产品,文档测试是必不可少的。文档测试一般注重下面几个方…

css:感觉稍微高级一点的布局

精灵图 有时候我们下载网页里的小元素图片的时候,就会一下子下载一大张,这就是精灵图,也叫雪碧图(sprites) 一个网页由很多图像作为修饰,当网页中图像过多时,服务器会频繁地解释和发送氢气图片…

如何定制谷歌浏览器的外观主题

在数字化时代,浏览器已成为我们日常生活中不可或缺的一部分。谷歌浏览器,以其快速、稳定和丰富的扩展程序而广受用户喜爱。但你知道吗?除了强大的功能外,谷歌浏览器还允许用户通过定制外观主题来打造更加个性化的浏览体验。本文将…

如何在 PyTorch 分布式训练中使用 TORCH_DISTRIBUTED_DEBUG=INFO 进行调试

如何在 PyTorch 分布式训练中使用 TORCH_DISTRIBUTED_DEBUGINFO 进行调试 在使用 PyTorch 进行分布式训练时,调试分布式训练过程中的问题可能非常棘手。尤其是在多卡、多节点的训练环境中,常常会遇到通信延迟、同步错误等问题。为了帮助调试这些问题&am…

【纸飞机串口调试工具】预设曲线名称

目录 纸飞机串口工具介绍软件下载和视频教程功能背景使用介绍配置内容预设场景 使用演示 纸飞机串口工具介绍 纸飞机一款性能强劲且专业的串口/网络/HID调试助手,具有多窗口绘图、关键字高亮、数据分窗和数据过滤等众多功能,可以极大的方便嵌入式开发人…

【论文解析】HAQ: Hardware-Aware Automated Quantization With Mixed Precision

作者及发刊详情 inproceedings{haq, author {Wang, Kuan and Liu, Zhijian and Lin, Yujun and Lin, Ji and Han, Song}, title {HAQ: Hardware-Aware Automated Quantization With Mixed Precision}, booktitle {IEEE Conference on Computer Vision and Pattern Recognit…