数字图像处理:二、 数字图像存储

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字节序标识24949(小端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条目格式

字段字节数说明
标签ID2预定义标识(如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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值