目录
摘要:在数码相机上应用了许多处理步骤,这些步骤共同构成了相机成像管线。 不幸的是,成像管线通常嵌入在相机的硬件中,这使得研究单个组件的研究人员很难在整个管线的适当范围内这样做。 这不仅阻碍了研究,而且使评估最终相机输出上的单个流水线组件的效果(即使不是不可能)也面临着挑战。 本文介绍了一个新的软件平台,该平台可轻松访问相机成像管线的每个阶段。 该平台允许修改各个组件的参数,以及在中间图像通过不同阶段时访问和操纵中间图像的能力。 我们详细介绍了平台设计,并通过许多示例演示了其实用性。
关键词:相机处理管道,计算摄影,色彩处理
1、介绍
数码相机是几乎所有计算机视觉应用程序的基石,因为它们为我们的算法提供了图像输入。 尽管通常将照相机图像建模为简单的光测量设备,这些设备将入射辐射直接转换为数值,但现实情况是,数字照相机上有许多处理例程可用于获取最终的RGB输出。 这些处理步骤通常按顺序执行,并共同组成相机成像管线。 这些处理步骤的示例包括拜耳图案去马赛克,白平衡,色彩空间映射,降噪,色调映射和色彩处理。 其中许多处理步骤本身就是众所周知的研究主题,例如 白平衡,色彩空间映射(比色法)和降噪。
尽管相机是计算机视觉中最重要的硬件工具,但令人惊讶的是很难访问底层的成像管道。这是因为这些例程已嵌入相机的硬件中,并且可能涉及专有的图像处理,这是各个相机制造商所独有的。这是研究界的重大缺陷。尤其是,它迫使许多研究人员在整个成像管道的适当范围之外进行主题研究。例如,许多针对白平衡和色彩恒定性的工作直接在特定于相机的原始图像上执行,而无法演示如何影响相机上的最终输出。另一个示例包括针对传感器噪声的降噪(NR)。在相机上,NR在许多非线性照相平版程序(例如色调曲线处理)之前应用,但是,由于缺乏获取图像的途径,研究人员通常被迫将NR应用在最终的非线性sRGB图像上。相机管道。这表明学术文献中的假设与实际行业实践之间存在重大的不匹配。
贡献:我们提供了一个软件平台,可以轻松访问成像管道的每个阶段。我们的方法对以DNG原始图像格式保存的图像进行操作,该图像表示来自相机的未处理传感器响应以及相机处理管线的起点。我们的平台允许通过软件渲染API打开并运行图像,该API并行执行板载处理步骤,包括各个处理组件及其相关参数。更具体地说,我们的平台提供了API调用,该API调用允许修改处理组件的参数并在每个处理阶段完全访问中间图像。可以修改这些中间图像,然后将它们插入到管道中,以查看最终输出上的效果。所提出的软件平台可以轻松地与其他软件(例如Matlab)集成,并提供了迫切需要的环境来改善相机成像,或在整个相机成像管道的适当范围内进行实验。
本文的其余部分安排如下:第二部分讨论相关工作;第二部分讨论相关工作。 第3节概述了我们的平台以及可访问和操纵管道的方式。 第4节提供了许多在各种例程上使用平台的示例。 本文的结尾是第5节中的简短讨论和总结。
2、相关工作
相机处理流程的基本步骤如图1所示,并且可能因不同相机的品牌和型号而异。 每个组件的完整细节不在本文讨论范围之内,请读者参考以获取出色的概述。 如第1节所述,管道中的许多组件(例如白平衡,降噪)都是计算机视觉和图像处理社区中的独立研究主题。 不幸的是,相机管线的硬件实现和专有相机的封闭特性使大多数研究人员难以直接访问各个组件。
为了解决这个问题,已经提出了开放的硬件平台。早期工作包括针对机器人视觉的CMU相机[23]。虽然无法访问各个组件(例如白平衡),但摄像头提供了低级图像访问权限,随后的硬件版本允许捕获原始传感器响应。由Adams等人介绍的FrakenCamera是更新,更全面的硬件平台。 [1]。 FrankenCamera被设计为完全可操作的相机,可提供对底层硬件组件的完全访问权限,包括对闪光灯和快门以及底层成像管线的控制。 FrankenCamera平台针对计算摄影应用程序,但是该平台适合于修改成像管道中的各个组件。尽管FrankenCamera项目已正式停止,但该平台的许多功能已合并到最新的Android的Camera2 API [15]中,该API可在运行Android OS的设备上使用。本文中的拟议工作在很大程度上受到FrankenCamera开放设计的启发,旨在通过基于软件的平台提供类似的功能。基于硬件解决方案的软件框架的好处在于,它可以以在线方式处理从各种不同相机保存的图像。此外,与固定硬件实现相比,软件平台在中间阶段处理图像时具有更大的灵活性。
除了用于辐射校准的简单色调曲线以外,还有许多针对照相机处理管道建模的工作(例如[10,20,19,18,30])。这些方法使用原始和sRGB图像的输入对来得出映射,以将sRGB图像转换回原始的线性传感器响应。在某些情况下,此映射紧密遵循基础成像管道[10,20,18,30],但是在其他情况下,该映射由3D查找表近似[19]。另一个值得注意的例子是Baek等人的工作。 [4]结合了相机管线的快速近似,以便在相机的视野中显示原始图像。虽然这项工作的重点是翻译应用在视图筛选器上的稀疏用户交互以控制最终完成的图像,但它阐明了需要合并非线性处理步骤以向用户提供更实际的最终输出表示的需求。尽管这些方法对于模拟车载摄像机成像过程很有用,但它们仅提供了真实摄像机管线的代理。
在先前的工作中已经证明了在各种计算机视觉和图像处理任务中考虑整个摄像机流水线的好处。 例如,Bianco等。 [6,7]表明,通过同时考虑流水线中的白平衡和色彩空间转换,可以改善图像的整体色彩再现。 Tai等人的工作。 [25]表明,机载相机上应用的非线性映射对图像去模糊效果有重大影响。 Nam等人的最新著作。 [21]和Wong和Milanfar [27]展示了当在噪声模型中考虑相机管线中的非线性处理步骤时,图像去噪的改进。 这些先前的工作通常必须通过使用相对简单的相机处理模型生成的合成图像来激发他们的论点。 缺乏能够模仿完整相机成像流程的完整软件平台的访问权是我们工作的动力。
图2。 我们的软件平台可访问的相机处理管线例程显示在(A)中。 每个组件均由其采用的参数类型表示,例如 标量值,2D数组,3×3矩阵[MAT],函数调用[func]或1D或3D查找表[LUT]。 另外,软件平台API支持在每个阶段直接访问和操纵中间图像,如(B)所示。
3、平台概述
我们的平台使用以Adobe Digital Negative(DNG)格式保存的图像。 尽管许多DSLR相机尚不支持这种格式,但实现Camera 2 API的较新的Android手机目前支持该格式。 随着Android使用DNG,预计移动设备捕获的原始图像数量将大大增加。 但是,如果未在DNG中捕获图像,则可以使用Adobe DNG转换软件工具[3]将相机特定的原始格式转换为DNG。 DNG图像格式不仅包含原始图像数据,而且还包含元数据,这些元数据指定了供处理管线中的不同阶段使用的参数(例如标量值或1D或3D查找表(LUT))。
通过重写开源Adobe DNG SDK软件[2]的界面,使我们的平台成为可能,该软件提供了相机管线的完整软件实现,可将DNG原始图像转换为最终的sRGB输出。虽然这是一项工程壮举,但实现起来并非易事。独立的Adobe DNG SDK并非旨在允许更改各个阶段的参数,而是SDK直接使用DNG文件元数据中的值。因此,必须将处理管道分解为各个阶段,并设计API调用以访问和修改基础参数。此外,未经修改的SDK使用多线程设计,可将图像分成多个小图块并分别处理。这使得很难使用本机SDK访问流水线中的相干中间图像。我们的修改更改了此切片结构,以允许在每个阶段访问中间图像。我们还添加了API调用,以允许自定义的去马赛克和降噪功能,这在本机SDK中不支持。
图2-(A)概述了建议的相机成像平台中可用的处理步骤。 顶部显示了每个组件使用的具有相关参数的步骤,而图2-(B)显示了管道中每个阶段的中间图像。 接下来,我们详细介绍每个阶段及其可以修改的相关参数。 还讨论了各个阶段使用的参数类型。 如果是一维LUT,则将相同的LUT分别应用于每个颜色通道。
阶段1:读取原始图像(参数:None)从DNG图像文件中读取未修改的原始图像。这是未经处理的图像产生的传感器仍在其马赛克拜耳模式格式。
第2阶段:黑光减法和线性化(参数:级别值或1D LUT)对未修改的原始图像进行线性化处理,使其值在处理管道中的范围为[0-1]。 许多相机都提供一个BlackLevel参数,该参数表示由于传感器噪声而偏离0的传感器黑电平。 这通常是特定于图像的,并且与其他相机设置(包括ISO,增益等)有关。也可以指定附加的WhiteLevel(最大值)。 如果未提供任何内容,则使用图像中所有强度的最小值和最大值对图像进行归一化。 另一种选择是提供一维LUT来执行线性化。 图2-(A)中所示的1D LUT来自尼康D40。
第3阶段:镜头/平场校正(参数:4×ArrayN×M)许多相机提供空间变化的校正,以补偿镜头失真和不均匀的光下降。 例如,摩托罗拉Nexus 6提供了四个场景依赖的13×17 2D阵列(每个拜耳图案像素重复G两次,每个像素重复G),以提供这种场校正。 将这些阵列缩放并双线性内插到图像大小,然后再乘以镶嵌图像。
阶段4:去马赛克(参数:func)去马赛克步骤通过在Bayer模式中插值缺失值,将单通道原始图像转换为三个全尺寸R / G / B颜色通道。 我们将此操作表示为任意函数func。 默认插值是基于Bayer模式布局的标准双线性插值。
阶段5:降噪(参数:func)与去马赛克阶段相似,降噪表示为任意函数func。 此功能(Adobe SDK中未提供)可以访问中间图像,并将过滤后的图像返回到管道。
阶段6:白平衡和色彩空间转换(参数:2个3×3矩阵)此阶段在相机特定的RGB色彩空间和标准色彩空间(例如CIE XYZ或ProPhoto RGB)之间执行必要的色彩空间转换。 该比色过程涉及一个3×3的白平衡矩阵(通常是一个对角矩阵)和一个3×3的色彩空间转换矩阵。 Adobe SDK使用的默认色彩空间是ProPhoto RGB,它是通常用于摄影色彩处理的宽色域色彩空间。
阶段7:色相/饱和度贴图应用程序(参数:3D LUT)此可选过程旨在作为颜色空间转换的一部分,以允许进行非线性转换以改善颜色再现。 虽然这被称为“色相”和“饱和度”修改,但它是作为3D LUT实施的,直接应用于在第6阶段获得的RGB值。例如,使用X-Rite摄像机校准软件保存DNG文件时 [28],爱色丽向DNG元数据添加6×6×3 LUT。 根据我们的经验,大多数摄像机DNG文件不包括此步骤。
第8阶段:曝光补偿(参数:EV值,一维LUT)曝光补偿是一种数字曝光调整。 尽管输入是用于控制相机上的快门和光圈设置的曝光值(EV),但在数字情况下,这只是将线性增益(向上或向下)应用于强度值。 作为参数传递的EV值将生成具有4096个值的1D LUT。 或者,可以直接提供一维LUT。
第九阶段:色彩处理(Params: 3D LUT)相机通常使用自己的专有色彩处理,与[18]相机上不同的图片风格相关联。像色相/卫星地图,这是应用作为一个3D LUT,其中RGB值是根据表的条目插入。这个表的大小可以是任意的,例如,使用尼康D40的Camera Vivid设置保存的图像在DNG元数据中添加了一个36×16×16 LUT。
阶段10:色调曲线应用程序(Params: 1D LUT)可以指定特定相机的音色图。这是相机上的照片整理过程的一部分。例如,尼康D40的相机生动轮廓包括一个LUT,有248个条目。如果没有指定音调曲线,Adobe DNG有一个默认的音调曲线,如图2所示)
第11阶段:最终色彩空间转换(参数:3×3矩阵)该色彩空间转换将相机内部工作色彩空间转换为最终输出渲染的色彩空间。这是使用一个3×3的矩阵来完成的,并假设与阶段6使用的颜色空间有关。相机最常见的颜色空间是标准RGB (sRGB)和Adobe RGB。在本文中,所有的例子都使用了sRGB颜色空间。
阶段12:伽马曲线应用(Params: 1D LUT)最后阶段是伽马曲线,作为4096项的1D LUT应用。这是打算代表sRGB伽玛校正,是sRGB规范的一部分,然而,它也可以用于额外的颜色修改和照片整理。
这12个步骤组成了可以通过API调用或直接对中间图像进行图像修改来控制的多个阶段。对这个组件套件的访问提供了一个全面的方法来处理图像,从原始输入到最终的sRGB输出。注意,没有必要应用所有步骤。例如,曝光补偿、降噪、色调/sat地图修改等,可以在必要时跳过。
4、结果
我们已经开发了功能齐全的软件平台,可在基于Windows的PC上使用。该软件框架是用C ++开发的,但是也对其进行了修改,使得可以直接从Matlab进行API调用。在本节中,我们演示几个示例,这些示例用于说明平台的各种优点。这些示例大致分为三类:1)基本功能; 2)评估管道中某些点的阶段;和3)在整个管道的适当范围内评估阶段。具体而言,第4.1节演示了几个示例,这些示例显示了操纵管道组件的基本能力(例如EV电平,音调曲线修改和去马赛克)。第4.2节提供了一个评估颜色转换阶段的示例,该任务当前难以通过现有工具完成。第4.3节提供了针对白平衡,图像降噪和图像模糊的示例,这些示例显示了在整个流程中考虑这些任务的好处。
4、1基本处理
曝光补偿和色调映射图3从一个简单的示例开始,显示了曝光补偿和色调映射阶段的操作参数效果。图3-(A)显示了许多EV值,这些EV值直接传递到我们平台的API,该API生成所示的1D LUT。在音调映射的情况下,将一维LUT直接传递给API,如图3-(B)所示。所示图像代表在整个相机管线中使用这些参数获得的最终sRGB输出。
去马赛克图4-(A,B)演示了应用于图像的两种不同去马赛克程序的示例。特别是,我们使用默认的双线性插值和Gunturk等人的工作。 [16]使用交替投影。有趣的是,在[16]的工作中,通过使用sRGB图像模拟马赛克图像并将其颜色排列为Bayer图案结构,证明了结果。在我们的示例中,他们的方法直接应用于真实的镶嵌原始图像,然后返回到管道以产生真实的结果。
4.2评估
比色法示例现有计算机视觉和图像处理研究的一个挑战是在相机管线中获取中间图像以评估各个阶段的效果的能力。 颜色转换组件(第6阶段)就是一个很好的例子。 此阶段对于确保颜色转换后确保不同的相机特定颜色空间与相同的规范颜色空间对齐至关重要。 检查相机管线中的此阶段实质上是评估相机的比色校准的质量。
为了展示我们的平台能够完成此任务的能力,我们在四个不同的照明条件下,使用四个不同的移动相机(LG-G4,摩托罗拉Nexus 6,三星S6-Edge和HTC One M9)捕获了标准的色彩再现图。 这些移动设备相机均支持DNG文件格式,并将相机的内置参数嵌入DNG元数据中。
这个颜色转换。这使得我们可以将本地相机的比色能力结果与其他两种方法进行比较:1)广泛使用的X-Rite校准软件[28],以及2)Bastani和Funt[5]的最新方法。
我们使用X-Rite软件和[5]的方法使用24色块色彩再现图来校准色彩空间转换参数。 在这种情况下,色彩空间转换是从相机原始色彩空间计算到ProPhoto色彩空间的。 对于所有方法,包括相机固有方法,都是在特定照明下使用色卡上的中性色估算白平衡矩阵的。 为了比较这三种方法,我们需要将3×3色彩转换矩阵应用于第6阶段。对于X-Rite,我们还应应用X-Rite使用的附加色相/饱和度图(第7阶段) 礼貌地为色彩空间映射提供进一步的非线性校正。 在每种方法的适当位置停止颜色管线,并获得中间图像,并比较色块的平均色度值。
结果显示在图5-(A)中,是在两种不同照明下捕获的色彩再现图。 该图显示了来自四个不同相机的24个色块的平均色度。 在理想的色度映射下,色度值应全部位于色度图中的完全相同的位置,但是,由于颜色转换矩阵中的错误,它们是不相同的。 为了帮助实现可视化,我们拟合了一个高斯椭球以显示四个相机中每个色块的色散。 我们的实验表明,Bastani和Funt [5]提出的方法提供了最一致的色彩空间映射。
对于图5-(A)中的示例,X-Rite和[5]具有不公平的优势,因为它们使用与显示结果相同的24色再现图进行了校准。 为了测试这些方法在其他材料上的功能,我们在由81种不同类型的材料组成的一组新色块上使用了它们估计的色彩空间转换参数。 如图5-(B)所示,在该图中我们再次看到Bastani和Funt [5]的工作获得了最佳结果。 我们通过计算关于ProPhoto RGB颜色空间中颜色再现图[29]的地面真实颜色值的定量误差,进一步评估了这三种方法。 在这种情况下,我们遵循颜色研究中常见的步骤,并考虑根据地面真实颜色egt计算出的颜色ecolor的角度误差angle(ecolor)如下计算:
表1显示了颜色表(CC)和额外81种材料(AM)的角误差。如图5-(A,B)所示,Bastani和Funt[5]的方法提供了最好的结果。如果没有我们平台的支持,这种类型的分析是具有挑战性的。
4.3评估整个管道内的任务
在下面的文章中,我们将展示几个可以从访问完整的处理管道中获益的任务
白平衡/色彩恒定白平衡是几乎所有图像上应用的关键处理步骤之一。 此过程属于较大的颜色恒定性研究,该研究模仿了我们人类在不同照明下感知材料相同颜色的感知能力。 白平衡通过尝试确保至少中性场景素材在相机色彩空间中显得消色差来近似此功能。 当图像值仍在相机的RGB颜色空间中时,白平衡将直接应用于相机原始图像。
关于此主题的许多研究论文(例如[9] [12])直接在相机原始图像上提供了其白平衡结果的主观结果。 但是,这种结果几乎没有视觉意义,因为它们在非标准的相机特定色彩空间中提供了视觉比较。 主观评估结果的一种更合适的方法是在整个相机管线中运行白平衡结果,以产生由相机产生的逼真的输出。 图6显示了这两种方法的区别。 特别是,将两种众所周知的白平衡方法(灰度世界[8]和灰度边缘[26])应用于输入图像。 图6-(A)显示了原始图像上的结果,图6-(B)显示了sRGB输出。 sRGB输出提供了两种算法的更现实的比较。
降噪与白平衡类似,另一个无法通过完整的相机管线使用而处于不利地位的研究领域是图像降噪。降噪是一个非常适合的研究主题,感兴趣的读者可以参考[11]以获得出色的概述。图像噪声的主要来源之一是统称为传感器噪声,并归因于基础成像传感器(CMOS或CCD)。因为此噪声存在于传感器上,所以它在流水线开始时存在于原始图像中。因此,降噪通常是在相机管线中的非线性阶段之前进行的。但是,由于很少有研究人员可以使用相机管道,因此采用了降噪方法,例如Dabov等人的流行BM3D方法。 [13]通常在sRGB输出上应用和评估。图7演示了在整个成像流水线的适当上下文之外应用图像去噪的缺点。我们的示例根据合成图像提供地面真实输入,以计算峰值信噪比(PNSR)。图7-(A)显示了原始图像,该图像已被零均值高斯噪声破坏。图中显示了强度值不断增加的三个不同同质斑块的噪声轮廓。我们可以看到,高斯噪声轮廓在原始图像的不同色块上显得均匀,只有平均强度的偏移。在此之下,我们显示了经过整个成像流水线(包括非线性阶段(例如阶段9、10、12))处理过的相应的噪点原始图像。我们可以看到,不同补丁的噪声分布受到非线性处理阶段的显着影响。实际上,不可能为sRGB图像做出统一的噪声假设,因为非线性处理已经改变了噪声的这种特性。
图7-(B)演示了BM3D在管道中两个不同位置的应用。 顶部显示了应用于原始图像的BM3D。 然后,将通过其余管道处理过滤后的结果。 这代表了NR的正确应用。 底部显示了BM3D直接应用于嘈杂的sRGB图像,如大多数学术文献中所做的那样。 sRGB最终输出的两种结果的PSNR都是根据地面真实情况(无噪声)的sRGB图像计算得出的。 PSNR截然不同,在流水线的正确位置应用的去噪为58.27,而最终非线性sRGB阶段的应用仅为30.49。
该示例用于激发在检查图像去噪时需要访问整个相机管线的需求。 即使在不可避免的情况下,必须将降噪应用于非线性sRGB图像,我们的软件平台仍提供了一种出色的方法来研究传感器噪声以及如何通过如图7-(A)所示的相机处理步骤来影响传感器噪声。
去模糊我们以第2节中提到的最终示例作为开发此软件平台的激励因素作为结束。 尤其是Tai等人的工作。 [25]证明了相机上的非线性过程对图像去模糊有负面影响。 与去噪示例类似,[25]显示非线性色调映射功能(阶段10和/或12)会改变失真轮廓,在这种情况下为模糊的点扩展函数(PSF),从而使PSF 在图像上的空间不再均匀。 Tai等。 以此为依据提出去模糊应该直接应用于原始图像,或者在应用去模糊之前必须注意撤消应用于图像的任何非线性处理。 Tai等人的工作。 使用了非常简单的相机模型,该相机模型将单个1D LUT应用于原始图像。 这等效于仅在我们的软件平台中应用阶段1和10。
借助我们的平台,我们可以更真实地演示Tai等人的作品。 [25]论点。 图8-(A)显示了原始图像,该原始图像已被PSF建模,该模型对跨50个像素的线性运动及其相应的sRGB输出进行了模糊处理。 这将直接应用于去马赛克的原始图像(在我们的管道的第4阶段中可用)。 然后,我们通过维纳滤波[14]以两种方式应用反卷积,如图8-(B)所示。 如[25]所提倡的,第一个是在原始图像上,然后通过整个流水线对其进行处理。 在第二个示例中,我们将Wiener滤波器直接应用于sRGB图像。 如预期的那样,应用于原始图像的结果明显优于应用于sRGB图像的结果。 与先前的降噪实验一样,此示例演示了在相机管线的适当上下文中能够执行各种计算机视觉和图像处理任务的好处。
5讨论与总结
本文提出了一个新的软件平台,该平台允许从低级访问照相机成像管道中的各个组件。 具体而言,我们的平台利用了Adobe Digital Negative(DNG)图像文件格式,并对可用的DNG SDK进行了必要的修改,从而提供了广泛的API,用于修改管道的参数,并允许访问和修改可以 然后再插入到管道中,以计算将在摄像机上获得的最终输出。
该平台的有用性已在许多示例中得到了证明,包括白平衡,降噪和比色法。 尽管这项工作本质上是工程,但我们相信该平台为研究人员提供了一种急需的机制,以修改管道中的各个组件并在整个相机成像管道的适当上下文中展示其结果。 此外,随着Android OS通过Camera 2 API采用DNG原始图像格式,DNG文件的可用性将显着增加,从而进一步增加了该平台在计算机视觉社区中的及时性。
我们方法的局限性在于它只能从摄像机保存的DNG图像中进行操作。 这意味着相机参数(例如ISO设置)会直接影响传感器硬件上的模拟放大或捕获时图像的曝光,无法使用我们的平台进行修改。 这可能会影响以工作为目标的任务,例如高动态成像(例如[24])。 在这种情况下,有必要使用不同的ISO或曝光设置捕获许多DNG图像,以模拟相机上的操作。
我们还注意到,本文代表了当前的相机架构,其中流水线中的每个阶段都是独立的。 Heide等人的最新工作[17]。 演示了考虑重新设计的机载相机处理系统的好处,该系统为图像形成提供了全面的考虑,可以更容易地结合有关自然图像的已知先验。 我们还预计,在未来几年中,本文所述的传统管道可能会发生重大变化。 再次重要的是,对于研究人员而言,访问一个允许在机载成像系统的适当环境下进行研究的软件平台将非常重要。