天天看點

tiff和geotiff格式分析1、 tiff 檔案的基本格式2、 GeoTIFF 的基本格式

TIFF(Tag Image File Format) 圖像檔案說明:

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* 标簽數 下一個 IFD 的 ( 相對于文将 ) 偏移量,在一個 TIFF 檔案中可以由多個 IFD 用于存放多個圖像,如果如果該數字為 0 ,表示已經處理完所有的 IFD 。

标簽說明:一個标簽由連續的 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 相對于檔案的該标簽值的偏移量 , 必須開始于   " 字 " 邊界 , 為了節省空間,如果該标簽的資料的長度小于等于四個位元組,在 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

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 所需的标簽名稱:

BitsPerSample           258         SHORT       4/8

PhotometricInterpretation   262         SHORT       3

RowsPerStrip            278         SHORT/LONG

StripByteCounts         279         SHORT/LONG

ColorMap            320         SHORT

RGB Full Color Image:

一個 RGB 圖像,每個像素由 3 部分組成, RGB, 在圖像中沒有 ColorMap 标簽,需要修改或者添加以下幾個标簽

BitPerSample=8,8,8

PhotometricInterpretation=2  (RGB Image)

SamplesPerPixel     277     SHORT

RGB Image 所需的标簽名稱:

BitsPerSample           258         SHORT       8,8,8

Compression         259         SHORT       1,32773

PhotometricInterpretation   262         SHORT       2

SamplesPerPixel         277         SHORT       3 or more

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

N    =  3*(2**BitsPerSample)

Compression 資料壓縮方式

Tag  =  259

N=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

N   =   20

ExtraSamples    每個像素的額外組成

Tag =   338

Type    =   SHORT

N   =   m

Value=0     未指定資料

Value=1     與 Alpha 通道有關

Value=2     與 Alpha 通道無關

FillOrder   每位元組的資料,其位的排列方式

Tag =   266

N   =   1

Value=1     從左到右

Value=2     從右到左

FreeByteCounts  每個未使用塊在檔案中的位元組數

Tag =   289

Type    =   LONG

FreeOffsets 每個未使用塊在檔案中的偏移量

Tag =   288

GrayResponseCurve   灰階響應曲線

Tag =   291

N   =   2**BitsPerSample

GrayResponseUnit    灰階響應曲線的機關

Tag =   290

DefaultValue=2

Value=1     1/10

Value=2     1/100

Value=3     1/1000

Value=4     1/10000

Value=5     1/100000

Tag =   316

ImageDescription

Tag =   270

ImageLength     圖像的高度 ( 像素為機關 )

Tag =   257

Type    =   SHORT/LONG

ImageWidth      圖像的寬度 ( 像素為機關 )

Tag =   256

Make

Tag =   271

MaxSampleValue      最大取樣值

Tag =   281

N   =   SamplePerPixel

DefaultValue=(2**BitsPerSample)-1

MinSampleValue      最小取樣值

Tag =   280

DefaultValue=0

Model       掃描器的型号

Tag =   272

N   =   根據内容來定

NewSubfileType      圖像形态

Tag =   254

Value=1     表示一幅全分辨率的圖像

Value=2     表示一幅降低分辨率後的圖像

Value=3     表示一幅多頁圖像中的一頁

Value=4     表示一幅透明混疊 (Transparency mask) 圖像

Orientation 圖像行列的編排方向

Tag =   274

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

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

Value=1     單平面格式

Value=2     多平面格式

ResolutionUnit      圖像的分辨率機關

Tag =   296

Value=1     沒有指定機關

Value=2     英寸為機關

Value=3     厘米為機關

RowsPerStrip    每個條狀資料的圖像行數

Tag =   278

SamplesPerPixel     每像素的取樣數

Tag =   277

Value=1     表示是黑白,灰階或者調色闆圖像

Value=3     表示是 RGB 圖像

Software    生成圖像的軟體名稱及版本号

Tag =   305

StripByteCounts     每個條狀資料在檔案中的位元組數

Tag =   279

Type     =   SHORT/LONG

N   =   StripsPerImage      如果 PlanarConfiguration=1

    =StripsPerImage*SamplesPerPixel 如果 PlanarConfiguration=2

其中 StripsPerImage 不是标簽 (StripsPerImage=(ImageLength+RowPerStrip-1)/RowsPerStrip

StripOffsets    每個條狀資料在檔案中的偏移量

Tag =   273

SubfileType     已經由 NewSubfileType 标簽取代

Tag =   255

Threashholding      定義由非黑白圖像變換至黑白圖像的技術

Tag =   263

Value=1     未采用任何技術

Value=2     采用抖色 (dither) 或半色調 (halftone) 的技術

Value=3     采用誤差擴散 (error diffusion) 技術

XResolution 機關長度上的圖像水準分辨率

Tag =   282

Type    =   RATIONAL

YResolution 機關長度上的圖像垂直分辨率

Tag =   283

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

沒有整理與歸納的知識,一文不值!高度概括與梳理的知識,才是自己真正的知識與技能。 永遠不要讓自己的自由、好奇、充滿創造力的想法被現實的架構所束縛,讓創造力自由成長吧! 多花時間,關心他(她)人,正如别人所關心你的。理想的騰飛與實作,沒有别人的支援與幫助,是萬萬不能的。

    本文轉自wenglabs部落格園部落格,原文連結:http://www.cnblogs.com/arxive/p/6746570.html,如需轉載請自行聯系原作者