✅作者简介:热爱科研的Matlab仿真开发者,擅长数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。
🍎 往期回顾关注个人主页:Matlab科研工作室
👇 关注我领取海量matlab电子书和数学建模资料
🍊个人信条:格物致知,完整Matlab代码获取及仿真咨询内容私信。
🔥 内容介绍
本报告记录了Li等人2025年发表于《IEEE Transactions on Multimedia》的JPEG可逆数据隐藏方案的MATLAB实现。该方法将可逆数据嵌入量化DCT系数,融合三大核心技术:基于零系数计数与量化表数值计算DCT块平滑度的块排序优化、单位失真频带选择,以及保持无关AC系数不变以限制文件大小增量的动态直方图修改映射。该实现提供了无需额外工具箱的JPEG底层模块(块DCT变换+量化),以及完整的嵌入/提取全流程。算法正确性通过镜像MATLAB源码的Python测试框架完成验证(构建环境中无需部署MATLAB运行时)。在64×64测试图像上,该流水线在质量因子50、70、90下均实现完全可逆,载密图像峰值信噪比处于48.5~54.0 dB区间,结构相似性指数不低于0.9996,在50%容量负载下文件大小增量仅为18~32比特。
1. 引言
JPEG图像占据云照片存储的绝对主流,因此直接在量化DCT系数域操作的可逆数据隐藏技术,在嵌入身份标识或认证标签场景中具备极高应用价值。随意修改系数会劣化视觉质量,同时导致熵编码后的文件体积大幅膨胀。本实现的方案通过三项核心设计同时最小化两类问题:(1)优先向最平滑的图像块中嵌入数据;(2)选择单位失真最小的频带完成嵌入;(3)仅平移保证可逆性所必需的系数,其余所有系数保持完全不变。
2. 系统概述
灰度图像逐块经过8×8离散余弦变换,再通过质量因子缩放后的JPEG量化表完成量化,最终得到本方案直接操作的量化系数数组。每个图像块根据自身零AC系数数量与非零系数的量化值计算平滑度得分;所有图像块按平滑度降序排列,确保失真代价最低的块优先被分配嵌入容量。频带按照单位失真指标排序,依次选取直到满足目标嵌入容量要求。嵌入操作针对选定频带内幅值为±1的系数执行一维直方图平移;将幅值大于1的系数向外平移,腾空±2的直方图分箱。由于平滑度得分在该平移操作下保持不变,接收端可重新计算得到完全一致的块排序顺序,从±1/±2分箱中读取有效载荷,将大数值系数反向平移还原,最终实现所有DCT系数的精确无损恢复。