高动态范围图像的原理与应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
高动态范围图像原理与应用
摘要:主要阐述了高动态范围图像的概念、编码方式、合成方式、合成原理以及显示方式。关键字:高动态范围图像、HDR
第一章概要
1.1数字图像成像
传统胶片成像过程是基于光化学理论。在相机拍摄时,光线通过相机镜头到达胶片的感光晶体卤化银上,引起胶片的光学密度发生变化,曝光量越大,光学密度越小,呈现非线性关系。再经过扫描、数字化等非线性处理转换成数字图像。与胶片成像不同,现在普遍使用的数码相机是利用影像传感器(一般是CCD和CMOS)把接收到的光信号通过图像传感器上的光敏单元离散成正比于曝光量的成千上万个像素点,并转换成模拟电压信号,再经过模拟/数字转换处理后变成数字信号,最后经过微处理器的非线性运算转换成图像的标准存储格式如BMP、JPEG、TIFF等存储在物理介质上(如图1-1所示)。
图1-1数字图像成像流程
图1-1描述了典型的现代数码相机成像的流程。流程图中一系列的转换过程可是
看作非线性的映射关系,最后形成了每通道8位表示的图像。
1.2数字图像中的动态范围
动态范围(Dynamic Range)在很多领域用来表示某个变量最大值与最小值的比率。在数字图像中,动态范围也被称为对比度,表示了在图像可显示得范围内最大灰度值和最小灰度值之间的比率。对真实世界中的自然在场景来说,动态范围代表了最亮的光照亮度和最暗光照亮度的比。目前大部分的彩色数字图像中,R、G、B各通道分别使用一个字节8位来存储,也就是说,各通道的表示范围是0~255灰度级,这里的0~255就是图像的动态范围。
由于真实世界中同一场景中动态范围变化很大,我们称之为高动态范围(high dynamic range, HDR),相对的普通图片上的动态范围为低动态范围(low dynamic range,LDR)。
数码相机的成像过程实际上就是真实世界的高动态范围到相片的低动态范围的映射。这往往是一个非线性的过程(图1-2)。
图1-2动态范围映射
1.3高动态范围图像获取方式及其编码方式
传统数字图像各通道256个等级灰度所表示的色差范围十分有限。高动态范围图像(HDRI)是一种可以表示实际场景中亮度大范围变化的图像类型,因此,可以更好地表示场景中亮区和暗区的光学特性。高动态范围图像所要表示的像素值范围通常很大,有时候需要达到数十万,甚至数百万。高动态范围图像每个颜色通道需要比传统图像更多的数据位,这是因为它的线性编码以及需要表示从到人眼可见亮度范围甚至是更大范围的数值。经常使用16位“half precision”或者32位浮点数表示高动态范围像素。但是,如果使用合适的传递函数进行变换,一些应用中的高动态范围像素可以用10-12位表示亮度,用8位表示色度,
并且不会带来任何可见的量化误差。
HDR图像的获取方法主要有三类:第一类是模拟光线和基于物理光照模型的合成图像,早期HDR图像的来源主要是这一类;第二类是用多张不同曝光度的普通地动态范围图像(LDRI)来计算高动态的实际亮度,得到HDR图像(多次曝光法、多靶面曝光合成);第三类是用特殊的硬件设备来直接拍摄HDR图像。第一类都是人工合成的图像,不能处理自然图像,第三类方法需要特殊的设备,而第二类只需要普通相机拍摄的几张不同曝光量的图像就可以合成HDR图像,因此具有较好的应用价值。
关于HDR图像的一个很重要的方面是如何表示以及存储它。不同于传统24位的RGB 图像,高动态范围图像存储要复杂的多,其中一个需要考虑的问题是如何减少磁盘空间的占用并能表示高动态范围。目前已经有一些存储HDR图像的文件格式被开发出来,主要有HDR 格式,TIFF格式,EXR格式。
HDR格式的图像(.hdr,.pic,.rad)也叫照度格式(radiance format),它包含了一段ASCII文件头、一个表示图像大小的字符串以及通过游程编码处理的图像数据。对于每个像素点,一般采用RGBE编码(下图1-5所示)共32比特表示。
1)RGBE编码
RGBE使用4个字节表示一个像素,其中3个8位的字节分别表示RGB分量,1个8位字节表示指数值,此指数值用作其他3个线性色彩值的缩放比例系数。
图1-3 RGBE编码
RGBE编码表示的各分量(E、Rm、Gm、Bm)可以通过真实的高动态值按如下规则转换得来:
(1-1)
(1-2)
(1-3)
(1-4)
其中、、分别表示高动态的RGB分量。这种方式表示的HDR图像其动态范围往往
可以达到70多个量级。存在的问题:由于它能够代表的动态范围过大,从而明亮的日光到夜晚星光下岩石的背光面之间的动态范围才12级,因此会有许多浪费;其次,此编码方式中的RGB权值仅为正值,不能有效覆盖全部的可见光范围;最后,这种编码的误差分布不均匀,表现饱和的蓝色和紫色时尤为明显。
2)OpenEXR编码
OpenEXR是专门为好莱坞电影进行特效制作的工业光魔公司内部格式。OpenEXR的文件扩展名为.exr,采用的是一种与IEEE浮点类型相似的16位半浮点类型。OpenEXR库同时也
支持全32位浮点类型和24位浮点类型。
图1-4 OpenEXR的半浮点类型编码
下式式从编码的半浮点数进行转换的公式,其中:S代表符号位,E代表指数(0~31),M位小数部分:
由于OpenEXR中可以表示正负值,因此他涵盖了全部的可见光范围,并具有10.7的动态范围值,相对精度达0.1%。虽然动态范围不是很高,但对于大多数的运用已经足够了,OpenEXR格式被目前许多高端的图形卡所支持。
3)TIFF编码
TIFF编码的初衷是基于对RGBE编码进行改进,以获得一种工业标准的HDR标准。该编码的思想基础是基于人类视觉的生理基础,吧图像数据量化步长值控制在人类视觉的生理基础,把图像数据量化步长控制在人眼辨别色彩和亮度变化的域限以下,使人眼能够得到连续光滑过度的图像质量。TIFF编码将亮度通道(L)和色度通道(u,v)分开,对亮度采用对数编码,从而达到理想结果。这里的u,v是指国际发光照明委员会推出的CIE国际标准颜色系统的坐标值,可以通过一个3*3的矩阵进行CIEXYZ和RGB互算。
TIFF编码有两种版本:24位和32位。24位编码用24位色彩表示分为连个部分:一个10位的对数亮度值和一个14位的CIEuv查表值,亮度值可以用下式计算:
式中,为物理亮度级别,范围0.00015~15.9。
剩下的14位表示色度值(u,v)可以通过查表方式得到色彩值。这种表达方法可以在满足肉眼观察的基础上达到4.8级的动态范围。