OpenEXR
OpenEXR,或简称为exr格式,是一种开放标准的高动态范围图像格式,在计算机图形学里被广泛用于存储图像数据,但也可以存储一些后期合成处理所需的数据。OpenEXR最早由工业光魔开发,并在一个类似BSD许可证的自由软件许可证下发布,其发布的软件包里带有一些处理exr图像格式的工具。[2]
扩展名 |
.exr |
---|---|
互联网媒体类型 | image/x-exr |
统一类型标识 | com.ilm.openexr-image[1] |
开发者 | 工业光魔 |
首次发布 | 1999年 |
最新版本 | 3.2.3 2024年3月7日 |
格式类型 | 高动态范围图像 |
自由格式? | 是,BSD许可证修改版 |
网站 | www |
最早使用OpenEXR格式的电影,是哈利·波特与魔法石,从那以后,OpenEXR成了工业光魔主要使用的图像文件格式,工业光魔所有正在制作的影片都用到了这个图像格式。[3]
OpenEXR的多级分辨率和任意数据通道存储使其非常适合用于合成,它能把高光(specular)、漫射(diffuse)、阴影、Alpha通道、RGB、法线和其他对后期合成有用的数据存储于一个文件里,如果对三维渲染出来的图像画面高光或漫射不满意,合成师可以根据导演要求在合成软件里对指定的通道进行调整。
OpenEXR特性
可存储比常规的8位和10位图像格式更高的动态范围和颜色精度。 支持16位浮点数、32位浮点数和32位整数的像素颜色值。16位浮点数格式,工业光魔称之为半浮点数,它表示的颜色数值,由一个符号位,五个指数位和十个浮点数位组成,这使其能存储超过30级曝光的动态图像亮度范围,它和英伟达的Cg语言的半浮点数类型兼容,并且他们最新的GeForce FX和Quadro FX 3D图形卡也内置支持exr格式。
OpenEXR支持多种无损和有损图像压缩算法,一些内置的编码,在压缩带有胶片颗粒的图像时,能达到2:1的无损压缩率。
支持的压缩算法
OpenEXR内置三种无损压缩算法,包括两种不同的zip压缩算法,对于没有很多噪点的图像,这两种zip压缩方法最有效,而PIZ压缩算法则更适合于噪点较多的图像,渲染exr格式图像时通常有以下压缩选项:
- None
- 无压缩。
- RLE
- 这是一种和TGA图像格式的标准压缩算法相似的一种压缩算法。
- zip(单行)
- 对单行像素信息使用zip方式的压缩。
- zip(16行像素块)
- 这是对16行像素块进行的zip方式压缩,对胶片噪点不多的计算机绘制图像是最有效的压缩算法。
- PIZ(小波压缩)
- 这是一种新的结合小波和霍夫曼编码的压缩算法,对噪点比较多的图像最为有效。
- PXR24(24位数据转换后再进行zip压缩)
- 这个来自皮克斯的压缩算法,先把数据转换为24位,再进行zip压缩,它对于16位和32位整数值数据是无损的,但对于32位浮点数据则有轻微损失。
- B44
- 这对半浮点数数据是有损的,对32位浮点数据则不进行压缩。
- B44A
- 对相同颜色的区域进行进一步压缩,是对B44的扩展,常规B44压缩则无视图像的内容。
可扩展,通过扩展exr的C++类,可以支持新的压缩编码和图像类型;新的图像属性(字符串、矢量、整数等),可添加到exr图像的文件头里,而不破坏已有软件包的兼容性。
要了解OpenEXR的完整技术信息,请参阅openexr.org网站的技术文档。[4]
OpenEXR源码组件
OpenEXR发布的源码里,包括以下几个部分:
- IlmImf,一个读写exr图像的程序库;
- Half,一个C++类,可以像操作其他C++内置数据类型那样,操作半浮点数值;
- Imath,一个数学程序库,支持矩阵,二维和三维变换,线性、二次和三次方程组求解等;
- exrdisplay,一个显示exr图像的示例程序。
历史
OpenEXR由工业光魔于2000年开发,并于2003年公开发布。[5]
2012年6月18日,第一个公开测试版OpenEXR 2.0发布,引入了深度数据支持,并支持把多个独立但相关的图像存储在单个文件里,并且可以单独读取各部分。[6]
2013年4月9日,工业光魔和维塔数码一起发布了OpenEXR 2.0版。除了测试版引入的新功能外,OpenEXR 2.0还引入了名字空间支持,以避免不同软件包不同文件版本之间的冲突。有多家公司对这个版本的OpenEXR做出了贡献,皮克斯在微软公共许可证下贡献出了他们的DtexToExr转换工具代码,排除了可能的专利争议;Autodesk为实时后期制作流程提供了优化。[7]
参考资料
- ^ CGImageSource.SupportedTypes. Claris FileMaker MBS Plug-in. MonkeyBread Software. [2024-03-10]. (原始内容存档于2020-12-30).
- ^ OpenEXR许可证, openexr.com, [2013-01-15], (原始内容存档于2012-07-22)
- ^ OpenEXR官网, openexr.com, [2013-01-15], (原始内容存档于2013-01-16)
- ^ OpenEXR文档, openexr.com, [2013-01-15], (原始内容存档于2013-05-08)
- ^ OpenEXR历史 (邮件列表). openexr.com. [2013-01-15]. (原始内容存档于2013-05-08).
- ^ Stanczyk, Piotr. OpenEXR v2 news. openexr-devel (邮件列表). 18 June 2012 [2013-01-15]. (原始内容存档于2014-04-20).
- ^ OpenEXR 2.0发布. 9 April 2013 [2013-01-15]. (原始内容存档于2013-01-16).