TIFF图像格式解析

TIFF图像格式解析

详细说明文档:https://www.awaresystems.be/imaging/tiff/faq.html

1 TIFF文件结构

TIFF文件包含三个部分:图像文件头(IFH, image fileheader)、图像文件目录(IFD, imagefile dictionary)、目录项(dictionaryentry)。

1.1 IFH

一共8个字节

0-1字节为II或MM,前者表示小字节在前(4D4D),后者表示大字节在前(4949)。

2-3字节为特定的数值42

4-7字节为第一个图像文件目录IFD的偏移量(必须是2的倍数)

表一 IFH结构描述

名称

字节数

数据类型

说明

Byteorder

2

Integer

TIF标记,值为4D4D或4949

Version

2

Integer

版本号,其值恒为2A00

Offset to first IFD

4

Long

第一个IFD的偏移量

1.2 IFD

0-1字节表示此IFD中包含的文件目录数目

2-(n*12+1)字节为n个DE

(n*12+1)-(n*12+1)字节为下一个IFD的偏移量

注:IFD数据结构并不一定紧跟在IFH后面,相反,它常常位于第三部分图像数据的后面,即TIF图像文件的一般组织形式是:IFH--图像数据--IFD。

表二 图像文件目录

名称

字节数

类型

说明

Directory Entry Count

2

Integer

IFDDE的数量

Directory Entry(1)

12

 

简称DE,中文译义目录项

……..

 

 

 

Directory Entry(N)

12

 

 

Offset to next IFD

4

Long

下一个IFD的偏移量

1.3 DE

0-1为TAG的唯一标识

2-3为数据类型

4-7为存储此TAG需要的字节数

8-11为数据(字节数小于4)或指向数据的指针(字节数大于4)

表三 目录项

名称

字节数

类型

说明

tag

2

Integer

本属性的标签编号

type

2

Integer

本属性值的数据类型

count

4

Long

该类型数据的数量

valueOffset

4

Long

属性值的存放偏移量

 1.4 IFH、IFD和DE的关系图

 

2 标签(TAG)含义解析

2.1 type的数据类型

1 =BYTE 8-bit unsigned integer.
2 = ASCII 8-bit byte that contains a 7-bit ASCII code; the last byte
must 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 numerator
6 = SBYTE An 8-bit signed (twos-complement) integer.
7 = UNDEFINED An 8-bit byte that may contain anything, depending on thedefinition of the field.
8 = SSHORT A 16-bit (2-byte) signed (twos-complement) integer.
9 = SLONG A 32-bit (4-byte) signed (twos-complement) integer.
10 = SRATIONAL Two SLONG’s: the first represents the numerator of a
fraction, the second the denominator.
11 = FLOAT Single precision (4-byte) IEEE format.
12 = DOUBLE Double precision (8-byte) IEEE format.

2.2 具体含义描述

名称

简短描述

十进制码

十六进制

254

00FE

NewSubfileType

新的子文件类型标识 LONG 长度为1

用比特来标识图像的类型

Bit0如果是1代表缩略图

Bit1如果是1代表多页图像中的某一页

Bit2如果是1代表它是透明度掩码图像

其余的位数暂时没有定义。与SubfileType的是,此Tag用比特位来区分文件类型而不是用值来区分

255

00FF

SubfileType

子文件类型标识 SHORT 长度为1

1 全分辨率图像

2 缩小分辨率的图像

3 多页图像的某一页

过时的Tag,已不再使用。

256

0100

ImageWidth

图像宽度 SHORT或者LONG 长度为1

257

0101

ImageLength

图像高度 SHORT或者LONG 长度为1

258

0102

BitsPerSample

每个分量的Bit数 SHORT 长度为SamplesPerPixel

259

0103

Compression

压缩类型 SHORT 长度为1

随着TIFF的不断扩张,目前支持多达几十种的压缩方式。就我个人看来,最需要关注的有以下两个值:

Compression=1: 没有压缩

Compression=7:JPEG压缩。 如果是RGB图像并且SamplesPerPixel=3,则是标准的有损JPEG压缩。如果是CFA图像,则是Lossless JPEG

262

0106

PhotometricInterpretation

颜色空间 SHORT 长度为1

0 = WhiteIsZero. 应用于灰度或者二值图像, 0对应最亮灰度.
1 = BlackIsZero. 应用于灰度或者二值图像. 0对应最暗灰度。
2 = RGB. 正常RGB图像,存储顺序为R,G,B.
3 = Palette color. 索引图像, ColorMap必须定义,SamplesPerPixel必须1.

32803 = CFA (Color Filter Array)

263

0107

Threshholding

定义了转换成二值图像的阈值,忽略之

264

0108

CellWidth

The width of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file.

265

0109

CellLength

The length of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file.

266

010A

FillOrder

在同一字节中的逻辑顺序。一般不做定义,要定义的话建议用1

270

010E

ImageDescription

字符串, 对图像的描述

271

010F

Make

字符串, 生产厂商的描述

272

0110

Model

字符串

273

0111

StripOffsets

每个Strip的偏移量 SHORT或者LONG

N = StripsPerImage for PlanarConfiguration equal to 1; N = SamplesPerPixel * StripsPerImage for PlanarConfiguration equal to 2

274

0112

Orientation

The orientation of the image with respect to the rows and columns.

277

0115

SamplesPerPixel

每个象素的通道数 SHORT 长度为1

278

0116

RowsPerStrip

每个Strip有多少行 SHORT或者LONG 长度为1。Default是无限大

StripsPerImage = floor ((ImageLength + RowsPerStrip - 1) / RowsPerStrip).

279

0117

StripByteCounts

每个Strip的长度 SHORT或者LONG

N = StripsPerImage for PlanarConfiguration equal to 1; N = SamplesPerPixel * StripsPerImage for PlanarConfiguration equal to 2

280

0118

MinSampleValue

The minimum component value used.

281

0119

MaxSampleValue

The maximum component value used.

282

011A

XResolution

The number of pixels per ResolutionUnit in the ImageWidth direction.

283

011B

YResolution

The number of pixels per ResolutionUnit in the ImageLength direction.

284

011C

PlanarConfiguration

How the components of each pixel are stored.

288

0120

FreeOffsets

For each string of contiguous unused bytes in a TIFF file, the byte offset of the string.

289

0121

FreeByteCounts

For each string of contiguous unused bytes in a TIFF file, the number of bytes in the string.

290

0122

GrayResponseUnit

The precision of the information contained in the GrayResponseCurve.

291

0123

GrayResponseCurve

For grayscale data, the optical density of each possible pixel value.

296

0128

ResolutionUnit

The unit of measurement for XResolution and YResolution.

305

0131

Software

Name and version number of the software package(s) used to create the image.

306

0132

DateTime

Date and time of image creation.

315

013B

Artist

Person who created the image.

316

013C

HostComputer

The computer and/or operating system in use at the time of image creation.

320

0140

ColorMap

调色板

338

0152

ExtraSamples

Description of extra components.

33432

8298

Copyright

Copyright notice.

3 C/C++代码

3.1 自己写的使用opencv读取16为TIFF图像代码

bool read16bitTiffOpencv(const char* pathname,  unsigned short*& myImage)

{

IplImage* src =cvLoadImage(“chd.tif”, CV_LOAD_IMAGE_ANYDEEPTH | CV_LOAD_IMAGE_ANYCOLOR |CV_LOAD_IMAGEUNCHANGED);

unsigned short*myImage = new unsigned short[src->width * src->height];

for (int r = 0;r < src->height;  r++)

{

      unsigned short* iRow = (unsigned short*)(src->imageData+ i * src->widthStrip);

      for(int c = 0; c < src->width; c++)

      {

             myImage[i * src->width + j] =*(iRow + j);

      }

}

return true;

}

函数调用格式:

unsigned short*  myImage =NULL;

read16bitTiffOpencv(“my.tiff”, myImage);

……

delete[] myImage;

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 可以使用ENVI软件自带的图像处理工具Batch Converter来批量转换tiff格式到ENVI标准格式。具体操作步骤如下: 1. 打开ENVI软件,点击菜单栏上的“Tools”,选择“Batch Converter”。 2. 在Batch Converter窗口中,点击“Add Files”按钮,添加所有需要转换的tiff格式文件。 3. 在“Input Format”栏中选择“TIFF”,在“Output Format”栏中选择“ENVI”,并设置输出文件夹路径。 4. 点击“Advanced”按钮,进入高级设置界面,在“Data Type”中选择影像数据类型。 5. 点击“Run”按钮开始批量转换。 完成以上步骤后,ENVI软件就会自动批量将tiff格式文件转换成ENVI标准格式,并保存到指定的输出文件夹中。 ### 回答2: 要将TIFF格式的图像文件批量转化为ENVI标准格式,您可以按照以下步骤进行操作: 1. 首先,确保您已经安装了能够进行图像格式转换的软件,比如ENVI或其他支持ENVI格式的软件。如果您还没有安装,可以到相关的官方网站下载并安装。 2. 打开软件,在菜单栏中选择“文件”或类似选项,然后点击“导入”或“批量导入”选项。 3. 在导入对话框中,选择要转换的TIFF格式图像文件所在的文件夹。您可以使用文件浏览器浏览到目标文件夹,并选择所有要转换的文件。 4. 确认导入选项。在导入对话框中,您可以选择一些导入选项,如坐标系、像元大小等。根据您的需求进行选择,然后点击“导入”或“开始转换”按钮。 5. 等待转换完成。转换过程可能需要一些时间,取决于您要转换的文件数量和文件大小。 6. 将转换后的图像文件保存为ENVI格式。完成转换后,软件会自动打开一个保存对话框。在保存对话框中,选择保存位置和文件名,并将文件格式设置为ENVI格式。 7. 确认保存选项。在保存对话框中,您可以选择一些保存选项,如压缩类型、文件头信息等。根据您的需求进行选择,然后点击“保存”或“确定”按钮。 8. 等待保存完成。保存过程可能需要一些时间,取决于您要保存的文件大小和计算机性能。 通过以上步骤,您可以将TIFF格式的图像文件批量转换为ENVI标准格式,并保存在您指定的位置。请注意,在操作过程中,确保您有足够的存储空间和计算资源来完成转换和保存。 ### 回答3: ENVI是一种常用的遥感图像处理软件,它支持多种图像格式,包括TIFF格式。如果要将TIFF格式的图像批量转化为ENVI标准格式,可以采取以下步骤: 1. 首先,打开ENVI软件,并点击"File"菜单中的"Batch Convert"选项。 2. 在弹出的对话框中,点击"Add Files"按钮,选择要转换的TIFF图像文件。可以一次选中多个文件进行批量转换。 3. 选择输出文件夹,即转换后的ENVI文件保存的位置。 4. 在对话框中选择转换后的文件格式为ENVI标准格式,可以根据需要调整其他参数,比如文件的投影信息、数据类型等。 5. 点击"Convert"按钮开始批量转换过程。 6. 程序会逐个对选中的TIFF文件进行转换,并在指定的输出文件夹中生成对应的ENVI文件。 7. 转换完成后,可以通过ENVI软件打开转换后的文件,进行进一步的处理和分析。 需要注意的是,在进行批量转换时,确保所选的TIFF文件格式是ENVI所支持的,避免进行转换的文件格式不兼容的情况。 通过上述步骤,即可将TIFF格式的图像批量转换为ENVI标准格式,并能够在ENVI软件中进行处理和分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小薛引路

喜欢的读者,可以打赏鼓励一下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值