首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于彩色静止数字图像的信息隐藏技术研究(3)

基于彩色静止数字图像的信息隐藏技术研究(3)

彩色图像的 BMP 文件格式BMP 图像文件格式,是微软公司为其 WINDOWS 环境设置的标准图像格式,并且内含了一套图像处理的 API 函数。随着 WINDOWS                在世界范围内的普及, BMP 文件格式越来越多地被各种应用软件所支持。BMP                图像文件是位图文件,位图表示的是将一幅图像分割成栅格,栅格的每一点称为像素,每一个像素具有自己的 RGB                值,即一幅图像是由一系列像素点构成的点阵。位图文件格式支持 4 位 RLE(行程长度编码)以及 8 位和 24 位编码。在本文中我们只处理 24                位格式。24 位 BMP 图像文件的结构特点为: ① 每个文件只能非压缩地存放一幅彩色图像;② 文件头由 54                个字节的数据段组成,其中包含有该位图文件的类型、大小、图像尺寸及打印格式等; ③从第 55                个字节开始,是该文件的图像数据部分,数据的排列顺序以图像的左下角为起点,从左到右、从下到上,每连续 3                个字节便描述图像一个像素点的颜色信息,这三个字节分别代表蓝、绿、红三基色在此像素中的亮度,若某连续三个字节为:00H,00H,FFH,则表示该像素的颜色为纯红色。以下我们详细讨论位图文件的具体结构。
位图文件的标头标头包含位图文件的类型大小信息和版面信息。结构如下 [2]:
1
2
3
4
5
6
7
typedef struct tagBITMAPFILEHEADER {
  UINT bfType;
  DWORD bfSize;
  UINT bfReserved1;
  UINT bfReserved2;
  DWORD bfOffBits;
}BITMAPFILEHEADER;




下面是对这个清单中的代码元素的说明:               
bfType:指定文件类型,其值始终为"BM"。
bfSize:指定整个文件的大小(以字节为单位)。
bfReserved1:保留 -- 一般为 0。
bfReserved2:保留 -- 一般为 0。
bfOffBits:指定从 BitmapFileHeader 到图像首部的字节偏移量。
现在我们已经知道位图标头的用途就是标识位图文件。读取位图文件的每个程序都使用位图标头来进行文件验证。
位图信息标头随后的标头称为信息标头,其中包含图像本身的属性。下面说明如何指定 Windows 3.0(或更高版本)设备独立位图 (DIB) 的大小和颜色格式:
1
2
3
4
5
6
7
8
9
10
11
12
13
typedef struct tagBITMAPINFOHEADER {
  DWORD biSize;
  LONG biWidth;
  LONG biHeight;
  WORD biPlanes;
  WORD biBitCount;
  DWORD biCompression;
  DWORD biSizeImage;
  LONG biXPelsPerMeter;
  LONG biYPelsPerMeter;
  DWORD biClrUsed;
  DWORD biClrImportant;
} BITMAPINFOHEADER;




以上代码清单的每个元素说明如下:
biSize:指定 BITMAPINFOHEADER 结构所需的字节数。               
biWidth:指定位图的宽度(以象素为单位)。
biHeight:指定位图的高度(以象素为单位)。               
biPlanes:指定目标设备的位面数。这个成员变量的值必须为 1。
biBitCount:指定每个象素的位数。其值必须为                1、4、8 或 24。
biCompression:指定压缩位图的压缩类型。在 24 位格式中,该变量被设置为 0。               
biSizeImage:指定图像的大小(以字节为单位)。如果位图的格式是 BI_RGB,则将此成员变量设置为 0 是有效的。               
biXPelsPerMeter:为位图指定目标设备的水平分辨率(以"象素/米"为单位)。应用程序可用该值从最符合当前设备特征的资源群组中选择一个位图。               
biYPelsPerMeter:为位图指定目标设备的垂直分辨率(以"象素/米"为单位)。               
biClrUsed:指定位图实际所用的颜色表中的颜色索引数。如果 biBitCount 设为 24,则 biClrUsed 指定用来优化                Windows 调色板性能的参考颜色表。
biClrImportant:指定对位图的显示有重要影响的颜色索引数。如果此值为                0,则所有颜色都很重要。
现在已定义了创建图像所需的全部信息。
图像数据在 24 位格式中,图像中的每个象素都由存储为三字节的 RGB 序列表示。每个扫描行都被补足到 4                位。图像是自底而上存储的,即第一个扫描行是图像中的最后一个扫描行。下图显示了位图文件的标头(BITMAPHEADER)和位图信息标头(BITMAPINFOHEADER)以及部分图像数据:
图 3.1. 位图文件局部示例
返回列表