1、 n个DEByte (n*12+2)-(n*12+5): 下一个IFD的偏移量,如果没有如此置为0DE的构成: 此TAG的唯一标识Byte 2-3: 数据类型。Byte 4-7: 数量。通过类型和数量可以确定存储此TAG的数据需要占据的字节数Byte 8-11: 如果占用的字节数少于4, 如此数据直接存于此。 如果超过4个,如此这里存放的是指向实际数据的指针可以用以下的图来表示(.cppblog./windcsn/archive/2009/03/12/1158.html)在TIFF6.0中,定义了12种数据类型,分别是:1 = BYTE 8-bit unsigned integer.2 = A
2、SCII 8-bit byte that contains a 7-bit ASCII code; the last bytemust be NUL (binary zero).3 = SHORT 16-bit (2-byte) unsigned integer.4 = LONG 32-bit (4-byte) unsigned integer.5 = RATIONAL Two LONGs: the first represents the numerator6 = SBYTE An 8-bit signed (twos-plement) integer.7 = UNDEFINED An 8-
3、bit byte that may contain anything, depending onthe definition of the field.8 = SSHORT A 16-bit (2-byte) signed (twos-plement) integer.9 = SLONG A 32-bit (4-byte) signed (twos-plement) integer.10 = SRATIONAL Two SLONGs: the first represents the numerator of afraction, the second the denominator.11 =
4、 FLOAT Single precision (4-byte) IEEE format.12 = DOUBLE Double precision (8-byte) IEEE format.个TIFF文件可能包含多个IFD,每一个IFD都是一个子文件。Baseline解码器只要求解第一个IFD所对应的图像数据。扩展的TIFF图像经常包含多个IFD,每一个IFD都包含了不同的信息。3 TIFF,TIFF/EP以与DNG的关系TIFF/EP的全称是Tag Image File Format / Electronic Photography。 它是一个名为“Electronic still-pict
5、ure imaging Removable memory Part 2: TIFF/EP image data formatISO标准, 标准号为ISO12234-2DNG(Digital Negative)是Adobe开发的一种开放的raw image file format。 里面使用的tag根本上都定义在TIFF或者TIFF/EP中, 在DNG Sepcification中只是定义或者建议了数据的组织方式,颜色空间的转换等等。就我个人的理解,这三者之间的关系应该是这样的:(2) 同时在TIFF Specification也定义个baseline与局部扩展的tag。TIFF/EP如此定义并
6、规X了在电子影像中所使用的TAG。(3) DNG同时与TIFF和TIFF/EP兼容,并包含了EXIF和XMP信息。DNG实际上就是扩X的TIFF, 把DNG的扩展名改成TIF就可以直接预览图片(4) 虽然都归Adobe所有,但都可以无偿使用在DNG出现以前, 各个数码相机制造商都有自己的格式, 比如Canon(cr2/crw), Nikon(nef), Olympus(orf), Pentex(pef)等等。之所以出现这么多格式,一方面的原因是在这之前没有统一的raw格式, 但更重要的是,各个厂商希望用这个只对自己公开的数据格式来保护自己的私密信息。Adobe推出DNG希望能一统raw的天下。
7、但很遗憾,只有极少的数码制造商响应,比如sony,hasselblad, 目前的结果也仅仅是多了一种raw的格式。 虽然如何, DNG仍然是成功的。由于有很成熟的DNG编解码与转换公司, 很多小厂商乐于使用DNG作为自己的文件格式。随着时间的推进,迫于消费者的意愿,大的数码厂商被迫支持DNG。 最后DNG统一这个数码raw格式仍然是大势所趋。4 TIFF的特点(1)应用广泛。TIFF可以描述多种类型的图像;TIFF拥有一系列的压缩方案可供选择;TIFF不依赖于具体的硬件;TIFF是一种可移植的文件格式。(2)TIFF具有可扩展性。在TIFF 6.0中定义了许多扩展,它们允许TIFF提供以下通用
8、功能:几种主要的压缩方法;多种色彩表示方法;图像质量增强;特殊图像效果;文档的存储和检索帮助。(3)格式复杂。TIFF文件的复杂性给它的应用带来了一些问题。一方面,要写一种能够识别所有不同标记的软件非常困难。另一方面,一个TIFF文件可以包含多个图像,每个图像都有自己的IFD和一系列标记,并且采用了多种压缩算法。这样也增加了程序设计的复杂度。5 TIFF的局限与将来的开展TIFF的最大局限在于用4byte来表示偏移量,这样导致文件最大只能有4G。 在20年前指定TIFF标准的时候可能觉得4G足够用了。但是现在这确实成了制约TIFF反展的一个瓶颈。 目前BigTIFF已经提出用8个字节来表示偏移
9、量。这样数据量应该足够大了。也许在不久的将来,这会成为新的tiff的baseline6根本TIFF TAGS本页主要摘自 .awaresystems.be/imaging/tiff/tifftags/baseline.html。每一个TAG均有原始,可以点击查看详细的描述。这些根本Tag是所有TIFF编解码器必须支持的Tag码名称简短描述十进制码十六进制25400FENewSubfileType新的子文件类型标识 LONG 长度为1用比特来标识图像的类型Bit0如果是1代表缩略图Bit1如果是1代表多页图像中的某一页Bit2如果是1代表它是透明度掩码图像其余的位数暂时没有定义。与Subfile
10、Type的是,此Tag用比特位来区分文件类型而不是用值来区分25500FFSubfileType子文件类型标识 SHORT 长度为11 全分辨率图像2 缩小分辨率的图像3 多页图像的某一页过时的Tag,已不再使用。2560100ImageWidth图像宽度 SHORT或者LONG 长度为12570101ImageLength图像高度 SHORT或者LONG 长度为12580102BitsPerSample每个分量的Bit数 SHORT 长度为SamplesPerPixel2590103pression压缩类型 SHORT 长度为1随着TIFF的不断扩X,目前支持多达几十种的压缩方式。就我个人看
11、来,最需要关注的有以下两个值:pression1: 没有压缩pression7:JPEG压缩。 如果是RGB图像并且SamplesPerPixel3,如此是标准的有损JPEG压缩。如果是CFA图像,如此是Lossless JPEG2620106PhotometricInterpretation颜色空间 SHORT 长度为10 = WhiteIsZero. 应用于灰度或者二值图像, 0对应最亮灰度.1 = BlackIsZero. 应用于灰度或者二值图像. 0对应最暗灰度。2 = RGB. 正常RGB图像,存储顺序为R,G,B.3 = Palette color. 索引图像, ColorMap必
12、须定义,SamplesPerPixel必须1.32803 = CFA (Color Filter Array)2630107Threshholding定义了转换成二值图像的阈值,忽略之2640108CellWidthThe width of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file.2650109CellLengthThe length of the dithering or halftoning matrix used to create a dithered
13、or halftoned bilevel file.266010AFillOrder在同一字节中的逻辑顺序。一般不做定义,要定义的话建议用1270010EImageDescription字符串, 对图像的描述271010FMake字符串, 生产厂商的描述2720110Model字符串2730111StripOffsets每个Strip的偏移量 SHORT或者LONGN = StripsPerImage for PlanarConfiguration equal to 1; N = SamplesPerPixel * StripsPerImage for PlanarConfiguration
14、equal to 22740112OrientationThe orientation of the image with respect to the rows and columns.2770115SamplesPerPixel每个象素的通道数 SHORT 长度为12780116RowsPerStrip每个Strip有多少行 SHORT或者LONG 长度为1。Default是无限大StripsPerImage = floor (ImageLength + RowsPerStrip - 1) / RowsPerStrip).2790117StripByteCounts每个Strip的长度 SHORT或者LONGN = StripsPerImage for PlanarConfiguration equ
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1