tiff和geotiff格式分析
6、tiff文件的基本格式
TIFF(Tag Image File Format)图像文件说明:
TIFF文件是由许多的标签(tag)组成,在Adobe的有关tiff6.0的说明中,将(tag)的解释称各种标签所对应的数值,而在文件中各个标签的实际入口称为(field),暂且称为域。tiff支持黑白、灰度、彩色的图像格式,同时还可以接受RGB CMYK等色彩系统,同时支持图像数据的LZW,哈夫曼等压缩算法或者不压缩。
TIFF文件分为文件头和IFD两部分,一个IFD中存储了一幅图像的信息,IFD可以由许多标签组成。在TIFF6.0文件中,规定所有的标签必须以升序排列,通过这些标签信息,来处理文件中的图像数据。
TIFF文件头说明:
TIFF的文件头有8字节
0-1规定为”II”或者”MM”Intel /Mortorola类型的字节顺序
2-3 TIFF文件的版本,为与以前的兼容,为42
4-7 TIFF文件的第一个IFD在文件中的偏移量,肯定大于8
IFD说明:IFD是由连续的标签组成
OFFSET:0-1IFD中的标签数目
OFFSET:2-13 IFD中的第一个标签
OFFSET:14-25IFD中的第二个标签
…..
OFFSET:2+12*标签数下一个IFD的(相对于文将)偏移量,在一个TIFF文件中可以由多个IFD用于存放多个图像,如果如果该数字为0,表示已经处理完所有的IFD。
标签说明:一个标签由连续的12字节组成
OFFSET:0-1TAG ID标签所对应的数字编号(tag),用于定义该标签所存放的”信息”
OFFSET:2-3TAG INFO DATA TYPE标签中数据的数据类型
OFFSET:4-7VALUE COUNT 2-3中说明的数据类型的数目
OFFSET:8-11 VALUE OFFSET相对于文件的该标签值的偏移量,必须开始于”字”边界,为了节省空间,如果该标签的数据的长度小于等于四个字节,在VALUE OFFSET中直接存储(小于四字节数据左对齐)该标签的值而不是在文件中的偏移量。
以下列出了标签中的数据的可能的数据类型
1 = BYTE
2 = ASCII
3 = SHORT
4 = LONG
5 = RATIONAL
6 = SBYTE
7 = UNDEFINED
8 = SSHORT
9 = SLONG
10= SRATIONAL
11= FLOAT
12= DOUBLE
TIFF中的标签种类有很多,按大类可以BASELINE TIFF标签和TIFF EXTENSIONS标签
在以前版本的TIFF文当中将TIFF文件分为
BASELINE TIFF:
在以前版本中,BASELINE TIFF分为三种格式:
(BiLevel Images)tiff class b image,(GrayScale Images)tiff class G image,(Palette-Color Images)class P image,(rgb image)tiff class r images
1.BiLevel Images所用到的标签
标签名标签的ID号(十进制)标签数据类型标签可能的数值
ImageWidth256SHORT/LONG
ImageLength257SHORT/LONG
Compression259SHORT1(no Compression),2(HuffmanCompression),32773(PackBits Compression)
PhotometricInterpretation262SHORT当Compression=2 0,1(0:在BiLevel/GrayScale图形中0表示全白1:在BiLevel/GrayScale图形中0表示全黑,即图形采用反色显示)
StripOffsets273SHORT/LONG每个Strip的文件偏移量
RowsPerStrip278SHORT/LONG每个Strip中的行数
StripByteCounts279SHORT/LONG当采用某种压缩方式后每个Strip的字节数
XResolution282RATIONALImageWidth中每ResolutionUnit中的像素数目
YResolution283RATIONALImageLength中每ResolutionUnit中的像素数目
ResolutionUnit296SHORT1(用于非四边形显示的图像),2(英寸),3(厘米)根据ImageWidth及ImageLength用于计算图像在显示时的尺寸
以下是一个BiLevel Tiff文件的例子
偏移量说明数值(HEX)
0000byteorder4d4d
0002420042
00041st IFD offset00000014
IFD:
偏移量说明值(HEX)
0014number of directory entries 000c(IFD中的标签数目12个)
偏移量标签说明TagID(HEX)数据类型(HEX)Count(HEX)值偏移量(HEX)说明
0016newsubfile type00fe00040000000100000000
0022imagewidth0100000400000001000007d0图像宽度2000
002eimagelength010100040000000100000bb8图像长度3000
003acompression010300030000000180050000数据压缩由于数据短于四字节,偏移量中直接为值(左对齐)32773
0046photometricinterpretation010600030000000100010000图像采用反色显示
0052stripoffsets01110004000000bc000000b6图像Strip偏移量0x00B6,共188(0xBC)个Strip
005erowsperstrip011600040000000100000010每Strip中行数16
006astripbytecounts01170003000000bc000003a6每Strip中的字节数,共188个,偏移量0x03A6
0076xresolution011b00050000000100000696
0082yresolution011b0005000000010000069e
008esoftware013100020000000e000006a6用于标记生成该图像的软件,文本类型,偏移量0x6a6,字节数14
009adatetime0132000200000014000006b6用于标记该图像的生成日期,文本类型,偏移量0x6b6,字节数20
00a6nextIFDoffset00000000没有下一个IFD
值大于4字节:
偏移量标签说明:值:说明:
00b6StripOffsetsOffset0,Offset1,…Offset187
03a6StripByteCountsCount0,Count1,…Count187
0696XResolution0000012C00000001每ResolutionUnit中300像素
069eYResolution0000012C00000001每ResolutionUnit中300像素
06a6Software”PageMaker4.0″生成该图像的软件名称,长度应该为字符串长度加NULL结尾应为13注:本例子来自Adobe Tiff Revision 6.0,其中的字节数为14,可能其中有错误
06b6DateTime”1988-02-18 13:59:59″生成该图像的时间,长度为20字节
Image Data:
00000700Compressed data for strip 10
xxxxxxxxCompressed data for strip 179
xxxxxxxxCompressed data for strip 53
xxxxxxxxcompressed data for strip 160
.
.
文件结束
以上例子中的software,datatime为可选标签,同时各个Strip可以不安顺序在文件中存储,每个Strip的偏移量必须在文件中指定,而不能缺省认为一个Strip的结尾是下一个Strip的开始,或者Strip是按顺序在文件中存储的
注:以上的例子中没有列出ResolutionUnit,可能是Adobe文档中的错误
Bilevel Images中需要的标签:
TagNameDecimal Hex TypeValue
ImageWidth256 100 short/long
ImageLength257 101 short/long
Compression259 103 short1,2,32773
PhotometricInterpretation262 106 short0,1
StripOffsets273 111 short/long
RowsPerStrip278 116 short/long
StripByteCounts279 117 short/long
XResolution282 11a rational
YResolution283 11b rational
ResolutionUnit296 128 short
GrayScale Image:
灰度图像是黑白图像的一般化,灰度图像需要的标签基本同上,但是用户需要修改或者添加以下标签
Compression=1 or 32773
FieldNameTagIDDataTypeValueDescription
BitPerSample258SHORT4/8the number of bits per component 16 or 256 distinct shades of gray
GrayScale Image所需的标签名称:
FieldNameTagID(Decimal)DataTypeValue
ImageWidth256SHORT/LONG
ImageLength257SHORT/LONG
BitsPerSample258SHORT/LONG4/8
Compression259SHORT1/32773
PhotometricInterpretation262SHORT0/1
StripOffsets273SHORT/LONG
RowsPerStrip278SHORT/LONG
StripByteCounts279LONG/SHORT
XResolution282RATIONAL
YResolution283RATIONAL
ResolutionUnit296SHORT1/2/3
Palette-color Images:
调色板图形于灰度图形类似,它每个像素的颜色采用RGB表的查找,需要修改或者添加以下标签,其他与GrayScale Images类似
PhotometricInterpretation=3(表示该图像为Palette-color Image)
FieldNameTagIDDataTypeCountValueDescription
ColorMap320SHORT3*(2的BitsPerSample次方)调色板顺序为RGB
Palette-color Image所需的标签名称:
FieldNameTagID(Decimal)DataTypeValue
ImageWidth256SHORT/LONG
ImageLength257SHORT/LONG
BitsPerSample258SHORT4/8
Compression259SHORT1/32773
PhotometricInterpretation262SHORT3
StripOffsets273SHORT/LONG
RowsPerStrip278SHORT/LONG
StripByteCounts279SHORT/LONG
XResolution282RATIONAL
YResolution283RATIONAL
ResolutionUnit296SHORT1/2/3
ColorMap320SHORT
RGB Full Color Image:
一个RGB图像,每个像素由3部分组成,RGB,在图像中没有ColorMap标签,需要修改或者添加以下几个标签
BitPerSample=8,8,8
PhotometricInterpretation=2(RGB Image)
FieldNameTagIDDataTypeValueDescription
SamplesPerPixel277SHORT
RGB Image所需的标签名称:
FieldNameTagID(Decimal)DataTypeValue
ImageWidth256SHORT/LONG
ImageLength257SHORT/LONG
BitsPerSample258SHORT8,8,8
Compression259SHORT1,32773
PhotometricInterpretation262SHORT2
StripOffsets273SHORT/LONG
SamplesPerPixel277SHORT3 or more
RowsPerStrip278SHORT/LONG
StripByteCounts279SHORT/LONG
XResolution282RATIONAL
YResolution283RATIONAL
ResolutionUnit296SHORT1,2,3
Baseline Tiff文件的附加要求:
MM / II字节顺序的处理,一文件多图像的处理。同时有些标签需要注意的是:
ImageWidth,ImageLength标签数据类型可以为SHORT/LONG,程序必须处理出现图像尺寸过大的情况.
同时对于某些标签可以同时为SHORT/LONG,在程序中需要对这些标签进行正确的处理
Tiff文件基本标签详细说明:
以下标签按字母顺序说明:
********************************************************************
Artist图像的作者
Tag=315
Type =ASCII
********************************************************************
BitsPerSample每个数据的位数
Tag=258
Type =short
N=SamplesPerPixel
DefaultValue=1
Value=位数SamplesPerPixel<=2
Value=位数的偏移量SamplesPerPixel>2
********************************************************************
ColorMap调色板数据
Tag=320
Type =short
N=3*(2**BitsPerSample)
********************************************************************
Compression数据压缩方式
Tag=259
Type =short
N=1
DefaultValue=1
Value=1数据没有压缩
Value=2采用CCITT Group 31压缩
Value=3采用CITTGroup 3 Fax T4压缩
Value=4采用CITTGroup 3 Fax T6压缩
Value=5LZW压缩
Value=6JPEG压缩
Value=32773 PackBits压缩
********************************************************************
Copyright图像的版权信息
Tag =33432
Type=ASCII
********************************************************************
DateTime此图像生成的日期及时间
Tag =306
Type=ASCII
N=20
********************************************************************
ExtraSamples每个像素的额外组成
Tag =338
Type=SHORT
N=m
Value=0未指定数据
Value=1与Alpha通道有关
Value=2与Alpha通道无关
********************************************************************
FillOrder每字节的数据,其位的排列方式
Tag =266
Type=SHORT
N=1
Value=1从左到右
Value=2从右到左
********************************************************************
FreeByteCounts每个未使用块在文件中的字节数
Tag =289
Type=LONG
********************************************************************
FreeOffsets每个未使用块在文件中的偏移量
Tag =288
Type=LONG
********************************************************************
GrayResponseCurve灰度响应曲线
Tag =291
Type=SHORT
N=2**BitsPerSample
********************************************************************
GrayResponseUnit灰度响应曲线的单位
Tag =290
Type=SHORT
N=1
DefaultValue=2
Value=11/10
Value=21/100
Value=31/1000
Value=41/10000
Value=51/100000
********************************************************************
HostComputer制作此图像的计算机及其操作系统
Tag =316
Type=ASCII
********************************************************************
ImageDescription
Tag =270
Type=ASCII
********************************************************************
ImageLength图像的高度(像素为单位)
Tag =257
Type=SHORT/LONG
N=1
********************************************************************
ImageWidth图像的宽度(像素为单位)
Tag =256
Type=SHORT/LONG
N=1
********************************************************************
Make
Tag =271
Type=ASCII
********************************************************************
MaxSampleValue最大取样值
Tag =281
Type=SHORT
N=SamplePerPixel
DefaultValue=(2**BitsPerSample)-1
********************************************************************
MinSampleValue最小取样值
Tag =280
Type=SHORT
N=SamplePerPixel
DefaultValue=0
********************************************************************
Model扫描仪的型号
Tag =272
Type=ASCII
N=根据内容来定
********************************************************************
NewSubfileType图像形态
Tag =254
Type=LONG
N=1
Value=1表示一幅全分辨率的图像
Value=2表示一幅降低分辨率后的图像
Value=3表示一幅多页图像中的一页
Value=4表示一幅透明混迭(Transparency mask)图像
********************************************************************
Orientation图像行列的编排方向
Tag =274
Type=SHORT
N=1
DefaultValue=1
Value=11行在上方,1列在左方
Value=21行在上方,1列在右方
Value=31行在下方,1列在右方
Value=41行在下方,1列在左方
Value=51行在左方,1列在上方
Value=61行在右方,1列在上方
Value=71行在右方,1列在下方
Value=81行在左方,1列在下方
********************************************************************
PhotometricInterpretation图像所采用的色彩系统
Tag =262
Type=SHORT
N=1
Value=0对黑白及灰度图像而言,0为白色
Value=1对黑白及灰度图像而言,0为黑色
Value=2图像数据以R,G,B的方式存储
Value=3图像数据采用调色板索引
Value=4单色的透明混迭图像
Value=5图像数据以C,M,Y,K的方式存储
Value=6图像数据以Y,Cb,Cr的方式存储
Value=8图像以L*,a*,b*的方式存储
********************************************************************
PlanarConfiguration图像数据的平面排列方式
Tag =284
Type=SHORT
N=1
DefaultValue=1
Value=1单平面格式
Value=2多平面格式
********************************************************************
ResolutionUnit图像的分辨率单位
Tag =296
Type=SHORT
N=1
DefaultValue=2
Value=1没有指定单位
Value=2英寸为单位
Value=3厘米为单位
********************************************************************
RowsPerStrip每个条状数据的图像行数
Tag =278
Type=SHORT/LONG
N=1
********************************************************************
SamplesPerPixel每像素的取样数
Tag =277
Type=SHORT
N=1
DefaultValue=1
Value=1表示是黑白,灰度或者调色板图像
Value=3表示是RGB图像
********************************************************************
Software生成图像的软件名称及版本号
Tag =305
Type=ASCII
N=根据内容来定
********************************************************************
StripByteCounts每个条状数据在文件中的字节数
Tag =279
Type=SHORT/LONG
N=StripsPerImage如果PlanarConfiguration=1
=StripsPerImage*SamplesPerPixel如果PlanarConfiguration=2
其中StripsPerImage不是标签(StripsPerImage=(ImageLength+RowPerStrip-1)/RowsPerStrip
********************************************************************
StripOffsets每个条状数据在文件中的偏移量
Tag =273
Type=SHORT/LONG
N=StripsPerImage如果PlanarConfiguration=1
=StripsPerImage*SamplesPerPixel如果PlanarConfiguration=2
其中StripsPerImage不是标签(StripsPerImage=(ImageLength+RowPerStrip-1)/RowsPerStrip
********************************************************************
SubfileType已经由NewSubfileType标签取代
Tag =255
Type=SHORT
N=1
********************************************************************
Threashholding定义由非黑白图像变换至黑白图像的技术
Tag =263
Type=SHORT
N=1
DefaultValue=1
Value=1未采用任何技术
Value=2采用抖色(dither)或半色调(halftone)的技术
Value=3采用误差扩散(error diffusion)技术
********************************************************************
XResolution单位长度上的图像水平分辨率
Tag =282
Type=RATIONAL
N=1
********************************************************************
YResolution单位长度上的图像垂直分辨率
Tag =283
Type=RATIONAL
N=1
7、GeoTIFF的基本格式
GeoTIFF支持三种坐标空间:栅格空间(Raster Space)、设备空间(Device Space)和模型空间(Model Space)。栅格空间是存储图像的行列号的坐标系统。它有2种形式:一是PixelIs-Area型(图1( a) ) ,主要用于非DEM的数据;二是PixelIsPoint型(图1( b) ) ,主要用于DEM。设备空间是使用TIFF格式中定义的6个基本Tag来描述图像的分辨率单位及图像定位。模型空间是GeoTIFF图像的栅格坐标所对应的实际地图的经纬度坐标或直角坐标。假设已知栅格空间n个点的栅格坐标和在模型空间中对应的n个点的模型坐标,仅凭这些信息,不可能建立两个坐标空间的对应关系,因为两者之间的对应关系是非线性的,无法用线性变换矩阵表示。
各个地理标签的具体含义如下:
( 1)ModelPixelScaleTag(像元比例) :存放着图像中的某一点在栅格空间中的坐标与在模型空间中的坐标的缩放比例。
( 2)ModelTiepointTag(控制点) :图像中栅格坐标与其对应的模型坐标形成的坐标控制点对。
( 3)ModelTransformationTag(变换矩阵) :含有16个双精度( 4)GeoDoubleParamsTag(双精度参数) :代表GeoTIFF定义的一种数据类型,用来存储双精度类型的地理键(GeoKeys)。
( 5)GeoAsciiParamsTag(ASCII参数) :存储字符型的地理键(GeoKey)值,保存字符型的地理键(GeoKeys)。
( 6)GeoKeyDirectoryTag(地理信息目录) :是6个地理标签中最重要、最复杂的一个,可分为头和记录两部分:头部的结构为Header={目录版本号,修订版本号,副版本号,地理键的个数};每条记录的结构为KeyEntry={地理键ID,存放位置,元素的个数,值/索引}。ID号唯一标识了地理键,存放位置表示地理键存放在哪个标签中(主要指GeoDoubleParamsTag和GeoAscii-ParamsTag)。如果值为0表示该键为短整型、个数为1则它的值就保存在记录中。否则,其类型由TIFFTagLocation暗指,值即存放在TIFFTagLocation指定的标签中,第一个元素在标签中的索引为偏移量。
转载自:https://blog.csdn.net/iteye_11788/article/details/82549963