基于上述讨论,信息隐藏技术不同的应用背景及相应的技术需求归纳如表2.1所示。表2.1 信息隐藏技术的不同应用背景及相应的技术需求 技术需求 鲁棒型水印技术需求鲁棒型水印(版权保护)脆弱型水印(篡改验证)扩充数据的嵌入鲁棒性要求的强弱蓄意攻击强弱不要求非几何失真变换(滤波、压缩等)强较弱较强几何失真变换(仿射变换、剪切等)强较强较强无失真变换强强强所需嵌入的数据量较小较小大签字信号的不可见效果好好较好除基于不同的应用背景外,信息隐藏技术还有其它的一些分类方法。根据隐藏数据的嵌入方法不同,信息隐藏技术可分为以下两类:(1) 在变换域(Transformation Domain),如傅立叶变换(FFT)域、离散余弦变换(DCT)域、离散小波变换(DWT)域等上实现信息的嵌入。这类技术主要是通过修改主信号某些指定的频域系数来嵌入数据。考虑到对低频区域系数的改动可能会影响到主信号的感知效果,而高频系数有易被破坏,因此,信息隐藏技术一般选取信号中频区域上的系数来嵌入签字信号,从而使之既满足不可感知性,又满足对诸如失真压缩等操作的鲁棒性。(2) 直接在空域(Spatial Domain)上实现信息的嵌入。这类方法的优点是快捷,并且对于主信号的几何变换、压缩等操作具备一定的抵抗能力,但对于信号滤波、加噪等操作的鲁棒性较差。根据检测过程中是否需要无隐藏数据的原始主信号,信息隐藏技术可分为盲提取(Blind Retrieval)和非盲提取(Non-Blind Retrieval)两类。由于信息隐藏技术中数据的嵌入与数据的检测或提取之间存在着天然的依赖关系,因此在设计嵌入算法时必须考虑到数据恢复的可能性。显然,若数据检测时未嵌有签字信号的原始主信号可知,那么只要所设计的嵌入算法可逆,并同时依赖一定的信号检测技术,在理论上即可以保证检测算法的成功性。但若原始主信号未知,信息隐藏的检测或提取算法设计起来就会更加复杂,在利用信号检测技术的同时,还依赖于信号估计和预测技术,以及巧妙的算法设计策略。由于盲提取信息隐藏技术更具有实用价值,它也越来越受到更多的关注。3 彩色图像的BMP文件格式BMP图像文件格式,是微软公司为其WINDOWS环境设置的标准图像格式,并且内含了一套图像处理的API函数。随着WINDOWS在世界范围内的普及, BMP文件格式越来越多地被各种应用软件所支持。BMP图像文件是位图文件,位图表示的是将一幅图像分割成栅格,栅格的每一点称为像素,每一个像素具有自己的RGB值,即一幅图像是由一系列像素点构成的点阵。位图文件格式支持4位RLE(行程长度编码)以及8位和24位编码。在本文中我们只处理 24 位格式。24位BMP图像文件的结构特点为: ① 每个文件只能非压缩地存放一幅彩色图像;② 文件头由54个字节的数据段组成,其中包含有该位图文件的类型、大小、图像尺寸及打印格式等; ③从第55个字节开始,是该文件的图像数据部分,数据的排列顺序以图像的左下角为起点,从左到右、从下到上,每连续3个字节便描述图像一个像素点的颜色信息,这三个字节分别代表蓝、绿、红三基色在此像素中的亮度,若某连续三个字节为:00H,00H,FFH,则表示该像素的颜色为纯红色。以下我们详细讨论位图文件的具体结构。3.1、位图文件的标头标头包含位图文件的类型大小信息和版面信息。结构如下[2]: typedef struct tagBITMAPFILEHEADER { UINT bfType; DWORD bfSize; UINT bfReserved1; UINT bfReserved2; DWORD bfOffBits;}BITMAPFILEHEADER; 下面是对这个清单中的代码元素的说明:bfType:指定文件类型,其值始终为"BM"。bfSize:指定整个文件的大小(以字节为单位)。bfReserved1:保留 -- 一般为0。bfReserved2:保留 -- 一般为0。bfOffBits:指定从 BitmapFileHeader 到图像首部的字节偏移量。现在我们已经知道位图标头的用途就是标识位图文件。读取位图文件的每个程序都使用位图标头来进行文件验证。3.2、位图信息标头随后的标头称为信息标头,其中包含图像本身的属性。下面说明如何指定 Windows 3.0(或更高版本)设备独立位图 (DIB) 的大小和颜色格式: 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,则所有颜色都很重要。现在已定义了创建图像所需的全部信息。
共有 网友评论