这一篇重点介绍了DNG规范和TIFF规范中不太一样的一些标签,有对TIFF标签系统的扩展,也有相同标签用法不同的地方。
一、NewSubFileType标签
这个标签用于标记DNG文件中图像样本的分辨率等级。
在DNG规范的1.2.0.0版本之前,如要存储完整分辨率的RAW图像,NewSubFileType标签的值需设置为0,而由RAW图像生成的预览或低分辨率版本需要将该值设置为1。
在DNG 1.2.0.0规范中允许给这个标签赋予一个新的值——10001.H。10001.H这个值主要作用于副预览图像(主预览图以外的)。它允许在同一个DNG文档中存储多个生成预览(不仅仅是单次生成的多个不同尺寸预览,而是允许使用不同设置进行多次生成,每次生成的预览均能得以保存)。DNG读取软件在读取一个DNG文件时应默认显示NewSubFileType值为1的图像文件目录(IFD)中存储的图像预览,只有在用户发起请求时才显示副预览图像。
DNG 1.4.0.0规范在这个标签中也加入了两个合法的新值。存储完整分辨率RAW图像的透明度信息时需将NewSubFileType标签值设置为4。而存储RAW图像的预览或低分辨率版本的透明度信息则需将该值设置为5。
二、BitsPerSample标签
这个标签用于标记DNG文件中图像样本的位深信息,在每个图像样本中的取值范围为8到32位。
如果SamplePerPixel标签的值不为1的话,则DNG文件中每个图像样本的位深均应相同。如果BitsPerSample的值不等于8/16/32中的任一个,则需将TIFF标签中FillOrder的值设置为1(默认值),此种情况下,图像样本的位将按大端字节序(Big-Endian Byte Order)进行封装存储,即使TIFF文件本身是使用小端字节序(Little-Endian)存储的。
三、SampleFormat标签
这个标签用于标记图像样本的存储值类型。
DNG规范的1.4.0.0版本之前,通常将SampleFormat的值设置为默认值1(无符号整型)。
DNG 1.4.0.0规范允许给SampleFormat赋予3这个新值(IEEE浮点标准,IEEE754)。浮点形式存储的图像,其合法的BitsPerSample值应设置为16/24/32中的一个。
四、Compression标签
这个标签用于标记图像样本的压缩情况。
在1.4.0.0版本以前,DNG规范支持Compression标签的两种键值设置:
- 值为1时:图像数据未压缩。
- 值为7时:图像数据为按JPEG格式压缩,压缩方式可以是基线DCT形式(离散余弦变换,Discrete cosine transform),或无损JPEG压缩。
如果PhotometricInterpretation标签(用于设置光度表示方法)的值为6(即YCbCr色域的光度表示法),同时BitPerSample标签的值为8/8/8;或PhotometricInterpretation标签的值为1(即以0表示黑场,用于二值化图像或灰度图),且BitPerSample的值为8,则该图像的JPEG压缩方式为基线DCT形式。
对于其他情况,图像的JPEG压缩方式为无损哈夫曼压缩(Lossless Huffman JPEG)。
对于无损JPEG文件流,其内部图像的长、宽以及内容均不要求与区块带(Strip of Tile)相同,只需要确保全部样本数量相符即可。经CFA插值处理后的图像常常使用不同的长、宽和内容量,这样可以使JPEG压缩预测器在相似的颜色上起作用。
DNG 1.4.0.0规范加入了对以下两种压缩代码的支持:
- 值为8时:使用Deflate算法进行压缩(即zip压缩)
- 值为34892时:有损JPEG压缩(Lossy JPEG)
Deflate算法可用于浮点图像数据、32位整型图像数据以及透明度遮罩数据。
有损JPEG可用于线性RAW图像(Linear RAW,此时该图像所在的IFD的PhotometricInterpretation标签值也为34892)以及8位整型图像数据。这一新的设置值用于当图像文件的PhotometricInterpretation和BitsPerSample两个标签的键值按上述形式设置的时候,可以通知DNG读取软件使用有损JPEG解码器,而不是无损解码器。
五、Predictor标签
这个标签用于标记图像样本压缩时使用预测器的情况。
当图像文件目录(IFD)被设置为Deflate压缩时(Compression=8),Predictor标签可设置为下面这些值:
- 值为1时:无预测器。这种情况下在压缩过程中不适用预测器。
- 值为2时:水平差异模式(Horizontal Difference)。参见Adobe TIFF 6.0 Spec。
- 值为3时:浮点模式(Floating Point)。参见Adobe Photoshop TIFF Technical Note 3。
- 值为34892时:水平差异模式X2(Horizontal Difference X2)。大体和水平差异模式相同,除了在这种模式下使用的是左侧的第二个像素而不是第一个。
- 值为34893时:水平差异模式X4(Horizontal Difference X4)。大体和水平差异模式相同,除了在这种模式下使用的是左侧的第四个像素而不是第一个。
- 值为34894时:浮点模式X2(Floating Point X2)。大体和浮点模式相同,除了在这种模式下使用的是左侧的第二个像素而不是第一个。
- 值为34895时:浮点模式X4(Floating Point X4)。大体和浮点模式相同,除了在这种模式下使用的是左侧的第四个像素而不是第一个。
六、PhotometricInterpretation标签
这个标签用于标记图像样本的光度表示方法。
下面三个取值用于保存预览图或缩略图的图像文件目录(IFD):
- 值为1时:零值为黑模式(BlackIsZero)。即假设图像的色域为伽马2.2(Gamma 2.2),除非另外设置了PreviewColorSpace标签。
- 值为2时:RGB模式(RGB)。即假设图像的色域为sRGB,除非另外设置了PreviewColorSpace标签。
- 值为6时:YCbCr模式(YCbCr)。用于JPEG编码的预览图像。
下面两个取值用于保存RAW图像的图像文件目录(IFD),并且假设使用相机的原生色域: - 值为32803时:CFA滤镜模式(Color Filter Array)。
- 值为34892时:线性RAW图像模式(Linear RAW)。
CFA滤镜模式的详细介绍可参看TIFF/EP规范。要使用这个模式,必须在同一个IFD中使用CFARepeatPatternDim和CFAPattern标签。重复的CFA图样起点为ActiveArea所定义的有效图像矩形区域的左上角。
线性RAW图像模式用于不使用CFA(色彩滤镜阵列,即拜尔滤镜的插值模式)而能够直接捕获每个像素所有色彩信息的相机传感器,如适马旗下的Foveon X3传感器。不过这个模式也可以用于已经被去马赛克化(De-Mosaiced)的CFA图像数据。
即便RAW图像所在的IFD被设置为CFA滤镜模式,线性RAW图像模式依然可被用于其它低分辨率图像的IFD。
七、Orientation标签
这个标签用于标记图像样本的旋转方向。
Orientation标签在DNG文件中是必须的。由于这个标签的存在,浏览类软件可以在仅修改DNG文件的一个字节值的情况下进行无损的旋转图像操作。支持DNG读取的软件必须支持所有可能的旋转方向,包括镜像翻转。需要注意的是,TIFF/EP规范是不支持镜像翻转的,所以如果希望DNG文件同时兼容TIFF/EP规范和DNG规范,则不应在输出DNG文件时使用镜像翻转的设置。
参考文献:
-
Adobe官方对于DNG格式的介绍页:https://helpx.adobe.com/photoshop/digital-negative.html
-
Adobe官方对于TIFF格式的介绍页:https://www.adobe.io/open/standards/TIFF.html
-
Adobe DNG Spec 1.4.0.0:https://www.adobe.com/content/dam/acom/en/products/photoshop/pdfs/dng_spec_1.4.0.0.pdf
-
Adobe TIFF 6.0 Spec:https://www.alternatiff.com/resources/TIFF6.pdf
-
Adobe Photoshop TIFF Technical Note 3:https://www.alternatiff.com/resources/TIFFphotoshop.pdf
-
AWare Systems对于TIFF格式的介绍页:https://www.awaresystems.be/imaging/tiff.html
-
Wikipedia对JPEG格式的介绍页:https://zh.wikipedia.org/wiki/JPEG
-
Wikipedia对拜尔滤镜的介绍页: https://zh.wikipedia.org/wiki/%E6%8B%9C%E7%88%BE%E6%BF%BE%E8%89%B2%E9%8F%A1
近期评论