编辑
2026-06-01
信息隐藏实验报告
00

目录

实验八:调色板图像隐写实验
实验目的
实验内容
实验步骤
实验分析

实验八:调色板图像隐写实验

实验目的

  1. 理解调色板图像的存储结构及索引机制,掌握基于调色板扩展的信息隐藏原理。
  2. 学习使用MATLAB编程实现图像隐写算法,能够将秘密信息嵌入到载体图像中。
  3. 掌握从含密图像中提取隐藏信息的方法,理解密钥在信息隐藏与提取过程中的同步作用。
  4. 通过实际操作,验证隐写算法的不可感知性,加深对信息隐藏技术的认识。

实验内容

  • 调色板扩展与隐写原理分析:分析载体图像的调色板结构,通过修改蓝色分量创建扩展调色板,为信息隐藏提供冗余空间。
  • MATLAB环境配置与数据准备:在MATLAB中设置工作目录,加载载体图像和包含秘密信息的文本文件。
  • 秘密信息嵌入过程:编写并运行嵌入脚本,利用随机数生成器选择像素位置,根据秘密信息的比特位修改像素索引值。
  • 秘密信息提取与验证:编写并运行提取脚本,利用已知参数读取含密图像的像素索引,还原秘密信息并验证准确性。

实验步骤

步骤1:启动MATLAB并设置工作目录。 打开操作机桌面上的MATLAB R2014a软件。在软件窗口上方的地址栏中输入实验目录路径 D:\11、信息安全\4、信息内容安全\23信息隐藏课程\13.调色板图像隐写实验\hongya,点击搜索按钮。确保“当前文件夹”窗口中列出了实验所需的所有文件,包括 lenaindex.bmphidden.txt 以及相关的 .m 脚本文件。

步骤2:运行信息嵌入脚本。 在当前文件夹中双击打开 simpleindexhiding.m 文件。该脚本首先读取载体图像 lenaindex.bmp 获取索引矩阵 x 和调色板 map。接着读取 hidden.txt 中的秘密信息,并将其转换为二进制位流。脚本通过循环计算原始调色板的有效长度 oplength,然后复制调色板并将复制部分的蓝色分量增加 0.0001,构建扩展调色板 wmap。设定随机种子密钥 key=1234,调用 randselect 函数根据消息长度随机选取隐藏位置。最后遍历消息位,若位为 1,则将对应像素的索引值修改为原索引加 oplength。处理完成后,使用 imwrite 函数将携密图像保存为 lenaindex1.bmp

步骤3:验证携密图像生成效果。 点击脚本运行按钮,观察弹出的Figure窗口。窗口左侧显示原始图像,右侧显示生成的携密图像 lenaindex1.bmp。通过对比两张图像,确认视觉上没有明显差异,验证了隐写算法的隐蔽性。同时检查MATLAB当前文件夹,确认已成功生成 lenaindex1.bmp 文件。

步骤4:运行信息提取脚本。 双击打开 simpleextract.m 文件。脚本首先读取生成的携密图像 lenaindex1.bmp。为了正确提取信息,需设置与嵌入时一致的参数:密钥 key=1234,需要提取的比特数 count=24(对应3个字符),以及原始调色板的长度 oplength=64。再次调用 randselect 函数生成相同的随机位置序列。脚本遍历这些位置的像素索引值,若索引值大于 64,则判定该位隐藏信息为 1,否则为 0。提取出的二进制序列经 bit2str 转换为字符串后,写入新建的 message.txt 文件中。

步骤5:验证提取结果。 运行提取脚本后,在当前文件夹中查看是否生成了 message.txt 文件。双击打开该文本文件,检查其内容是否为预期的秘密信息“147”。若显示内容正确,说明实验成功完成了信息的嵌入与提取全过程。

实验分析

实验结果 本实验成功利用MATLAB实现了基于调色板扩展的图像信息隐写。通过将秘密信息“147”嵌入到载体图像 lenaindex.bmp 中,生成了肉眼无法分辨差异的携密图像 lenaindex1.bmp。在提取阶段,利用正确的密钥和参数,成功从携密图像中还原出 message.txt 文件,其内容准确无误地显示为“147”,验证了隐写算法的正确性和鲁棒性。

个人收获 通过本次实验,我深入理解了调色板图像隐写的技术原理,特别是如何利用人眼对蓝色分量不敏感的特性来扩展调色板以隐藏数据。我掌握了MATLAB在图像矩阵操作、文件读写及调色板修改方面的编程技巧。同时,我也认识到密钥同步、随机位置选择以及原始调色板长度等参数在信息提取中的关键作用,这为今后学习更复杂的信息安全算法打下了坚实基础。

本文作者:Linxiong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!