高动态范围成像

维基百科,自由的百科全书
跳转至: 导航搜索
纽约中央公园的HDR图像

计算机图形学电影摄影术中,高动态范围成像英语High Dynamic Range Imaging,简称HDRIHDR)是用来实现比普通数位图像技术更大曝光动态范围(即更大的明暗差别)的一组技术。高动态范围成像的目的就是要正确地表示真实世界中从太阳光直射到最暗的阴影这样大的范围亮度。

高动态范围成像最初只用于纯粹由计算机生成的图像。后来,人们开发出了一些从不同曝光范围照片中生成高动态范围图像的方法。随着数码相机的日渐流行以及桌面软件变得易于使用,许多业余摄影师使用高动态范围成像的方法生成高动态范围场景的照片,但是,不要将这作为它唯一的用途,实际上高动态范围还有许多其它的应用。

当用于显示的时候,高动态范围图像经常要进行色调映射,并且要与其它几种全屏显示效果(full screen effect)一起使用。

历史[编辑]

在计算机图形学中开创高动态范围成像的先驱是Paul Debevec,据说Debevec是第一个使用高动态范围成像图生成计算机图像以逼真地对计算机图形物体进行照明与动画处理。[來源請求]人们普遍认为Gregory Ward是高动态范围成像文件格式的奠基人。[來源請求]

与传统数字图像的比较[编辑]

通常保存在高动态范围图像中的信息对应于真实世界可以观察到的亮度(luminance)或者radiance值,这与传统的数字图像保存的在显示器或者打印纸上显示的颜色不同。所以,高动态范围图像格式也经常成为“与场景相关”,以区别于传统的“与设备相关”或者“与输出相关”的数字图像。另外,传统图像通常经常针对人类视觉系统进行编码(最大化保存在固定数据位中的可视信息),这些编码通常称作“伽玛编码”或者“gamma校正”。保存在高动态范围图像中的数据经常是线性的,这就意味着它们表示亮度或者radiance的相对或者绝对值(gamma 1.0)。

高动态范围图像每个颜色通道需要比传统图像更多的数据位,这是因为它的线性编码以及需要表示从10^{-4}10^8人眼可见亮度范围甚至是更大范围的数值。经常使用16位“half precision”或者32位浮点数表示高动态范围像素。但是,如果使用合适的传递函数进行变换,一些应用中的高动态范围像素可以用10-12位表示亮度,用8位表示色度,并且不会带来任何可见的量化误差[1][2]

图像来源[编辑]

高动态范围图像最初使用不同的渲染工具生成,其中著名的一个是Radiance。由于所使用单位都是基于如/球面度/2这样的实际物理单位,所以这种方法可以实现更加逼真的模型场景表现。这种方法可以模拟真实场景的光照,以及利用这个结果选择照明(假设几何形状、照明以及材料都是真实场景的精确表现)。

在1997年的SIGGRAPH上,Paul Debevec提交了题为“从照片中恢复高动态范围辐射图”的论文。这篇论文描述了按照不同的曝光设置对同一个场景进行拍照,然后将这些采用不同曝光的照片组合成高动态范围图像。这种高动态范围图像可以捕捉从黑暗的阴影到亮光源或者高反光的更大动态范围的场景。

在SIGGRAPH '98一年之后,Debevec又提交了一篇论文“将人造物体渲染成真实场景:沟通基于图像的传统图形与全局照明以及高动态范围照片”。在这篇论文中,他使用以前的技术对光滑的铬球照相以生成他所称作的“light probe”,即本质上的高动态范围环境图。然后将这个light probe用于合成场景的渲染。与普通的环境图简单地提供反射或者折射信息不同,light probe还提供了场景中的照明,实际上,这是唯一的光源。这种方法实现了一种前所未有的真实感效果,为整体照明模型提供了真实世界的照明数据。

色调映射[编辑]

在查看高动态范围图像的时候经总是会遇到一个问题,CRT、LCD、打印机以及其它图像显示方法只能显示有限动态范围的图像。[來源請求]因此,人们开发了各种将高动态范围图像“转换”成可以查看的图像的方法,这些方法统称为“色调映射”。

早期的色调映射非常简单,这些方法设置一个动态范围窗口,按照最大值、最小值对图像进行裁剪。最近出现的方法试图显示更大的动态范围,一些更加复杂的方法已经在研究人眼及视神经感知场景的机制,并且争取在保持真实的颜色与对比度前提下显示全部的动态范围。

例子[编辑]

一些图像实例可以用来帮助说明高动态范围成像的用途。下面的实例所用的图片是用Uffizi图库中著名的Paul Debevec光探头在Radiance中渲染生成。

曝光[编辑]

同一幅图像的三种不同曝光效果

在将高动态范围图像通过色调映射生成用于显示的低动态范围图像的过程中,通过调整曝光展示了高动态范围图像。中间的曝光是所期望的曝光,也最有可能是场景正常显示的效果。左侧较暗图像使用光圈4曝光,只能显示天空较亮云彩的一些细节。右侧较亮图像使用光圈3曝光,可以显示场景中较暗的部分。

高动态范围成像的最终效果图

模糊[编辑]

这里的高斯模糊展示了高动态范围图像中超出取值范围的数值也是有用的,即使它们在转换成低动态范围图像的时候通常都要被裁掉。左侧图像是原始图像首先经过色调映射成的低动态范围版本,然后在GIMP中进行模糊得到,右侧的图像是原始高动态范围图像在pgblur中进行模糊,然后经过色调映射得到。

尽管两幅图像非常相似,但是明显的区别就是光滑铬球上的高亮光部分。在原始的高动态范围图像中,这些像素都有非常大的亮度值。当图像模糊的时候,周围的像素亮度被“拉高”并且在色度映射时裁剪成最大值,当然高亮像素的亮度也会被周围像素“拉低”,但是它们的亮度非常高所以在色度映射的时候仍然要超出最大值。这样的结果就是更大的区域变成了白色。

但是对于低动态范围模糊来说,高亮区域的像素在模糊处理之前已经裁剪成了最大值,这就从总体上大幅度地降低了亮度值。因此,在模糊处理之后,光亮区域周围的像素将不再有非常高的亮度,即使是高亮区域内的像素也由于周围像素的影响而被拉低。这样高亮区域就变得比较模糊,看起来不再非常明亮。

对于常见的動態模糊也是同样的结果。

其他例子[编辑]

参考文献[编辑]

  1. ^ "High Dynamic Range Image Encodings" by Greg Ward, Anyhere Software
  2. ^ "Perception-motivated High Dynamic Range Video Encoding" from Informatik

参见[编辑]

外部链接[编辑]


摄影[编辑]

高动态范围显示[编辑]

Studio rendering:

On rendering[编辑]