1. 图像存储介质分类与对比
1)半导体存储介质
- 常见类型:
- SD卡/CF卡:体积小、兼容性强,广泛用于相机和移动设备。
- U盘:便携即插即用,适合临时存储或小文件传输,但易丢失或损坏。
- 固态硬盘(SSD):读写速度快、抗震性强,适合频繁读写场景(如专业摄影)。
- 优势:高速度、轻便、无机械结构更耐用。
- 劣势:长期断电可能导致数据丢失;容量成本较高。
2) 磁性存储介质
- 常见类型:
- 机械硬盘(HDD):容量大、成本低,适合备份大量图像。
- 磁带:超大规模数据存储(如机构级归档),但读取速度慢。
- 优势:成本低廉、容量扩展性强。
- 劣势:抗震性差,物理损坏风险高;长期保存需定期通电维护。
3)光学存储介质
- 常见类型:
- 蓝光光盘/千年盘:长期保存(理论寿命达数十年至千年),抗电磁干扰。
- 优势:稳定性高,适合存档重要图像(如历史资料、艺术作品)。
- 劣势:写入速度慢;需防刮擦和潮湿环境。
2. 数字图像在计算机上的存储与读取
CPU操作的最小单位是8个位构成的字节(Byte),一个字节中8个比特的存储顺序称为比特序(Bit order),比特序有大端(Big endian)和小端(Little endian)之分。大端是指将高比特位(即逻辑上的高数据位)存储在低比特地址(即物理上的存储地址),而小端则是指将高比特位存储在高比特地址。
大端:读入内存为二进制数00110101,解析为十进制数53
小端:读入内存为二进制数10101100,解析为十进制数172
彩色图像逐波段BSQ存储模式:
图像元文件存放了图像的解码信息;
图像的解码信息如果单独存放,则称之为元文件或头文件;
如果这些解码信息与数据内容封装在同一个文件之中,由于它们常位于文件的起始位置,因此又称之为文件头,以与影像的数据内容区分开来 。
图像文件的头信息(即编码信息)通常包括:数据类型、解码顺序(从大端开始解码还是从小端开始解码)、图像的行数和列数、图像的波段数、多波段图像的存储方式、图像的偏移量和其它信息(如投影类型及其参数、颜色查找表等)。
图像存储格式包括开放式存储格式和封闭式存储格式两大类。
开放式存储格式的头文件和数据文件是分开存储的,其中以ENVI软件的标准数据存储格式最为常见。
封装式存储格式的头文件和数据文件封装在一起存储,如BMP、JPEG、PSD、CDR等图像格式。遥感图像处理中常见的TIFF、GeoTiff、HDF、HDF-EOF、ERDAS Imagine等图像格式。
TIFF(Tagged Image File Format)是一种基于标志域的图形,依靠指针连接来组织数据。TIFF与其他标记语言不同的是除了图像数据还可以记录其他信息。其他的图像格式可以嵌入到TIFF中为其所用。
TIFF有四种类型:
TIFF-B,双色;
TIFF-G,黑白灰度;
TIFF-P,带调色板的彩色图形;
TIFF-R,适合RGB色彩的图形。
封装式存储格式:以TIFF格式为例 TIFF格式有三级结构,从高到低依次为:文件头、标识信息区(IFD)以及图像数据区。TIFF 文件是由系列 8 bit 字节(bytes)构成,允许的 TIFF 文件最大为 2**32 约为 4 Gb (bigTIFF 允许超过 4 Gb)。TIFF由四部分组成,分别是图像文件头Image File Header(IFH)、图像文件目录Image File Directory(IFD)、目录项Directory Entry(DE)、图像数据。
图像由8字节的文件头起始,文件头指向第一个文件目录。文件目录中包含了图像的各种信息,也包含了一个指向实际图像数据的指针。
文件头 (8字节) |
图像文件目录IFD#1 (描述图像参数并指向数据) |
数据区域 (实际像素数据/缩略图等) |
图像文件目录IFD#2 (可选,多图像时附加的目录) |
数据区域 |
... |
1)图像文件头(IFH)
Byte 0-1: 字节顺序标志位, 值为II或者MM。II表示小字节在前, 又称为little-endian。MM表示大字节在前,又成为big-endian。
Byte 2-3: TIFF的标志位,一般都是42
Byte 4-7: 第一个IFD的偏移量。可以在任意位置, 但必须是在一个字的边界,也就是说必须是2的整数倍。
偏移 | 字段 | 字节数 | 详细说明 | 示例值(十六进制) |
---|---|---|---|---|
0x00 | 字节序标识 | 2 | 4949 (小端II) 或 4D4D (大端MM) | 49 49 |
0x02 | 版本号 | 2 | 固定值 002A (十进制42) | 2A 00 |
0x04 | 首个IFD偏移 | 4 | 指向第一个IFD的起始位置(从文件头开始) | 08 00 00 00 |
示例解析:
文件头 49 49 2A 00 08 00 00 00
字节序:49 49 → 小端(Intel格式)
版本号:2A 00 → 42(小端解析为0x002A)
首个IFD位置:08 00 00 00 → 偏移8字节(紧接文件头)
2)图像文件目录(IFD)
由于一个TIFF文件中可以有多个图像,而一个IFD只标识一个图像的所有属性,所以,一个TIFF文件中有几个图像,就会有几个IFD。
Byte 0-1: 表示此IFD包含了多少个DE。每个DE只标识了图像的一个属性,那么这幅图像有N个属性就会有N个DE。(假设数目为n)
Byte 2-(n*12+1): n个DE
Byte (n*12+2)-(n*12+5): 下一个IFD的偏移量,如果没有(只有一幅图像)则置为0
条目数 (2字节) → 本IFD包含的条目数量 |
条目1 (12字节,标签ID + 数据类型 + 数据量 + 数据/偏移) |
条目2 (12字节) |
... |
下一IFD偏移 (4) → 0表示无后续IFD |
IFD条目格式
字段 | 字节数 | 说明 |
---|---|---|
标签ID | 2 | 预定义标识(如256=宽度) |
数据类型 | 2 | 数据类型代码(1=BYTE, 3=SHORT, 4=LONG等) |
数据数量 | 4 | 该类型数据的元素个数(如宽度为1个LONG值) |
数据值 | 4 | 若数据总字节数≤4,直接存储;否则存储指向数据区的偏移(如字符串地址) |
关键标签与数据示例
示例IFD条目:图像宽度(标签256)
Tag ID: 00 01 (256) → 标签256=ImageWidth
Type: 00 03 (3) → 数据类型3=SHORT(2字节无符号整数)
Count: 00 00 00 01 → 数据数量为1
Value: 00 04 00 00 → 数据值=0x0400(小端解析为1024像素)
示例IFD条目:压缩方式(标签259)
Tag ID: 01 03 (259) → 标签259=Compression
Type: 00 03 (3) → 数据类型3=SHORT
Count: 00 00 00 01 → 数量1
Value: 00 01 00 00 → 值1(无压缩)
3)目录项(DE)
Byte 0-1: TAG,即该属性的标签编号,在文件目录中按升序排列。
Byte 2-3: 数据类型。
Byte 4-7: 数量。通过类型和数量可以确定存储此TAG的数据需要占据的字节数
Byte 8-11: 如果数据占用的字节数少于4, 则数据直接存于此。 如果超过4个,则这里存放的是指向实际数据的指针
数据区域组织形式
连续存储:单块数据(适用于小文件)
分条存储(Strips):
Strip#1数据← 由StripOffsets[0]指向 |
Strip#2数据← StripOffsets[1] |
分片存储(Tiles):适用于大图像的分块存储(如地图)
完整解析流程
步骤1:解析文件头 读取前8字节,确认字节序、版本号,定位首个IFD偏移(如0x0008)。
步骤2:解析首个IFD 读取IFD条目数(如2字节 00 02 → 2个条目)
按12字节解析每个条目:
条目1:00 01 00 03 00 00 00 01 00 04 00 00 → 宽度=1024像素
条目2:01 11 00 04 00 00 00 02 00 00 20 00 → StripOffsets指向0x2000
下一IFD偏移:00 00 00 00 → 无后续IFD
步骤3:定位数据区域 根据StripOffsets标签值(如0x2000),跳转到该位置读取像素数据。
参考:
TIFF图像文件格式与实例分析_tiff文件头-优快云博客 https://blog.youkuaiyun.com/tony5243/article/details/123410603?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-123410603-blog-100684635.235%5Ev43%5Epc_blog_bottom_relevance_base1&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-123410603-blog-100684635.235%5Ev43%5Epc_blog_bottom_relevance_base1&utm_relevant_index=1
详解TIFF图像格式:结构、组成部分与实例解析-优快云博客 https://blog.youkuaiyun.com/oYinHeZhiGuang/article/details/121710467?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522889d74e1a02fd345ebff0b11fbf877e9%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=889d74e1a02fd345ebff0b11fbf877e9&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-121710467-null-null.142^v102^pc_search_result_base7&utm_term=TIFF%E6%96%87%E4%BB%B6%E5%AD%98%E5%82%A8&spm=1018.2226.3001.4187
TIFF文件详解-优快云博客 https://blog.youkuaiyun.com/dashaowei3861/article/details/102085342?ops_request_misc=&request_id=&biz_id=102&utm_term=TIFF%E6%96%87%E4%BB%B6%E5%AD%98%E5%82%A8&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-6-102085342.142^v102^pc_search_result_base7&spm=1018.2226.3001.4187