数字图像处理(2) 图像文件格式 东北林业大学信息学院 任洪娥 renhonge163@163.com
引言 存储图像信息 图像特点:以象素为单位,矩形区域 信息量大 与操作系统有关:windows、unix、mac 编码方式:无压缩、无损压缩、有损压缩 常用的图像文件格式:BMP、JPEG、TIFF、GIF
基本概念 颜色深度:1,2,4,8,16,24bits/pixel 压缩方式:LZW、rle CCITT3, CCITT4 JPEG, JPEG2000
BMP文件格式
什么是BMP文件格式 Windows操作系统的标准文件格式 虽然大部分BMP文件是不压缩的形式,它本身还是支持图像压缩的,如rle格式(行程长度编码,runlength encoding)和LZW压缩格式等
BMP文件结构
BMP图像文件头
图像信息头(1)
图像信息头(2) 注:在Windows98和Windows2000支持JPEG方式
图像信息头(3)
图像信息头结构定义
调色板和图像数据
GIF文件格式
GIF文件格式特点 采用复杂的LZW编码方式 一个GIF文件可以存储多幅图像 带有色彩表(全局、局部色彩表) 支持图像定序显示或覆盖 可以错行存放 支持文本覆盖
LZW压缩算法 1. 初始化字典。将所有可能的原始字符串加入字典,P:=空串。 2. C:=字符流的下一字符 3. P+C在字典中吗? a. 是,则P:=P+C b. 否, (1) 将对应P的编码加入到码流
LZW压缩算法(续) (2) 将P+C加入字典 (3) P:=C c. 字符流还有字符吗? (1) 是,goto 2 (2) 否, i. 输出P的编码 ii. 结束
LZW压缩举例 编码过程: 初始字典: A B C 字符流:
LZW解压缩算法 1. 初始化字典 2. cW := 码流的第一个码 3. 输出string(cW)到字符流 4. pW := cW a. 是 (1) 输出string(cW)到字符流 (2) P:=string(pW)
LZW解压缩算法(续) (3) C:=string(cW)的第一个字符 (4) 将字符串P+C加入到字典中 b. 否 (1) P:=string(pW) (2) C:=string(cW)的第一个字符 (3) 将P+C输出到字符流,并将它加入字典 7. 码流中还有编码吗? a. 是,goto 4 b. 否,解码过程结束
LZW解压缩举例 初始字典: A B C 解码过程: 码流:122473
GIF文件结构
JPEG文件格式
JPEG文件格式的特点 静止图像压缩 采用有损编码方式 是一种变换编码 对高频、低频信号区别对待
JPEG文件的标记 用以区分和识别图像数据及其相关信息 每个标记都是由2个字节组成,其前一个字节是固定值0xFF
JPEG文件的组织( 8个部分) 图像开始SOI(Start of Image)标记 APP0标记(Marker)
JPEG文件的组织(2) (3) APPn标记(Markers),其中n=1~15(任选) APPn长度 详细信息 (4) 一个或者多个量化表DQT 量化表长度(quantization table length) 量化表数目(quantization table number) 量化表(quantization table)
JPEG文件的组织(3) (5) 帧图像开始SOF0(Start of Frame)
JPEG文件的组织(4) (6) 一个或者多个霍夫曼表DHT 霍夫曼表的长度(Huffman table length) 类型、AC或者DC(Type, AC or DC) 索引(Index) 位表(bits table) 值表(value table)
JPEG文件的组织(5) (7) 扫描开始SOS(Start of Scan) 扫描开始长度(start of scan length) 颜色分量数(number of color components) 每个颜色分量 ID 交流系数表号 (AC table #) 直流系数表号 (DC table #) 压缩图像数据 (Compress image data) (8) 图像结束EOI(End of Image)
JPEG编码原理
JPEG文件结构
TIFF文件格式
什么是TIFF文件格式 TIFF是Tagged Image File Format的缩写,是一个广为应用的光栅图像文件格式,它的来源有: 扫描仪 CAD系统 地理信息 … 由Adobe公司授权,包括TIF标记和文档 TIFF包括公共标记和私有标记
TIFF版本信息 1980年发表最早的版本V1、V2 1989年发表版本V5.0 1992年,V6.0
TIFF格式的特点 支持从高端到低端的设备 可扩展性强,支持公共和私用的标记结构 支持各种压缩格式 有公共软件库支持 二值图 灰度图 调色板 真彩色 其他扩展
TIFF文件头 “II”/ “MM”
字节顺序
TIFF文件结构
TIFF文件的标记 公共标记(public tag) 在TIFF V5.0的说明中定义了45个标记 Compression 259 SHORT 1 所有TIFF图像必须支持以下标记: NewSubfileType、lmageWidth、 ImageLength、RowsPerStrip、StripOffsets StripByteCounts、Xresolution、Yresolution ResolutionUnit 私有标记(private tag) 由Aldus和Microsoft来分配 取值范围:32,768 - 65,535
TIFF文件的编码
TIFF文件的读取和保存 struct TIFF_img { unsigned char **mono; unsigned char **cmap; unsigned char ***color; char TIFF_type; char compress_type; int height; int width; }; int read_TIFF ( FILE *fp, struct TIFF_img *img ); int write_TIFF ( FILE *fp, struct TIFF_img *img );
Windows系统的图像显示 消息(message) 设备上下文(device context) 设备句柄(handle)