基于DCT与LSB算法的图像信息隐藏系统
本项目是一款基于MATLAB开发的信息安全演示系统,旨在通过数字图像处理技术实现秘密文本在静止载体图像中的隐蔽传输。系统集成了空间域最普及的LSB算法与变换域经典的DCT算法,不仅能够直观展示信息隐藏的效果,还通过客观指标(PSNR)与残差热图定量评估算法的性能优劣。
功能特性
空间域信息隐藏:利用LSB算法直接在像素层级进行操作,提供极大的数据嵌入容量和极高的处理速度。
变换域信息隐藏:利用DCT算法在频率域修改中频系数,增强了秘密信息在图像受到轻微扰动时的生存能力。
双重提取校验:系统支持对两种不同算法生成的含秘图像进行自动化提取,并重组为原始可读文本。
性能客观评价:自动计算含秘图像与原始载体之间的峰值信噪比(PSNR),刻画图像质量的降衷程度。
可视化分析:通过多子图对比展示原始图、含秘图以及放大了万倍的嵌入残差图,直观体现嵌入算法对视觉的影响。
中英文支持:文本转换逻辑采用uint16编码,可支持中文及特殊字符的二进制序列化。
系统要求
开发环境:MATLAB R2016b 或更高版本。
所需工具箱:Image Processing Toolbox(图像处理工具箱)。
硬件要求:标准配置计算机即可,建议内存4GB以上。
运行机制与实现逻辑
系统的运行流程严格遵循以下五个逻辑阶段:
- 预处理阶段:系统首先检索预置的载体图像,若不存在则自动生成动态测试图像。随后将图像强制转换为灰度格式,并统一缩放为512x512像素,以确保分块处理时的兼容性。
- 序列化阶段:通过专门的转换函数将输入的字符串文本转化为二进制比特流。该过程将每个字符映射为16比特的二进制序列,确保存储的准确性。
- 信息嵌入阶段:
- LSB嵌入:将二进制流按线性索引顺序逐一替换载体像素各个字节的最低有效位。
- DCT嵌入:将图像划分为8x8的不重叠分块,对每一块进行离散余弦变换。选取每块中频位置(4, 4)的系数,根据秘密位的值(0或1)对该系数进行量化偏移调整,最后通过逆离散余弦变换回空间域。
- 逆向提取阶段:
- LSB提取:直接读取含秘图像对应位置像素的最低位并重组。
- DCT提取:对含秘图像重新分块并进行离散余弦变换,通过计算特定频率系数在量化步长中的余数区间来判定隐藏的原始比特。
- 评价展示阶段:程序计算两幅含秘图像的均方误差与PSNR值,并在图形界面中同步渲染原图、效果图及差值图。
关键函数详述
脚本入口函数:负责全局环境清理、参数初始化(如嵌入强度系数alpha)、调用各功能模块并生成最终的运行报告。
LSB处理逻辑:通过位操作函数bitset和bitget实现对像素最末位的精准修改和读取,其复杂度与信息长度成线性关系。
DCT处理逻辑:
- 嵌入时:采用块处理循环,利用dct2函数将空间信息转为频率信息。通过floor函数配合偏移量(0.25*alpha或0.75*alpha)来实现对中频系数的修改,确保提取时的区分度。
- 提取时:利用mod取模运算判断系数落在哪个量化区间,从而恢复二进制标记。
数据转换辅助逻辑:
- 文本转比特:利用dec2bin将矩阵化处理后的uint16数值展开为长向量。
- 比特转文本:将长向量重新切割为16比特的分块,通过bin2dec还原数值后转换为字符。
质量评估逻辑:实现了标准的PSNR计算公式,当图像完全一致时自动返回100dB,否则返回基于均方误差计算的对数值。
数值溢出处理:在DCT逆变换后,图像像素可能超出0-255的取值范围,系统通过专门的限幅(Clamp)逻辑保证图像数据的合规性。
使用方法
- 启动MATLAB并进入本项目所在的文件夹。
- 在命令行窗口直接输入主脚本名称并回车。
- 系统将自动执行嵌入与提取流程,并在界面上弹出对比窗口。
- 观察命令行输出,验证“原始秘密文本”与“提取文本”是否完全一致,并对比不同算法下的PSNR数值。