《High Dynamic Range Image Encodings》,译名:高动态范围图像编码

来源:互联网 发布:淘宝怎么查看买家信用 编辑:程序博客网 时间:2024/06/14 06:00

High Dynamic Range Image Encodings

高动态范围图像编码

作者:Greg Ward

所属公司:Anyhere Software


引言

        

        当今我们正处于数字图像处理新纪元的开始,图像文件不再是像二十年前一样,根据传统显示器技术的要求,仅仅编码有限的子空间,而是将包含原始场景的色域和动态范围的编码内容。为了达成该目标,针对高动态范围图像信息,需要统一的编码标准。而与常见图像格式相类似,可供选择的HDR标准亦是多种多样的。

        本文的主要内容包括:HDR图像的编码史,编码效能以及现存新兴标准的发展趋势。文中内容的关注点在于像素级编码,而不是存储整幅图像所需的文件封装格式。这也是为了避免颜色空间量化与图像压缩的概念混淆,毕竟在某种程度上来说,它们属于不同的问题领域。尽管后续会提到很多方面的内容,但是不会涉及到类似于离散余弦变换、小波和信息熵编码的细节,主要是介绍和分析一些关于HDR颜色编码及其应用的基本概念。


什么是颜色空间?


        简单地来讲,人眼视觉系统包含有三种不同的颜色感应细胞类型,每种细胞类型具有其单独的感应灵敏度。实际上,人眼共有四种视觉感应细胞,但是其中的视杆细胞仅能够感应亮度的变化。由于人眼无法区分连续光谱与由单色光源混合的颜色效果,因此,当使用三种不同的光谱敏感度进行混合时,就能够欺骗人眼,使其认为能够观察到任意的光谱分配范围。这就是所有颜色理论的基础,即“颜色条件等色”原理。

        由于条件等色的存在,可以选择任意三种人眼系统能够明显分辨的颜色作为基色,通过适当量级的基色混合,能够刺激视网膜达到模拟任意实际光谱效果的目的。当然,这只是理论上的方法。实际上,为了获得期望的颜色,会有一个或多个基色负值的情况出现,而负值系数并不符合现实状况,所以CIE另外定义了XYZ颜色空间,以确保仅仅通过正值系数的基色混合,便能够得到任意可视颜色的模拟效果。然而,为了达到此目的,需要选择比最纯的激光器所能够产生的纯色光更纯净的基色,即“假想基色”,当前仍没有任何物理设备能够产生如此纯净的基色。因此,虽然基色混合效果能够欺骗人眼,但是由于实际的物理限制,这又是不可能付诸于实践的。为了实现所有的可能颜色,需要用到可调谐的激光器作为发光源,在这种设备出现之前,人们所能够看到的颜色仅仅是整个色域的一部分。

        图1展示了符合视觉均匀性的CIE(u’, v’)色域图,其中标有CCIR-709基色的位置。对于大多数的CRT电脑显示器,这些基色是合理的近似值,并且定义了标准sRGB颜色空间的边界范围 [10] 。该三角区域标示出通过使用这三种基色混合所能够表示的颜色范围,若颜色超出该区域范围,则无法通过典型的显示器进行显示。另外,这些超出色域的颜色也无法存储在标准sRGB图像文件中,或者使用常见的输出设备进行显示和打印。

图1 CCIR-709(sRGBA)色域图

        图1仅仅展示了三维颜色空间中的两维坐标内容,作为第三维的亮度信息并没有包含其中,该色域图来自于实际的三维颜色空间的切片。

        实际上,颜色空间包括两方面内容:第一,它是一系列公式的组合,定义了一个颜色变量和一些标准颜色空间的相互转换关系,通常是CIE XYZ颜色空间,其中最常见的格式是3x3的颜色传输矩阵,若空间为非线性的,可能会有附加的公式内容;第二,颜色空间是一个两维的边界,通常由每种基色的最大和最小值所确定,被称为色域。根据实际应用情况,对于显式的二进制表示法,颜色空间可能会有一个与之相对应的量化等级。例如,在sRGB颜色空间中,包含一个非线性的伽马颜色矩阵,以及对于三种基色的量化限制。


什么是伽马编码?


        考虑到视觉均匀性,在同一个量化颜色空间,为颜色值和亮度值确立一个非线性的对应关系是更好的。依据CRT显示器特性,其输出符合非线性关系,并且电压与亮度之间遵循伽马规律。这是一种指数关系,其公式如下:

其中,K为常量,v为输入电压值;若v被归一化,则K表示最大输出亮度。

        典型的CRT显示设备遵循一个幂指数响应,γ值通常处于2.4~2.8之间。当常用CRT显示器直接显示时,sRGB标准有意地将该值偏离至2.2,以便于获得更好地对比度提升效果。没有任何一种颜色理论能够解释为什么会有如此的适合性,只能说在标准的视频图像中,人们似乎更喜欢明显的对比度提升效果[4] 。需要注意,大多数的CRT显示器并没有2.2的伽马曲线,尽管大多数的标准颜色编码都会这么做。实际上,颜色编码和显示曲线是两码事,由于它们使用相同的基本公式,在大多数人的印象中才会被混为一谈,经常被错误地作为“伽马校正曲线”而涉及。当使用一个幂指数关系进行基色编码时,并不是在“校正伽马”,而是在试图最小化可见的量化级和噪声,对于超出目标亮度范围的部分 [9] 。

图2 相同量化级下,线性编码和伽马编码的效果对比

        数字颜色编码需要进行量化,并且在此过程中,误差是不可避免的,而我们的目标是尽可能地保证这些误差处于可见门限以下。在最合适的情况下,人眼对于光强度的感知遵循非线性响应,可以粗略地认为亮度是光强度的立方根。若使用线性量化的颜色值,将会看到暗阶的划分要比亮阶多,如图2所示,此处选用的量化等级为6比特。在使用2.2的幂指数编码时,尽管纯黑场附近的划分仍不理想(为此,如sRGB等一些编码会在0点附近增加一段线性范围的映射关系),却能够看到更多的亮度等级分布。然而,当亮度值的范围超出成千上万时,简单地增加比特位对于伽马编码无法得到更好的等级分布效果,因为关于观察者能够适应一个特别的亮度等级的假设不再成立。伽马编码无法再保留足够的信息,以允许在不引入可见的量化问题的情况下进行端点处的微调。


什么是对数编码?


        当合适的亮度值未知时,围绕大范围的数值,需要一个带有常量或接近常量相对误差的编码方式。对数编码使用以下公式:

        

        该公式假定编码值v被归一化,并且被量化为超过此范围的均匀等级。通过一个常量因子,编码中的临近值等于:

        

        其中N是量化等级。这一常量使其转为伽马编码,相对等级大小的变化超出了它的范围,无限趋近于零。

图3 相对误差百分比,三种编码方法的图像值取log10绘制

        另一种可选的接近对数编码的方法是浮点表示法。浮点表示法并没有完美的均匀等级大小,但是其误差包络遵循一个明显的锯齿图案,如图3所示。为了说明伽马编码、对数编码、浮点编码之间的量化差异,选择12比特和0.001~100的像素值范围,以便于合理地覆盖这三种类型。选择一种浮点表示法,4比特的指数部分,8比特的小数部分,并且没有信号位,仅观察非负值的变化情况。在范围的下端点,依靠解归一化小数部分,能够通过线性格式来表示和0之间的值。通过对比,对数编码的误差包络在整个范围内是常数,同时伽马编码的误差在两阶量级之后便剧烈下降。尽管使用更大的γ值会稍有改善,但是基本上伽马编码并不适合于输入输出范围未知的全HDR影像。


什么是输出参考标准?


        大多数图像编码的分类都会参考输出设备的标准,这意味着颜色空间需要符合特殊的输出设备,而不是所要展现的原始场景。该标准的好处在于,对于在特定目标设备上的显示,无须要求任何特定的优先级,并且不会浪费输出设备色域的颜色资源。相反地,其缺点在于,它不能够显示其他输出设备所展现的一些颜色,在图像处理操作流程中,这些颜色可能会被用到。

        输出参考标准遵循了一个不同的理念,尽可能地重现原始场景。对于在专门的输出设备上的显示,要求一些方法来映射像素到设备的色域。这种操作被称之为色调映射(tone mapping),其可能会像映射RGB值到0~1范围内一样简单,也可能是一些更为复杂的东西,比如压缩动态范围、模拟人类视觉的能力和限制等。

        输出参考标准编码的挑战是找到一个有效的重现方法,以便于覆盖感兴趣的颜色值的全范围,这恰恰是HDR图像所发挥作用的地方。


HDR图像有哪些应用?


        在任何使用一幅常见图像的地方,都可以通过应用色调映射操作得到一幅HDR图像来代替,从而获得期待中的颜色范围。这里并不是真正的反转,因为在信息已经不可挽回地损失的情况下,传统输出参考图像不可能将它的色域扩展到更大的范围。因此,HDR图像的应用完全是传统图像应用的超集,同时提供了许多尚处于探索中的新的机会。

        以下列举了一些示例应用,要求HDR图像作为其输入或者作为其核心部分:

  • 全局光照技术(如基于物理特性的渲染)
  • 叠加现实渲染(如对于电影和商业广告的特殊用途)
  • 人类视觉仿真与心理物理学
  • 勘测与卫星成像(如遥感)
  • 影视的数字合成
  • 数码相机

        实际的HDR图像应用正在不断地增加,并且不久的将来,随着HDR技术在电影及暗室领域发展到一定程度,期望数字摄影能够仅有HDR格式。(实际上,彩色底片就是场景的HDR重现,而照片打印则是最早的色调映射操作。)


HDR图像编码标准


        以下所述的HDR图像标准并不是所有,在学术研究和工业生产领域,若干其它的深度像素标准已经被使用多年。然而,这些格式中的大部分不是真的高动态范围,在场景中,其仅重现了1阶量级,或者仅超越了基础的24比特RGB编码,同时其中的大多数仅仅精确地重现了相同的色域。基于这一讨论,本文主要关注那些扩展到超过4阶量级的像素编码标准,并且更喜欢那些可视化的色域,而不是被已存在的红/绿/蓝显示器荧光粉所限制的子域。如果它们能够满足这些需求,并且具有低于1%的亮度步长和很好的颜色分辨率,则它们将能够精确地编码任何图像,以更加接近人眼的辨别能力。下文的内容会将讨论限制在编码领域,同时包含了一些历史及标准的来龙去脉的说明(比如皮克斯对数编码和scRGBA)。

  • 皮克斯对数编码(Pixar Log Encoding,TIFF)

        近年来,计算机图形学的研究者和专家已经意识到标准24比特RGB表示法的限制。首个提出HDR图像编码标准的是卢卡斯公司的计算机图像部门,其在80年代中期独立出来成立了皮克斯公司。皮克斯对于HDR的直接需求是为了保存其所渲染的有别于常用的电影录像机内容的图像。众所周知,电影记录了比传统CRT所能够显示的更多的动态范围,接近四阶量级,而通常的仅有两阶,并且使用对数响应而不是伽马曲线。理所当然,皮克斯也采用了对数编码,在Sam Leffler的TIFF实验室,Loren Carpenter将其实现为一个压缩-解压缩编解码器[8] 。

        该格式存储了常用的三个通道,红/绿/蓝,但是每通道使用11比特的对数编码,而不是标准的8比特伽马编码。使用这种表示方法,皮克斯能够在0.4%步长中编码几乎相当于3.6阶量级(3600:1)的动态范围。(人眼的亮度可分辨门限为1%的步长。)

        最近几年,该格式仍然被皮克斯内部所采用,但是并没有任何皮克斯公司外的正规的应用曾用到过该格式。它的3.8阶量级的动态范围刚好处于HDR工作的边缘,并且在计算机图形学社区中该格式也不出名,除了Leffler的TIFF实验室中的项目源代码,从未出现过一个关于该格式的公众组织。同时,对于基色负数范围的缺少也意味着它的色域是受限的。

        值得注意的是,近期皮克斯公司向图像研究社区公布了一种24比特/浮点分量的编码格式。

  • Radiance RGBE Encoding(HDR)

        1985年,Ward在劳伦斯伯克利国家实验室开始了关于光辉(辐射率)物理呈现系统的研究[5] ,该系统的设计目标是计算光照度,当输出图像时,其似乎无法丢弃这一信息,因此4字节表示法被调整为3个8比特的小数部分和一个共享的8比特的指数部分。在Graphics Gems Ⅱ中,详细描述了这种“RGBE”编码 [12] ,并且将其作为免费可用的辐射率系统的一部分 [13] 。Utah Raster Toolkit也包括一个“试验性”添加,遵循相同的逻辑,以达到几乎相同的表达。(后续将会提到,Utah的作者跑去工业光魔研发EXR格式。)

        正如其名字所暗示的,辐射率RGBE格式各分配1个字节给红色/绿色/蓝色的小数部分和通用的指数部分,总共4个字节。指数被用于作为三个线性小数部分的缩放因子,三个分量中最大的将作为128~255之间的小数部分,并且其它两个小数部分可能是在0~255之间。结果是它具有大约1%的绝对精度,而覆盖了超过76阶量级的范围。

        尽管在精度和动态范围方面RGBE是一个超越了标准RGB编码的改进,但是它仍存在着一些重大的缺陷。首先,覆盖无用颜色的动态范围表示太多,太阳的亮度大约为108cd/m2,在没有月亮的夜晚的岩石阴暗面的亮度大概在10-6,从而留下了大约62阶的无效量级。对于相同数目的比特位,如果该格式能够具有更少的范围和更大的精度,那将会是更好的,这就要求像对数编码一样能够丢弃按字节的编码格式。另一个问题是,任何RGB表示都限定为正数范围,比如RGBE和皮克斯对数格式,这就导致了使用任意一种“真实”基色都不可能覆盖整个可见色域。像CIE XYZ颜色空间,采用“假定”基色,从而能够使用正数来编码整个可见色域,然而,一旦许多非真实颜色也被表示,则在代码效率上的开销将会产生相似于无效动态范围的问题。最后,对于这种编码,误差分布不是感知均匀的。特别是,在饱和蓝色和品红色区域,步长的差距可能会变为可视的,因为这些区域的绿色的小数部分会降到20以下(相当于5%的量化步长)。

  • 更高精度编码

        实际上,也可以简单地使用标准IEEE-32比特浮点型来存储RGB分量。对于内存存储和颜色信息的处理,IEEE浮点型是一个理想的表达方法。在硬件中,能够完整支持浮点型数据,并且不需要担忧压缩和解码的问题。然而,当为了后续的检索和处理需要把浮点型数据写到硬盘时,它们会占用太多的空间。对于24比特/像素不压缩的低动态范围格式,会占用高达96比特/像素。更糟糕的是,这96比特的数据内容压缩率会非常低,即便是使用像gzip的熵编码高级算法也是一样。这是因为,对于大多数图像资源,本质上每个浮点型小数部分的一半几乎都是随机噪声。这些随机的比特位结果占用了压缩文件中的大部分空间,而实际上却没有增加有用的信息内容。

        例如,图13中左上方的第一幅图像(Apartment),在2048x1536分辨率下,使用不压缩的96比特/像素浮点TIFF格式占用空间为36MB。对该图使用gzip仅仅减少了11%的大小,变为32MB。如此低下的压缩率是由于来自CCD传感器的噪声。大多数全局光照度渲染技术在其输出中都会包含有相似的噪声[3] 。使用RGBE格式时,该图所对应的HDR图像仅占用了9.6MB;使用32比特LogLuv格式时,为7.1MB;使用EXR格式时,为10MB。更进一步,使用gzip压缩LogLuv文件可以减少21%,变为5.6MB。这仅仅是压缩后的IEEE版本的1/6,而且两者的图像之间并没有可见的差异。很明显,选择使用合适的HDR编码可以节省大量的图像存储空间。

        有时候高精度编码是必须的或符合需要的,比如存储在图像处理阶段中的误差敏感的中间图像,或景深图和卫星遥感数据。对于这些应用,IEEE浮点型文件可能是完美适合的,并且这也是为什么某幅图像封装为TIFF和支持32比特分量的OpenEXR。由于本章的关注点是足以欺骗人类视觉系统的颜色表示法,所以暂不讨论关于其它应用领域的细节内容。

  • SGI LogLuv(TIFF)

        在1997年的SGI工作中,Ward(作者)调整校正RGBE所产生的误差,希望能够提供一种工业化的HDR图像编码标准。这最终导致了LogLuv编解码器出现在Sam Leffler的TIFF实验室中。该编码是基于视觉感知的,并且设计用于匹配人类的对比度和颜色检测门限的量化等级。它的主要的优点是,在一个完美显示系统中,编码量子能够保持在导致可见差异的水准以下。它的设计在本质上是与JPEG YCC编码相似的,但是移除了色域和动态范围的限制。通过分离亮度和色度通道,同时对亮度应用对数编码,从而达到人类所能够看见的非常有效的量化级。该编码及其变体在 [6] 中有详细描述。

        实际上,该对数编码有三种变体。第一种变体是10比特对数亮度值和一个14比特CIE查找以组合成为一个标准长度的24比特像素,其遵循一个感知模型,允许在相同的比特位数达到更好的使用。在这个例子中,能够扩展全部可见色域和亮度达到4.8阶量级,并且刚好感觉不到步长差异。第二种变体是使用16比特的亮度编码,其允许负值,并且覆盖了38阶量级的动态范围以0.3%的步长差异,也是处于感知水平之下的。第三种变体是使用相同的16比特的有符号的亮度编码,然后增加8比特作为CIE u’和v’坐标,以便于包含在32比特/像素中所有的可见颜色。

        LogLuv格式已经被许多计算机图形研究者所采用,并且它的公司在Leffler的TIFF实验室也提供了一些可用程序,但是尚无广泛使用的案例。部分原因是人们不情愿丢弃所熟悉的RGB颜色空间。即便是像与CIE XYZ之间进行转换的简单的3x3系数矩阵也是经常被许多程序员所混淆的。当发现它在HDR图像编码方面具有极好的性能后,我们希望这种格式能够被广泛使用[7] 。为了彩色图像的档案存储,毕竟没有太多的合适的格式,至少在人类视觉演化到更高等级之前。

  • ILM OpenEXR(EXR)

        2002年,工业光魔公开了用于读写其OpenEXR图像格式的C++源码,该格式为了专门的影像合成和渲染效果,已经在公司内部使用了很多年 [1] 。OpenEXR格式是一种对于16比特Half数据类型的通用目的的封装格式,其已经应用在NVidia和ATI的浮点型帧缓存中。Half数据类型是一种IEEE-754浮点表示法的16比特的逻辑缩写,也被称作为“S5E10”格式,全拼为“Sign plus 5 exponent plus 10 mantissa”,并且这种格式有时也会出现在计算机图形硬件开发者的社区中。(OpenEXR也支持标准IEEE 32比特/分量格式,和皮克斯所介绍的24比特/分量格式,如“更高分辨率编码”小节中所讨论的。)

        由于能够表达负数的基色值,OpenEXR格式可以覆盖大约10.7阶量级的可见色域,并且带有0.1%的精度。考虑到人类能够同时看到最多4阶量级,所以OpenEXR格式在档案图像存储领域是一个很好的候选标准。尽管其基本编码是48比特/像素,但是对照LogLuv和RGBE格式的32比特,当应用于多重混合和误差可能累积的操作时,它的附加的精度是不错的。如果编码能够覆盖一个更大的动态范围,那就更好了。不过,只要曝光不是太极端,10.7阶量级对于大多数情况都是足够的。OpenEXR格式特别提供的额外的好处是,对于额外的通道,其可以用于alpha、景深或光谱采样。对于高端合成以及一些需要支持TIFF图像的非标准图层应用而言,这种灵活性是关键的。

        对于高质量图像处理,OpenEXR格式有着明显的优势,并且直接被当今的高端图像卡所支持。ILM提供了优秀的免费库,并且给出了大多数通常文件变体的复杂性。

  • 微软/惠普的scRGB编码

        针对HDR图像表达,微软和惠普已经提出了一种编码格式,并且同意将其作为IEC标准(61966-2-2),其通用格式被称作scRGB(正式名称为sRGB64)。该标准出自由惠普和微软所开发sRGB特性。本质上,它是一个24比特sRGB的逻辑扩展,使用线性编码,每种基色16比特;或者,使用伽马编码,每种基色12比特。

        scRGB标准包含两部分,一部分为采用48比特/像素的RGB编码;另一部分为采用36比特/像素的RGB或者YCC编码。在48比特/像素的子标准中,scRGB规定了对于每种基色的线性斜率。存在争议的是,一个线性斜率是否能够简化图形硬件和图像处理操作。然而,线性编码的精度消耗大部分集中在高亮部分,该区域中,对于邻近的编码值,人眼仅能够检测到很小的差异。低亮区域的精度消耗同样如此。该格式的有效的动态范围仅仅大约3.5阶量级,并不是真正地适合人类的感知点,且对于HDR环境的映射也是十分有限的 [2] 。该标准中允许负数的基色值,作为一种超越早期的RGB标准的改进,但是这也造成了容量使用上的浪费,使用范围中的很多区域被用于表达假定的颜色,这些颜色已经超出了可视色域范围,特别是在人类的颜色感知已经下降的暗场区域。在其动态范围的顶端,人们可以更清楚地看到颜色,当基色被设定到最大表达值时,会发生色域崩溃。如图4所示,可见色域的覆盖百分比取决于scRGB子格式和与其相对的编码亮度。比较24比特LogLuv和sRGB,点图覆盖了可用的scRGB亮度范围,该范围比sRGB大,而比24比特LogLuv小。scRGB是一种超越sRGB的改进版本,但是它不能够在更高的亮度等级表达全色域。在对比图中,更为紧凑的LogLuv 24比特编码覆盖了全范围的可见色域。

图4. scRGB 48比特、36比特子格式、24比特LogLuv和sRGB的覆盖色域对比

        scRGB标准的第二部分提出了一个更为明智且紧凑的36比特/像素“非线性”规格,其采用标准伽马编码在零点附近带有线性的斜率部分。尽管它使用少于25%的比特位,却具有接近48比特版本的动态范围,并且也允许负数的基色值。在顶端和底端的不可用的颜色区域,它同样存在色域崩塌的问题。但是总的来说,它是一种更好的编码。scYCC-nl编码会好于scRGB-nl子标准,其得益于具有独立的亮度通道,且在顶端的颜色空间没有快速崩溃。然而,会产生一些奇怪行为,如最大亮度的表示值不是白色,而是会产生局部的饱和颜色环绕在白色的周边。这是由于蓝色和红色的色度通道,Cb和Cr,影响到最终的亮度,因此Cb和Cr非零处的颜色值可能是更亮的。例如,易见的结果是彩色的光源可能变得过饱和而不是欠饱和,对应于在标准色域中褪色为亮粉色,如图5所示。在大多数情况下,这是一个不被期望的结果,因此,在对scYCC-nl应用色域映射时需要倍加小心。

图5. 使用scYCC-nl编码的色域异常现象。左图为对于原始HDR图像的线性色调映射;右图为简单地转换到scYCC-nl色域的效果。

奇怪的染色结果来自于scYCC-nl中的最大表示亮度不是白色。

        对于这一问题,scRGB标准的解释并不清楚。微软正在推进一个关于该标准的保密的变体,以用于数码相机、图像卡和他们的Longhorn引擎,代号命名为“Avalon”(2003年10月的微软开发者大会)。在数码相机的应用情况下,唯一有竞争性的高分辨率标准是所谓的“RAW”图像格式,其不仅仅是厂商特性,同时也是相机模型特性。站在使用者和软件维护者的立场上,这是很不幸的。另一方面,现代的图像卡已经采用了Half浮点数据类型,被用于OpenEXR和两家首屈一指的厂商NVidia和ATI,并围绕其设计开发芯片产品。对于图像处理软件,采用48比特整数RGB格式的唯一好处在于色域扩展,来自于动态范围的损失。当48比特的RGB像素使用标准的2.2伽马编码来构建常规TIFF图像时,需要至少5.4阶量级,尽管像Photoshop CS这种应用当前也没有设计出使用这一范围的最优化方法。图像处理可能在内存中使用32比特IEEE浮点型,而scRGB标准仅对于文件存储是有用的。然而,scRGB和scRGB-nl/scYCC-nl所掌控的动态范围比任何为此目的而讨论的其它格式都要少。希望微软正在推进的秘密变体会是一种实质性的改善,能够超越其IEC标准。


HDR编码比较


        以下表格汇总之前章节的信息,表格第一行展示了24比特sRGB的信息,当然其并不是高动态范围,但是作为一个参考基准列在此处。Bits/pixel为不包含alpha信息的三基色表示法。Dynamic Range以量级阶数的形式加以衡量,或者表示为最大最小值的比例(括号内)。对于像scRGB一样的非对数编码,动态范围是难以确定的,因为其相对误差不是贯穿整个范围的常数。当步长太大而超出可用范围时,会选择5%作为截止门限。这是较为宽松的门限值,假设观察者能够识别2%左右的亮度变化,但是有些误差通常发生在图像的最暗区域,它们可能即便达到5%也不会被注意。具有相同的尺寸和范围的格式记录在同一行,如RGBE和XYZE。

表1. HDR编码信息对照表

        如表1所示,在具有最大动态范围和最少比特位的情况下,RGBE和XYZE是胜者,其中XYZE编码甚至覆盖了整个可见色域。然而,76阶量级是远超可用范围的,已经将其作为一个异常值在图6中标出。

图6. 全色域格式的开销(比特/像素)和收益(动态范围)关系

        图6清晰地展示出对数和浮点表示法要优于线性或伽马编码。24比特LogLuv格式掌控了更多的动态范围比36比特使用伽马编码的scRGB-nl格式,甚至超过了48比特的scRGB线性编码。32比特LogLuv格式掌控了10倍的动态范围相比于其它格式。EXR编码掌控了3倍的动态范围相比于同样为48比特的scRGB编码,并且具有所有格式中最高的精度。


图像结果


        对于实际图像会有什么样的不同结果呢?为了找出答案,我们收集了一系列的HDR图像,来自不同的格式的各个方面的内容,并且设置了从一种格式到另一种格式的转换,以便于看到编码误差的排序。我们通过三种来源获取图像:获取曝光序列直接合成IEEE浮点型TIFF(96比特/像素RGB)的RGBE格式的辐射率渲染图像,其他人获取的RGBE图像和ILM提供的EXR格式图像。对于每种形式,我们依照对应的格式输出图像并且再把它读回,然后进行像素对像素的比较。除非一个高动态范围是有效的,否则能够明显看到比较图像的问题。最好的方式是选择交互式的曝光且带有线性色调映射,然后比较原始的和重新编码的图像之前的差异。

        客观地讲,我们更愿意进行可视化的数字对比。对于颜色量化差异,CIE delta E*是通用的度量标准,但是当面对HDR输入时,我们再次遇到了困难。特别地,CIE度量标准假定一个全局的白色参考值,其制造类似于在纸上的感觉,而不是一个场景最亮到最暗区域,其可能跨越10000:1的动态范围。图像中的大多数是最亮区域,剩余的像素记录作为“一个相似的黑色阴影”,至少CIE 1994是这样解释的。为了应对这一问题,我们决定在试验中应用“局部参考白色”,将当前测试位置的50个像素以内的最大值定义为局部最亮。参考CIE 1994公式准则,这个最亮像素的亮度和全局的白色参考点一起被采用作为最终的参考白色。这并不是一个完美的解决方案,并且有人可能会争论关于选择如此的一个最大值的合适距离。

        我们所遇到的另一个问题是对于期望对比的格式进行动态范围的优化。尤其对于LogLuv24和scRGB-nl格式,限定可用的动态范围意味着在顶端和底端需要缩放原始图像到最小损失。而不是以不同的缩放因子优化令其快速下降到每种格式的范围,基于最多约束的目的,为每幅原始图像选择一个缩放因子。为了找到每个因子,我们测试原始图像的直方图并且在scRGB-nl的6.2:0.0039范围内判定缩放因子所能够给予的最大像素种群。然后,这个因子被用于每种格式转换,以简化测量差异。我们预测此方案会使得LogLuv24的结果看起来更糟,但是对于其它编码却没有影响。

        如图7a所示,Memorial Church图像通过色调映射转换到合适的标准sRGB范围内。图7b所示,相同的图像通过24比特LogLuv编码后,不再能够包含所有的原始图像的动态范围。然而,这里的退化是很难被观察到的,因为压缩整个范围到一个更小的目标空间,24比特sRGB。为了实际观察LogLuv24编码的效果,必须缩放图像的最亮区域,“彩色玻璃窗口”,并且局部地使用线性算子进行重映射,如图8所示。

图7. Stanford Memorial Church,左图为原始图像,色调映射到可打印的范围;右图在色调映射前执行24比特LogLuv编码。

图8. 使用线性色调映射的图像最亮区域的特写镜头。左图为原图像,右图为使用24比特LogLuv编码。在这里我们能够看到当使用此种编码扩展动态范围时有信息损失发生。

        通过数字化的差异度量标准的应用,能够更容易地确认问题区域。如图9所示,使用差异化度量标准比较原图像与使用24比特LogLuv编码的图像。该伪彩色图像明显地高亮标出了在窗户中的差异部分,无须进行多尺度颜色缩放和视觉比较。在左下角给出了相对于图像颜色缩放的delta E*值。等于1的delta E*值对应到人眼颜色辨别门限,等于2的delta E*值通常表示对于临近颜色斑块为可见的,并且等于5或更大的delta E*值可能毫不费力的就可以在并排的图像中辨识。如图所见,在图像中最亮的窗户包含了大于12的delta E*值,以说明差异是高度可见的。

图9. 改动的1994 CIE delta E*度量标准展示了预期中24比特LogLuv编码所引起的可视化差异

        图10和图11分别展示了32比特LogLuv编码和48比特scRGB编码使用差异化度量标准的特写镜头。

图10. 通过32比特LogLuv编码,Memorial Church图像的损失非常小,如颜色差异分析和右侧的细节中所看到的。(伪彩色缩放对于所有图像都是一样的。)

图11. 使用48比特scRGB像素格式编码Memorial Church图像时,出现了明显的细节损失,右图中的细节显示仅仅很少的原始动态范围被保留下来。

        针对33幅原始图像使用8种不同的HDR编码方法,我们已经展现了相类似的分析过程。尽管其可能会有所启发,但是这一过程依然是单调乏味的,贯穿所有测试图像,并且对比视觉上的结果差异,对于每种算法向上或向下调整其可能的曝光范围。将这些信息以曲线的形式展现,如图12所示。

图12. 针对指定的delta E*值,Memorial Church图像使用每种编码的像素百分比结果

        这一理想的编码行为导致曲线的大幅度下降,在CIE delta E*轴对于任何超过2的情况,将会得到一个非常小的百分比。确实,针对这一行为,EXR格式的曲线显示在颜色保真度方面其具有明显地优势。这并不奇怪,由于EXR格式使用48比特/像素,并且具有所有算法中最小的步长,以覆盖其可用范围。对于48比特scRGB格式不会发生相同的状况,在对比数据中,其表现是很糟糕的,甚至在可感知的差异方面,比轻量级的24比特/像素LogLuv编码还要差。


试验结果汇总


        图13展示了测试中所使用的图片序列,测试结果总结如表2所示。在表中,通过使用不同的颜色来区分结果的差异,我们自认为已经给出了一个公正的性能好坏的测量,针对一种指定的编码方法与HDR图像。

图13. 测试图像序列

        让我们看一下表2中的第一行结果,对于24比特LogLuv编码,Apartment图像中6.92%的像素具有大于等于2的delta E*值,这意味着在理想情况下能够从它们的原始值中分辨出这些像素。这是否重要,取决于你的应用重点是什么。如果小的颜色差异是可接受的,我们可能不在意低门限。然而,表格数据也说明了0.31%的像素值具有大于等于5的delta E*值,这意味着它们在并排图像中就能够看到差异。这是更为重要的值,然而,除非这些像素都集中在图像中的重要区域,否则可能也不会被注意到,因为其仅是整体中的一小部分。一般来说,当超过2%的像素有大于等于5的delta E*值时,才是真正值得注意的,这意味着图像中所关注区域的颜色存在着与原图像明显的不同。这些条目在表中被高亮标出。对于关键的点也会被考虑到,当delta E*值在2以上,且超过图像的5%,我们已经用黄色高亮标出了这些条目。



表2. 图像编码差异结果汇总

        我们所能够提供的最好的总结如图14所示。在这张图里,包含了我们对于每一种编码的测试结果数据,取33幅图像结果的加权平均值,该图展示了每种编码的平均行为。如图12和在表2中的数据结果,48比特/像素OpenEXR格式是明显的赢家,展现了非常高的精度,对于所有的测试图像。令人惊讶的是,32比特RGBE位列第二,表现一贯地好,尽管其无法记录色域外的颜色。这可能不是一个公正的测试,源于我们假设所使用的原图像中没有包含超出标准CCIR-709色域的颜色。然而,与RGBE性能十分接近的是XYZE,其能够记录色域外的颜色。正如预期,在测试中,32比特LogLuv编码表现的非常好,罕见地仅仅在非常暗的区域超越了2的delta E*值。在我们的大多数试验中,这种编码没有像其它方法一样保持很小的误差,但是它总是有快速剧烈地下降达到0.00%在等于1.5的delta E*值时。相比之下,其它的32比特格式,RGBE和XYZE,偶尔留下一些小的像素百分比带有可见的误差。这是由于RGBE和XYZE并没有在其编码中采用一个可感知的颜色空间,因此我们以可感知的显著步长来覆盖某个颜色范围。

图14. 不同HDR编码的性能总结

        最令人失望的是48比特scRGBA,以及36比特scRGB-nl和scYCC-nl编码,与它们的前辈(如32比特/像素的RGBE、XYZE和LogLuv)相比,这些方法表现出了更糟糕的性能。我们应该注意到,实际上scRGBA格式在颜色上展示了非常高的精准度。然而,因为我们的许多图像不适合3.5阶量级以内的编码,曲线的尾部持续超出越过delta E*值的情况,且很容易看到不同点。一旦一种HDR格式的表达目的是精准地重现这些像素,在我们看来,作为中等动态范围编码,scRGB、scRGB-nl和scYCC-nl格式可能是更为经典的,连同LogLuv TIFF的24比特变体。


结论


        对于高动态范围图像有许多的应用,并且存在足够多样的合适的格式以支持大多数的工作内容。原始的Radiance RGB格式与其XYZE变体覆盖了一个巨大的动态范围(76阶量级)且具有适度的亮度精度(1%)。TIFF 32-bit LogLuv格式覆盖了一半的范围,且具有其两倍以上的精度。相比之下,48-bit ILM EXR格式覆盖了LogLuv范围的三分之一,且具有三倍的精度。这些格式中的每一种都已经使用多年,并且被验证是稳定可靠的。合适的选择取决于关于范围、精度和颜色空间的灵活性各个方面的特别的应用需求。

        与此相反,对于HDR图像编码,用于扩展色域的新IEC标准(61966-2-2)似乎是一个不好的选择。考虑到所需要消耗的比特位数,对比其它的HDR标准,这种格式提供了较低的分辨率和范围,并且不建议使用该标准。我们希望微软将会提供对于scRGBA编码的改进标准,或者抛弃它通过提供一个新的解决方案。

        对于HDR图像,有损压缩格式领域也做了很多的工作。这是数码摄影和数码相机所特别需要的,其图像的比特率是一个重要的实践的考虑点。我们不可能简单地提供48或24比特为每个像素值使用,我们需要压缩数据以便于存储和传输时不会耗尽资源,并且愿意承受这些数据损失,当其能够在大多数情况下保证损失是不可见的情况下。

        就像我们一开始说的,像素编码和图像封装在很大程度上是不同的问题,但是它们又不是完全分开的。一些颜色编码方法优于很多压缩方法。许多压缩算法得益于分离每个像素颜色到一个亮度通道和一个对立的色度。这是理想的,在YCC编码后面被使用在JPEG中,和NTSC视频标准一样,这也是下采样色度通道以优先传输。ILM已经试验了一个对立的颜色空间,具有下采样功能,且被包含在OpenEXR中作为一个可选项。LogLuv编码完美地匹配了JPEG压缩类型,由于CIE坐标对于对立的色度对仅需要进行必要的偏移。我们希望在JPEG 2000的未来版本中看到如此的编码形式,能够为其颜色通道提供一个原始位长的选项。


参考文献


[1] Bogart, R., Kainz, F., Hess, D., 2003. “The OpenEXR FileFormat,” Siggraph 2003

Technical Sketch. (See also www.openexr.com.)

[2] Debevec, P. 1998. “Rendering Synthetic Objects into RealScenes: Bridging Traditional

and Image-Based Graphics with Global Illumination and High DynamicRange Photography.” In

Proceedings of ACM SIGGRAPH 1998, 189-198.

[3] Dutre, P., Bekaert, P., Bala, K., 2003. Advanced GlobalIllumination, AK Peters.

[4] M.D. Fairchild and G.M. Johnson, “The iCAM framework for image

appearance, image differences, and image quality,” Journal ofElectronic Imaging, 2004.

[5] Larson, G.W. and Shakespeare, R., 1997. Rendering withRadiance:

The Art and Science of Lighting Visualisation, Morgan Kaufmann Publishers.

[6] Larson, G.W., 1998. “Overcoming Gamut and Dynamic RangeLimitations in Digital

Images.” Proc. of IS&T 6th Color Imaging Conf.

[7] Larson, G.W., 1998. “LogLuv encoding for full-gamut,high-dynamic range images,”

Journal of Graphics Tools, 3(1):15-31 1998.

[8] Leffler, Samuel, 2003. “LibTIFF – TIFF Library and Utilities,”remotesensing.org/libtiff

[9] Poynton, Charles, 2004. Digital Video and HDTV

Algorithms and Interfaces, Morgan Kaufmann Publishers. (See also www.poynton.com.)

[10] Stokes, M., Anderson, M., Chandrasekar, S., and Motta, R. A1996. Standard Default

Color Space for the Internet. www.w3.org/Graphics/Color/sRGB.

[11] Thomas, S., 2004. “The Utah Raster Toolkit,” www.cs.utah.edu/gdc/projects/urt/

[12] Ward, G. 1991. Real Pixels. In Graphics Gems II,edited by James Arvo, Academic

Press, 80-83.

[13] Ward, G. 1994. “The RADIANCE Lighting Simulation andRendering System.” In

Proceedings of ACM SIGGRAPH 1994, ACM Press / ACM SIGGRAPH, NewYork. Computer

Graphics Proceedings, Annual Conference Series, ACM, 459-472. (Seealso

http://radsite.lbl.gov/radiance/ and http://www.radiance-online.org/.)
阅读全文
0 0