基于顺序LSB嵌入与卡方分析的数字图像隐写及检测系统
项目介绍
本项目是一个用于教学与研究的数字图像安全实验平台,重点展示了空域中最基础的隐写技术——最低有效位(LSB)顺序嵌入,以及针对该技术的经典统计检测方法——卡方分析(Chi-square Analysis)。系统通过直观的代码逻辑和可视化界面,揭示了看似不可见的隐写操作如何在统计特性上留下可检测的“痕迹”。用户可以通过该系统观察嵌入率对图像质量的影响,并实时查看隐写分析概率随样本量变化的波动曲线。
功能特性
- 自动化载体生成:系统内置合成图像生成逻辑,通过正弦与余弦函数叠加产生具有灰度梯度的测试载体,确保在无外部图像时仍能进行完整流程演示。
- 顺序LSB嵌入:支持自定义嵌入率,将随机生成的二进制秘密信息逐像素替换载体图像的最低有效位。
- 差异可视化:系统自动计算载体图像与隐写图像的绝对误差,并生成差异图,直观展示隐写对像素的具体改动位置。
- 统计分布对比:提供局部像素对频率分布直方图,对比原始图像与隐写图像在灰度对上的分布差异。
- 分段卡方检测:通过滑动窗口算法,计算图像在不同样本量下的隐藏信息存在概率,生成检测判定概率曲线。
使用方法
- 启动环境:打开MATLAB软件。
- 配置参数:在代码脚本开头的参数设置区域,根据需要修改嵌入率(embedding_rate,范围0.0至1.0)。
- 执行系统:运行主程序脚本。
- 结果观测:
- 观察弹出窗口中的六个子图:原始图像、隐写图像、差异图、局部频率对比图、卡方检测判定曲线。
- 查看命令行窗口输出的嵌入位数、平均差异以及最终的判定概率。
系统要求
- 运行环境:MATLAB R2016b 或更高版本。
- 依赖功能:基础MATLAB函数库(涉及histcounts, gammainc, bitset等内置函数)。
核心实现逻辑与算法说明
1. 顺序LSB嵌入模块
该模块首先将二维图像矩阵拉平为一维向量,以便按照自然排列顺序处理。系统根据设定的嵌入率计算所需嵌入的总比特数。在遍历过程中,利用位处理函数修改每个像素值的最低有效位,使其与秘密二进制位一致。完成修改后,将一维向量重新转换回原始的二维矩阵尺寸,从而得到隐写后的图像。
2. 卡方隐写分析模块
这是系统的核心检测引擎,其实现基于“值对原理”(Pairs of Values, PoV)。
- 统计原理:顺序LSB嵌入会导致灰度值为2i和2i+1的像素出现频率趋于相等。
- 频率提取:系统统计图像的灰度直方图(0-255),并提取128对相邻灰度级的频数。
- 统计量计算:对于每一对灰度值,计算其实际观测值与理论期望值(即两频数的平均值)之间的卡方统计量。
- 概率估计:利用计算出的总卡方统计量和自由度(不为零的像素对数量减1),通过不完全伽马函数计算图像包含隐藏信息的概率值(p-value)。
3. 分段检测机制
为了展示检测算法的灵敏度随分析像素量增加的变化趋势,系统采用了分段分析法。通过设定固定的增长块大小(如1024像素),逐次增加参与统计分析的样本范围。每一阶段都会计算当前样本下的判定概率,最终绘制成动态的检测概率曲线。该曲线能够清晰地反映出:随着分析范围覆盖到隐写区域,判定概率会迅速向1.0靠近。
4. 统计结果可视化
系统集成了完整的数据可视化方案:
- 差异图分析:通过放大LSB位的变化,展示顺序嵌入是从图像左上角开始逐行进行的特性。
- 像素对分布:选取灰度值0-15的区间,以成对柱状图形式展示隐写前后像素对频率的“平衡化”现象。
- 联合视图:在一个画布上对比显示图像质量(PSNR相关的直观表现)与检测概率分布,体现了隐写安全性与容量之间的博弈。