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-1 IFD 中的標籤數目
OFFSET:2-13 IFD 中的第一個標籤
OFFSET:14-25 IFD 中的第二個標籤
.....
OFFSET:2+12*
標籤說明:一個標籤由連續的 12 位元組組成
OFFSET:0-1 TAG ID 標籤所對應的數字編號 (tag) ,用於定義該標籤所存放的 " 資訊 "
OFFSET:2-3 TAG INFO DATA TYPE 標籤中資料的資料型別
OFFSET:4-7 VALUE COUNT 2-3 中說明的資料型別的數目
OFFSET:8-11 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 號 ( 十進位制 ) 標籤資料型別 標籤可能的數值
ImageWidth 256 SHORT/LONG
ImageLength 257 SHORT/LONG
Compression 259 SHORT 1(no Compression),2(HuffmanCompression),32773(PackBits Compression)
PhotometricInterpretation 262 SHORT 當 Compression=2 0,1(0: 在 BiLevel/GrayScale 圖形中 0 表示全白 1: 在 BiLevel/GrayScale 圖形中 0 表示全黑 , 即圖形採用反色顯示 )
StripOffsets 273 SHORT/LONG 每個 Strip 的檔案偏移量
RowsPerStrip 278 SHORT/LONG 每個 Strip 中的行數
StripByteCounts 279 SHORT/LONG 當採用某種壓縮方式後每個 Strip 的位元組數
XResolution 282 RATIONAL ImageWidth 中每 ResolutionUnit 中的畫素數目
YResolution 283 RATIONAL ImageLength 中每 ResolutionUnit 中的畫素數目
ResolutionUnit 296 SHORT 1( 用於非四邊形顯示的影象 ),2( 英寸 ),3( 釐米 ) 根據 ImageWidth 及 ImageLength 用於計算影象在顯示時的尺寸
以下是一個 BiLevel Tiff 檔案的例子
偏移量 說明 數值 (HEX)
0000 byteorder 4d4d
0002 42 0042
0004 1st IFD offset 00000014
IFD:
偏移量 說明 值 (HEX)
0014 number of directory entries 000c(IFD 中的標籤數目 12 個 )
偏移量 標籤說明 TagID(HEX) 資料型別 (HEX) Count(HEX) 值偏移量 (HEX) 說明
0016 newsubfile type 00fe 0004 00000001 00000000
0022 imagewidth 0100 0004 00000001 000007d0 影象寬度 2000
002e imagelength 0101 0004 00000001 00000bb8 影象長度 3000
003a compression 0103 0003 00000001 80050000 資料壓縮由於資料短於四位元組,偏移量中直接為值 ( 左對齊 )32773
0046 photometricinterpretation 0106 0003 00000001 00010000 影象採用反色顯示
0052 stripoffsets 0111 0004 000000bc 000000b6 影象 Strip 偏移量 0x00B6, 共 188(0xBC) 個 Strip
005e rowsperstrip 0116 0004 00000001 00000010 每 Strip 中行數 16
006a stripbytecounts 0117 0003 000000bc 000003a6 每 Strip 中的位元組數 , 共 188 個,偏移量 0x03A6
0076 xresolution 011b 0005 00000001 00000696
0082 yresolution 011b 0005 00000001 0000069e
008e software 0131 0002 0000000e 000006a6 用於標記生成該影象的軟體 , 文字型別 , 偏移量 0x6a6, 位元組數 14
009a datetime 0132 0002 00000014 000006b6 用於標記該影象的生成日期 , 文字型別 , 偏移量 0x6b6, 位元組數 20
00a6 nextIFDoffset 00000000 沒有下一個 IFD
值大於 4 位元組:
偏移量 標籤說明: 值 : 說明 :
00b6 StripOffsets Offset0,Offset1,...Offset187
03a6 StripByteCounts Count0,Count1,...Count187
0696 XResolution 0000012C00000001 每 ResolutionUnit 中 300 畫素
069e YResolution 0000012C00000001 每 ResolutionUnit 中 300 畫素
06a6 Software "PageMaker4.0" 生成該影象的軟體名稱,長度應該為字串長度加 NULL 結尾 應為 13 注: 本例子來自 Adobe Tiff Revision 6.0, 其中的位元組數為 14, 可能其中有錯誤
06b6 DateTime "1988-02-18 13:59:59" 生成該影象的時間,長度為 20 位元組
Image Data:
00000700 Compressed data for strip 10
xxxxxxxx Compressed data for strip 179
xxxxxxxx Compressed data for strip 53
xxxxxxxx compressed data for strip 160
.
.
檔案結束
以上例子中的 software,datatime 為可選標籤,同時各個 Strip 可以不安順序在檔案中儲存,每個 Strip 的偏移量必須在檔案中指定,而不能預設認為一個 Strip 的結尾是下一個 Strip 的開始,或者 Strip 是按順序在檔案中儲存的
注:以上的例子中沒有列出 ResolutionUnit, 可能是 Adobe 文件中的錯誤
Bilevel Images 中需要的標籤:
TagName Decimal Hex Type Value
ImageWidth 256 100 short/long
ImageLength 257 101 short/long
Compression 259 103 short 1,2,32773
PhotometricInterpretation 262 106 short 0,1
StripOffsets 273 111 short/long
RowsPerStrip 278 116 short/long
StripByteCounts 279 117 short/long
XResolution 282 11a rational
YResolution 283 11b rational
ResolutionUnit 296 128 short
GrayScale Image:
灰度影象是黑白影象的一般化,灰度影象需要的標籤基本同上,但是使用者需要修改或者新增以下標籤
Compression=1 or 32773
FieldName TagID DataType Value Description
BitPerSample 258 SHORT 4/8 the number of bits per component 16 or 256 distinct shades of gray
GrayScale Image 所需的標籤名稱:
FieldName TagID(Decimal) DataType Value
ImageWidth 256 SHORT/LONG
ImageLength 257 SHORT/LONG
BitsPerSample 258 SHORT/LONG 4/8
Compression 259 SHORT 1/32773
PhotometricInterpretation 262 SHORT 0/1
StripOffsets 273 SHORT/LONG
RowsPerStrip 278 SHORT/LONG
StripByteCounts 279 LONG/SHORT
XResolution 282 RATIONAL
YResolution 283 RATIONAL
ResolutionUnit 296 SHORT 1/2/3
Palette-color Images:
調色盤圖形於灰度圖形類似,它每個畫素的顏色採用 RGB 表的查詢,需要修改或者新增以下標籤,其他與 GrayScale Images 類似
PhotometricInterpretation=3 ( 表示該影象為 Palette-color Image)
FieldName TagID DataType Count Value Description
ColorMap 320 SHORT 3*(2 的 BitsPerSample 次方 ) 調色盤順序為 RGB
Palette-color Image 所需的標籤名稱:
FieldName TagID(Decimal) DataType Value
ImageWidth 256 SHORT/LONG
ImageLength 257 SHORT/LONG
BitsPerSample 258 SHORT 4/8
Compression 259 SHORT 1/32773
PhotometricInterpretation 262 SHORT 3
StripOffsets 273 SHORT/LONG
RowsPerStrip 278 SHORT/LONG
StripByteCounts 279 SHORT/LONG
XResolution 282 RATIONAL
YResolution 283 RATIONAL
ResolutionUnit 296 SHORT 1/2/3
ColorMap 320 SHORT
RGB Full Color Image:
一個 RGB 影象,每個畫素由 3 部分組成, RGB, 在影象中沒有 ColorMap 標籤,需要修改或者新增以下幾個標籤
BitPerSample=8,8,8
PhotometricInterpretation=2 (RGB Image)
FieldName TagID DataType Value Description
SamplesPerPixel 277 SHORT
RGB Image 所需的標籤名稱:
FieldName TagID(Decimal) DataType Value
ImageWidth 256 SHORT/LONG
ImageLength 257 SHORT/LONG
BitsPerSample 258 SHORT 8,8,8
Compression 259 SHORT 1,32773
PhotometricInterpretation 262 SHORT 2
StripOffsets 273 SHORT/LONG
SamplesPerPixel 277 SHORT 3 or more
RowsPerStrip 278 SHORT/LONG
StripByteCounts 279 SHORT/LONG
XResolution 282 RATIONAL
YResolution 283 RATIONAL
ResolutionUnit 296 SHORT 1,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 採用 CITT Group 3 Fax T4 壓縮
Value=4 採用 CITT Group 3 Fax T6 壓縮
Value=5 LZW 壓縮
Value=6 JPEG 壓縮
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=1 1/10
Value=2 1/100
Value=3 1/1000
Value=4 1/10000
Value=5 1/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=1 1 行在上方, 1 列在左方
Value=2 1 行在上方, 1 列在右方
Value=3 1 行在下方, 1 列在右方
Value=4 1 行在下方, 1 列在左方
Value=5 1 行在左方, 1 列在上方
Value=6 1 行在右方, 1 列在上方
Value=7 1 行在右方, 1 列在下方
Value=8 1 行在左方, 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 來描述影象的解析度單位及影象定位。模型空間是