基于变长频带选择的JPEG图像可逆数据隐藏-文献学习

news/2024/11/15 2:29:09/

论文学习
原文题目: Reversible Data Hiding of JPEG Image Based on Adaptive Frequency Band Length
发表期刊: TCSVT 2023(中科院1区)
作者: Ningxiong Mao, Hongjie He, Fan Chen, Yuan Yuan, Lingfeng Qu


摘要

JPEG图像在互联网上被广泛使用。基于quantified discrete cosine transform (DCT) coefficients直方图平移的JPEG图像可逆数据隐藏方法是一个研究焦点。其中频带选择是一个影响JPEG-RDH 性能的关键步骤。在现有算法中频带选择是对整个频带进行嵌入性能评估,但DCT块排序后扩展AC系数的分布是在频带的前部,因此对整个频带进行性能评估会产生误差。本文提出一种自适应频带长度的IPEG图像RDH方法,在选择频带的同时确定频带的使用长度,如此可以有效减少无效平移。将不在使用选择频带的整个长度,而是每个频带的使用长度可能是不同的。然后利用一种联合求解机制求解最优频带长度,在求解频带长度的同时也完成了频带的选择。实验结果表明本文算法在标记图像视觉质量和文件大小增量方面优于现有先进方法。

一、 概述

基于DCT系数修改的JPEG 图像RDH方法主要的研究点有两个:(i)块选择;(ii) 频带选择。如何建立精确的频带失真代价函数是一个研究重点。在现有的工作中在评估一个频带的性能时是使用所有块进行评估,但由于频带中系数的分布是不同的,对整个频带的失真代价进行评估会产生误差。块按零AC系数数目进行降序排序后一般AC系数1和-1在频带的前部。针对上述问题,本文提出了一种自适应频带长度的JPEG-RDH方案。我们不在对整个频带进行嵌入性能评估,而是只使用每个频带中的部分DCT块并且每个频带使用的DCT 块数目可能是不同的。然后我们采用一种自适应求解机制在选择频带的过程中同时确定频带的使用长度。通过自适应频带长度的方法可以提高嵌入率并减少无效平移,从而有效减少失真和降低文件增长。实验分析表明本文方案是优于现有其他先进算法。本文方案的主要贡献如下。

  1. 自适应选择频带长度. 本文不在对整个频带进行嵌入性能评估,而是根据不同频带长度的嵌入性能选择频带的使用长度。选择使用频带的最优长度,如此尽可能的减少无效平移。
  2. 联合求解机制。在求解过程中频带选择和频带长度的确定是同时进行的。在求解频带长度过程中也在确定频带使用的优先级。

二、自适应频带长度模型

在现有算法中频带选择是作为一个重点研究对象,但现有的算法中都是对频带中的所有块或相同长度的部分块进行性能评估以确定频带的嵌入性能。但块经过0 系数数目降序排序后,非0 AC系数的分布一般是扩展系数E 在前部,大部分平移系数S在后部。故在满足嵌入容量的情况下应当尽量使用频带前部的系数。所以在选择频带的同时还需要选择频带的长度,频带的不同长度对应的单位容量失真是不同的。在图2中我们给出了一个自适应确定频带长度的图示。 本文在选择频带的过程中同时选择频带的使用长度。

在现有的工作中可以得出结论,影响频带嵌入性能的主要主要因素有频带在空间域产生的失真成本和 频带的嵌入率。频带的失真成本是由量化表Q决定,但Q是不能更改的。嵌入率是和频带的长度相关的,选择最优的频带长度就是选择最优的嵌入率。对于同一个频带,扩展系数E 的占比是越高则嵌入率越高。 嵌入率是指频带中扩展系数E 与 非零系数的比值,公式如下。
在这里插入图片描述
下图所示展示了四幅图像在不同频带长度的ER随着QF=70 and size 512×512。图中分别测试了块排序后频带中前1,000,2,000, 3,000, 4,000 个块的 嵌入率,可以观察到频带长度越短嵌入率是越高的。如果使用前1000个块即可完成秘密数据嵌入,则不使用更大的频带长度进行数据嵌入。因为使用越长的频带平移系数占比越高,造成的失真越大。如何确定选择频带的最优长度是接下来需要解决的问题。

根据频带长度的单位容量失真顺序更新每个频带的使用长度。每更新一次就是一个解,容量大于等于给定载荷的为可行解。在更新的过程中我们还有一个约束条件,当前更新的频带长度是必须大于前一次更新的频带长度,否则跳过本次更新频带长度保持不变。
在这里插入图片描述

三、嵌入/提取过程

主要介绍秘密数据嵌入,辅助信息的处理,数据提取和标记JPEG图像恢复的过程细节。
嵌入过程
1)对原始JPEG图像进行解码,得到量化后的DCT系数矩阵和量化表Q。
2)根据DCT块中零AC系数的数量对所有DCT块进行排序,对块进行zig-zag扫描展开生成系数矩阵。
3)通过等式(11)我们可以计算频带的每个长度的单位容量失真UT,然后根据单位容量失真的顺序排序频带长度。根据算法1我们可以得到一个可行解集合并找到最优解D。
4)在得到最优频带长度D后,我们可以参考论文[23] 中的直方图平移方法进行数据嵌入和DCT系数修改。
5)对修改的DCT系数进行编码得到标记JPEG图像。
辅助信息
在完成数据嵌入后,为了保证可逆性需要保存一些辅助信息。辅助信息包括:载荷的长度(log_2⁡P),频带选择位图(63bits),频带分割步长K(7bits),选择频带的长度位图。假设选择频带的个数为V,则记录选择频带长度需要的位图大小为 V*log_2⁡(N/K)。然后,这些辅助信息是嵌入到标记JPEG图像的头部。
提取恢复过程
得到标记JPEG图像后,首先对JPEG图像进行解码,得到量化后的DCT系数矩阵,量化表Q和辅助信息。在获得辅助信息后,我们可以根据论文[23]中的秘密数据提取规则提取秘密数据和恢复DCT系数。
对恢复的DCT系数进行编码,将图像无失真的恢复至原始JPEG图像。

四、实验结果

对比的方案有 Huang et al. [23],Hou et al.[24],Wedaj et al.[25],He et al.[28],Yin et al.[29]。本文主要对比了两个数据集,USC-SIPI (http://sipi.usc.edu/database/) database 中的六幅经典图像分别是Lena, Baboon, Peppers, Barbara, Boat and Elaine。

另一个是BOSSbase v1.01 (http://agents.fel.cvut.cz/boss) 数据集,我们从数据集中随机选择200幅图像进行测试。通过对实验结果的对比,验证了本文方案的整体性能是优于其他先进算法的。
参数确定
我们可以看到频带分割长度的数目是由分割步长K 决定的。K的取值将会影响频带的分割长度和解空间大小。在表1中给出了分割步长K取不同值时Lena和Peppers 图像在不同嵌入容量下的性能。在表1中,我们可以观察到当K=100时所有图像都可以得到最优的PSNR值除了lena 在10,000bits 容量下。Lena 和 Peppers 图像在三个容量点的平均值都是在K=100时得到最优的PSNR值,所以本文频带分割步长K=100.

下图中展示Lena 图像在5000bits,10,000 bits 和 15000bits的载荷下得到的频带长度最优解D with image size 512x512。在图4 中可以看到本文算法与传统现有方法的区别,现有方法使用频带长度的固定的一般是整个频带。本文算法选择的每个频带使用的长度可能是不一样的,可以根据频带的嵌入性能自适应确定频带的使用长度。
在这里插入图片描述
下图中展示了在BOSSbase 数据集上200幅测试图像的平均SSIM。本文方案在四个量化因子下的平均SSIM值分别为0.9985,0.9990,0.9994 和 0.9997。我们可以看到SSIM值都是大于0.99 接近于1,说明原始JPEG图像和标记JPEG图像是非常相似的。本文方案的平均SSIM 值也是优于其他先进方案的。上述的PSNR 和SSIM 实验结果都证明了本文方案具有更优的图像视觉质量相较于其他先进方案。
在这里插入图片描述

结论

提出一种自适应频带长度的JPEG可逆数据隐藏算法。在传统的频带选择中是对整个频带的嵌入性能进行评估,但DCT块排序后扩展AC系数是分布在频带的前部,所以对整个频带进行性能评估会产生误差。我们将根据频带中扩展AC系数的分布自适应使用选择频带的长度,尽可能的减少平移AC系数的使用数目。建立了频带长度的选择优化模型,通过联合求解机制确定频带长度最优解。利用联合求解机制我们能够在求解频带长度的同时选择频带。


http://www.ppmy.cn/news/89349.html

相关文章

深入篇【C++】类与对象:友元函数与友元类

深入篇【C】类与对象&#xff1a;友元函数与友元类 ①.提出问题&#xff1a;重载operator<<②.解决问题&#xff1a;友元Ⅰ.友元函数【特点】 Ⅱ.友元类【特点】 ③.总结问题 ①.提出问题&#xff1a;重载operator<< 如果我们尝试去重载运算符operator<<,你…

非计算机专业 3 年外包闭关 180 天入职字节,鬼知道我是怎么过来的

面试 大家都知道&#xff0c;现在的测试面试是越来越难了&#xff01;主要原因无非是两个&#xff1a; 随着测试这个行业的兴起&#xff0c;不管是在家待业的、对自己现在工作不满意的、大学选错专业的、缺钱的、想自己学的等等这些人绝大部分都是选择了去学习测试&#xff01…

164道网络安全工程师面试题(附答案)

最近有不少小伙伴跑来咨询&#xff1a; 想找网络安全工作&#xff0c;应该要怎么进行技术面试准备&#xff1f;工作不到 2 年&#xff0c;想跳槽看下机会&#xff0c;有没有相关的面试题呢&#xff1f; 为了更好地帮助大家高薪就业&#xff0c;今天就给大家分享两份网络安全工…

AnsiConsole-能够编写 ANSI 转义序列的控制台

Spectre.Console 是一款 .NET 库&#xff0c;提供了一种简单但强大的方式来创建美观和交互式的控制台应用程序。它允许开发人员轻松构建具有颜色、表格、进度条等功能的富命令行界面 (CLI)。 功能 Spectre.Console 的一些显着功能包括&#xff1a; 颜色&#xff1a;Spectre.C…

【Vector——简单使用】

文章目录 Vector定义和初始化访问和遍历插入和删除大小和容量其他操作 Vector vector是C中STL&#xff08;Standard Template Library&#xff09;库中的一个容器&#xff0c;可以用来存储和管理一组数据。 定义和初始化 定义vector对象需要使用vector<数据类型> 变量…

k8s-CKS真题-故障排查Sysdig falco

目录 题目环境搭建安装sysdig创建容器创建目录、文件 解题 - sysdig解题 - falco错误(centos下安装)模拟环境参考 题目 Task&#xff1a; 使用运行时检测工具来检测 Pod tomcat123 单个容器中频发生成和执行的异常进程。 有两种工具可供使用&#xff1a;sysdigfalco注&#xf…

BetaFlight Mark4 H7 Dual270 + BN880 + CRSF 配置存档

BetaFlight Mark4 H7 Dual270 BN880 CRSF 配置存档 1. 源由2. 配置2.1 端口2.2 系统2.3 对齐2.4 GPS2.5 救援2.6 PID2.7 Rate2.8 滤波2.9 接收器2.10 模式2.11 电机 3.差异4. 整机效果5. 飞行效果6. 参考资料7. 附录 - PID Tuning 1. 源由 手头这台航模四轴&#xff0c;基本…

总结TypeScript 的一些知识点:TypeScript 声明文件

TypeScript 声明文件 TypeScript 作为 JavaScript 的超集&#xff0c;在开发过程中不可避免要引用其他第三方的 JavaScript 的库。虽然通过直接引用可以调用库的类和方法&#xff0c;但是却无法使用TypeScript 诸如类型检查等特性功能。为了解决这个问题&#xff0c;需要将这些…