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指定的标簽中,第一個元素在标簽中的索引為偏移量。