基于彩色静止数字图像的信息隐藏算法在分析了信息隐藏算法的基本框架和彩色图像的 BMP 文件格式后,本文提出一种基于彩色静止数字图像的信息隐藏算法,分别如图 4.1 和图 4.2 所示。
算法 4.1(基于彩色静止数字图像的信息隐藏嵌入算法)- 将待隐藏信息(以下称签字信号)的字节长度写入 BMP 文件标头部分的保留字节中;
- 将签字信号转化为二进制数据码流;
- 将 BMP 文件图像数据部分的每个字节的高 7 位依次异或后再与上述二进制数码流异或后的结果写入最低位;
图 4.1. 基于彩色静止数字图像的信息隐藏嵌入过程 算法 4.2(基于彩色静止数字图像的信息隐藏提取算法)- 读 BMP 文件标头部分的保留字节值,设为 L,若为 0 则没有隐藏信息,终止算法;若不为 0 则其值为隐藏信息的字节长度;
- 将 BMP 文件图像数据部分的每个字节 8 位依次异或,并保存其结果;
- 重复第(2)步,使每 8 个 BMP 文件图像数据部分字节经过运算后组成一个隐藏信息字节;
- 重复(2)、(3)直到隐藏信息字节长度为 L。
图 4.2. 基于彩色静止数字图像的信息隐藏提取过程 可以证明,提取后的信息就是嵌入的签字信号。以签字信号的一个位 S 为例,设对应的一个位图数据字节为 X7X6X5X4X3X2X1X0, 嵌入签字信号后的位图数据字节为 X7X6X5X4X3X2X1X0', 其中:
1
| X0' = X7⊕X6⊕X5⊕X4⊕X3⊕X2⊕X1⊕S
|
设提取后的签字信号为 S',则,
1
2
3
4
| S' =X7⊕X6⊕X5⊕X4⊕X3⊕X2⊕X1⊕X0'
=(X7⊕X6⊕X5⊕X4⊕X3⊕X2⊕X1⊕X7)⊕(X6⊕X5⊕X4⊕X3⊕X2⊕X1⊕S)
=(X7⊕X6⊕X5⊕X4⊕X3⊕X2⊕X1⊕X7)⊕(X6⊕X5⊕X4⊕X3⊕X2⊕X1)⊕S
=S
|
证毕。
图 4.3. 原始 Lena 图像 本人用 Borland C++编写了一个实现上述算法的 简单应用程序" e 秀",如图 4.3 是一张作为签字信号的原始 Lena 图像,图 4.4 左边是没有嵌入隐藏信息的图像,右边是在左图中嵌入了图 4.3 后的效果,可以发现其相对于左图几乎没有改变。
图 4.4. 加入签字信号前后的图像变化 结论:
- 由于原始 24 位 BMP 图像文件隐藏信息后,其数据部分字节数值最多变化为 1,该字节代表的像素最多只变化了 1/256,所以,已隐藏信息的 BMP 图像与未隐藏信息的 BMP 图像,用肉眼是看不出差别的;
- 将信息直接嵌入像素 RGB 值的优点是嵌入信息的容量与所选取的掩护图像的大小成正比;
- 使用这种方法,一个大小为 32 k 的 24 位 BMP 图像文件,可以隐藏约 32 k/8=4k 的信息(忽略文件头不能隐藏数据的 54 个字节),该方法具有较高的信息隐藏率。
|