论文阅读《Robust Steganography for High Quality Images》高质量因子图片的鲁棒隐写
TCSVT 2023 中国科学技术大学

Kai Zeng, Kejiang Chen*, Weiming Zhang, Yaofei Wang, Nenghai Yu, "Robust Steganography for High Quality Images," in IEEE Transactions on Circuits and Systems for Video Technology, doi: 10.1109/TCSVT.2023.3250750.
一、问题背景
随着在线社交网络深入人们生活,大家习惯将手机拍摄的照片分享到社交网络上,因此利用手机拍摄图片通过社交网络进行隐蔽信息传输已经成为一种合理的行为。但是,手机拍摄保存通常是高质量因子JPEG图像,上传到社交网络后会以低质量因子重新压缩,而现有鲁棒隐写方法通常需要使用低质量因子的图片作为载体,缺少高质量因子JPEG图像鲁棒隐写的研究。

二、提出的方法
针对这个问题,提出一种用于高质量图像的鲁棒自适应隐写术方法(PMAS)。PMAS方法包含精细抖动调制和补偿处理两种操作。精细抖动调制可以确保修改系数的鲁棒性,并通过减少修改幅度来提高安全性;补偿处理会修改重新压缩后发生变化的系数,以确保未修改系数的鲁棒性。
1、PMAS算法的流程

所提出的方法,即Postprocessing and precise dither Modulation based robust Adaptive Steganography method (PMAS),其流程大致如下:
-
生成鲁棒封面(Robust Cover):使用JPEG压缩后的载体图像(d'c)生成鲁棒载体(x),这是通过将压缩后的DCT(离散余弦变换)系数除以隐写量化步长(∆)来实现的。
-
计算失真(Calculate Distortion):利用选定的失真函数(如JUNIWARD或UERD)计算初始失真(ϱ)。通过引入一个调整函数(F),调整修改幅度对失真分配的影响。
-
使用STC编码(Distortion Coding with STC):利用综合征-特里利斯编码(Syndrome-Trellis Codes,STC)根据初始失真和调整后的失真来编码信息。
-
精确抖动调制(Modify with PDM):应用精确抖动调制(PDM)来修改载体图像的DCT系数,以嵌入信息。PDM旨在减少修改幅度,从而提高安全性。
-
补偿处理(Post-process):对经过JPEG压缩的隐写图像进行后处理,以增强未修改系数的鲁棒性。后处理通过识别在压缩过程中发生变化的系数,并对其进行额外的修改来实现。
-
迭代过程:后处理可能需要迭代多轮,直到隐写图像在JPEG压缩后能够保持稳定,确保信息可以正确提取。
-
消息嵌入与提取:在嵌入过程中,通过上述步骤生成最终的隐写图像(dy),用于传输。在提取过程中,接收方首先生成鲁棒载体,然后利用错误更正编码(ECC)和STC从隐写图像中提取信息。
整个PMAS方法的核心在于通过精确的抖动调制和补偿处理来平衡隐写的鲁棒性和安全性,同时针对高质量图像在社交网络中常见的重新压缩情况(Downward Robust)进行优化。
2、精细抖动调制
精确抖动调制(Precise Dither Modulation, PDM)是文章中提出的一种用于改进隐写术安全性的方法,特别是在处理高QF(Quality Factor)图像时。在传统的抖动调制(Dither Modulation, DM)方法中,隐写修改通常涉及到对DCT(Discrete Cosine Transform)系数进行±1的修改。然而,当处理高QF图像且需要抵抗JPEG压缩时,可能需要更大的修改幅度来确保隐写的鲁棒性,这会牺牲安全性。

PDM的设计目的是在保证隐写鲁棒性的同时,减少修改幅度,从而提高隐写的安全性。以下是PDM的关键步骤和特点:
-
选择隐写量化步长(Steganographic Quantization Step):在“Downward Robust”场景中,选择一个大于1的隐写量化步长(∆),以增强对JPEG压缩的鲁棒性。
-
生成鲁棒载体(Robust Cover):通过将DCT系数除以隐写量化步长来生成鲁棒载体。
-
计算系数的鲁棒性(Calculate Coefficient Robustness):根据系数与量化区间边缘的距离来评估其鲁棒性。距离越远,鲁棒性越高。
-
精确修改(Precise Modification):只对那些鲁棒性高于某个阈值(t)的系数进行修改。这意味着只有当系数足够鲁棒时,才会进行隐写修改。修改时,选择距离当前系数最近的量化区间内的值,而不是简单地选择区间中点。这减少了修改幅度,从而提高了安全性。
-
保持隐写约束(Maintain Steganographic Constraints):确保修改后的系数满足隐写约束,即隐写量化后的值与预期的隐写消息相匹配。
-
优化安全性(Optimize Security):通过减少修改幅度,降低隐写算法被检测到的可能性。
PDM通过精确控制修改幅度和选择性地对系数进行修改,实现了在高QF图像中嵌入信息的同时,保持对JPEG压缩的鲁棒性,并提高了隐写安全性。这种方法特别适用于需要在社交网络等环境中分享高质量图片的场景,这些图片往往会被以较低的QF重新压缩。
补充:PDM简单理解版本如下:
- 选择步长:首先,PDM会根据图片的压缩程度选择一个合适的步长,这个步长决定了我们调整数值的大小。
- 评估鲁棒性:然后,PDM会评估每个数值调整的安全性和稳定性,确保调整后的数值在图片被压缩后仍然能够保持稳定。
- 精确修改:接着,PDM只会对那些评估结果良好的数值进行调整,并且调整的幅度尽可能小,这样即使图片被压缩,隐藏的信息也不容易丢失。
3、补偿处理
补偿处理(Post processing),在文章中提出的方法里,是用来增强隐写算法鲁棒性的一个关键步骤。它主要针对那些在JPEG重新压缩过程中可能发生变化的DCT(离散余弦变换)系数进行额外的修改,以确保这些系数在经过重新压缩后仍然能够保持稳定,从而保证隐写信息的正确提取。下面是补偿处理的详细步骤:
-
生成初始隐写图像:首先,通过精确抖动调制(PDM)或其他方法,将秘密信息嵌入到封面图像中,生成初始的隐写图像。
-
重新压缩隐写图像:将初始隐写图像通过模拟社交网络的JPEG压缩过程进行重新压缩,得到重新压缩后的隐写图像。
-
分析变化:对比重新压缩前后的隐写图像的DCT系数,找出那些在重新压缩过程中发生变化的系数。这些变化可能会导致隐写信息的丢失或错误。
-
确定补偿目标:根据分析结果,确定需要进行补偿处理的DCT系数。这些通常是那些在重新压缩后发生变化,且可能影响隐写信息提取的系数。
-
执行补偿修改:对于每一个需要补偿的DCT系数,根据其在重新压缩后的位置,进行适当的修改。这个修改的目的是将这些系数调整到一个更稳定的状态,减少它们在未来再次压缩时发生变化的可能性。
-
迭代过程:补偿处理可能需要多次迭代,每次迭代都包括重新压缩隐写图像、分析变化、执行补偿修改等步骤。每次迭代后,隐写图像的鲁棒性都会得到一定程度的提升。
-
结束条件:当经过一定次数的迭代后,或者当隐写图像在重新压缩后的变化低于某个阈值时,补偿处理可以结束。这时,得到的隐写图像在JPEG重新压缩下具有较好的鲁棒性。
补偿处理的目的是为了弥补在隐写过程中由于JPEG压缩引入的不稳定性,通过额外的修改来提高隐写信息的提取准确性。这种方法虽然可以提高鲁棒性,但同时也可能会对隐写的安全性产生一定的影响,因为它增加了对图像的修改。因此,在设计隐写算法时,需要在鲁棒性和安全性之间找到一个平衡点。
4、基于精确抖动调制的鲁棒隐写术算法

三、实验 (后续补充。。)
1、模拟的失真类型:
- 文章中使用了JUNIWARD和UERD两种失真函数来模拟和计算隐写过程中的失真。
2、实验对比方法:
- 将PMAS与不使用后处理、不使用精确抖动调制(使用传统的抖动调制,GDM)以及不进行失真调整的基线方法进行比较。
- 通过改变后处理轮数和失真调整函数,评估了PMAS在不同条件下的鲁棒性和安全性。
- 使用DCTR特征和SRNet神经网络作为检测器,评估了隐写算法的安全性


补充处理
精细化抖动机制

使用DCTR特征和SRNet神经网络作为检测器,评估了隐写算法的安全性。
四、Code资源
中国科学技术大学鲁棒隐写相关工作开源代码合集:
https://github.com/coriverchen/Robust_Steganography

相关文章:
论文阅读《Robust Steganography for High Quality Images》高质量因子图片的鲁棒隐写
TCSVT 2023 中国科学技术大学 Kai Zeng, Kejiang Chen*, Weiming Zhang, Yaofei Wang, Nenghai Yu, "Robust Steganography for High Quality Images," in IEEE Transactions on Circuits and Systems for Video Technology, doi: 10.1109/TCSVT.2023.3250750. 一、…...
node前端开发基本设置
加快下载源速度 要将 npm 切换到淘宝的源镜像,你可以按照以下步骤操作: 查看当前 npm 源: npm config get registry这个命令会显示当前使用的 npm 源地址,默认情况下它会是 https://registry.npmjs.org/。 切换到淘宝镜像&#…...
深入掌握:如何进入Docker容器并运行命令
感谢浪浪云支持发布 浪浪云活动链接 :https://langlangy.cn/?i8afa52 文章目录 查看正在运行的容器使用 docker exec 命令进入容器进入容器的交互式 shell在容器中运行命令 使用 docker attach 命令附加到容器检查容器日志退出容器从 docker exec 方式退出从 docke…...
把设计模式用起来(3)用不好的原因之时机不对
上一篇:《把设计模式用起来(3)——用不好的原因 之 实践不足》https://blog.csdn.net/nanyu/article/details/141939342 本篇继续讲设计模式用不好的常见原因,这是第二个:使用设计模式的时机不对。 二、时机不对 这里…...
【机器学习随笔】基于kmeans的车牌类型分类注意点
kmeans是无监督的聚类算法,可用于数据的分类。本文尝试用kmeans对车牌类型进行分类,记录使用过程中的注意点。 kmeans使用过程中涉及两个大部分,模型与分析。模型部分包括训练模型和使用模型,分析部分主要为可视化分析。两部分的主…...
matlab处理函数3
1. 直方图均衡化的 Matlab 实现 1.1 imhist 函数 功能:计算和显示数字数字图像的色彩直方图 格式:imhist(I,n) imhist(X,map) 说明:imhist(I,n) 其中,n 为指定的灰度级数目,缺省值为256;imhist(X…...
跨系统环境下LabVIEW程序稳定运行
在LabVIEW开发中,不同电脑的配置和操作系统(如Win11与Win7)可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行,需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下&a…...
开源项目低代码表单FormCreate中通过接口加载远程数据选项
在开源项目低代码表单 FormCreate 中,fetch 属性提供了强大的功能,允许从远程 API 加载数据并将其应用到表单组件中。通过灵活的配置,fetch 可以在多种场景下发挥作用,从简单的选项加载到复杂的动态数据处理。 源码地址: Github …...
k8s的搭建
一、安装环境 准备三台主机: 192.168.1.66 k8s-master 192.168.1.77 k8s-node01 192.168.1.88 k8s-node02 网段: Pod ⽹段 172.16.0.0/16 Service ⽹段 10.96.0.0/16 注:宿主机⽹段、Pod…...
人工智能与机器学习原理精解【19】
文章目录 马尔科夫链概述定义与性质分类应用领域收敛性马尔科夫链蒙特卡洛方法 马尔科夫链原理详解一、定义二、特性三、数学描述四、类型五、应用六、示例定义性质转移概率矩阵应用举例结论 马尔科夫链在语音识别和语音合成中的应用一、马尔科夫链在语音识别中的应用1. 基本概…...
DingoDB:多模态向量数据库的实践与应用
DingoDB:多模态向量数据库的实践与应用 1. 引言 在当今数据驱动的时代,高效处理和分析大规模、多样化的数据变得至关重要。DingoDB作为一个分布式多模态向量数据库,为我们提供了一个强大的解决方案。本文将深入探讨DingoDB的特性、安装过程…...
03.01、三合一
03.01、[简单] 三合一 1、题目描述 三合一。描述如何只用一个数组来实现三个栈。 你应该实现push(stackNum, value)、pop(stackNum)、isEmpty(stackNum)、peek(stackNum)方法。stackNum表示栈下标,value表示压入的值。 构造函数会传入一个stackSize参数…...
github上clone代码过程
从 GitHub 上拉取代码的过程非常简单,一般通过 git clone 命令来完成。以下是详细步骤: 下载git工具 要下载并安装 Git,你可以根据你的操作系统来选择相应的步骤。以下是如何在不同操作系统上安装 Git 的详细说明: 1. 在 Windo…...
ChatGLM3模型搭建教程
一、介绍 ChatGLM3 是智谱 AI 和清华大学 KEG 实验室联合发布的对话预训练模型。ChatGLM3-6B 是 ChatGLM3 系列中的开源模型,在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上,ChatGLM3-6B 引入了如下特性: 更强大的基础模型…...
多层建筑能源参数化模型和城市冠层模型的区别
多层建筑能源参数化(Multi-layer Building Energy Parameterization, BEP)模型和城市冠层模型(Urban Canopy Model, UCM)都是用于模拟城市环境中能量交换和微气候的数值模型,但它们的侧重点和应用场景有所不同。以下是…...
27. Redis并发问题
1. 前言 对于一个在线运行的系统,如果需要修改数据库已有数据,需要先读取旧数据,再写入新数据。因为读数据和写数据不是原子操作,所以在高并发的场景下,关注的数据可能会修改失败,需要使用锁控制。 2. 分布式场景 2.1 分布式锁场景 面试官提问: 为什么要使用分布式锁?…...
JVM四种垃圾回收算法以及G1垃圾回收器(面试)
JVM 垃圾回收算法 标记清除算法:标记清除算法将垃圾回收分为两个阶段:标记阶段和清除阶段。 在标记阶段通过根节点,标记所有从根节点开始的对象。然后,在清除阶段,清除所有未被标记的对象 适用场合: 存活对…...
Python 数学建模——Vikor 多标准决策方法
文章目录 前言原理步骤代码实例 前言 Vikor 归根到底其实属于一种综合评价方法。说到综合评价方法,TOPSIS(结合熵权法使用)、灰色关联度分析、秩和比法等方法你应该耳熟能详。Vikor 未必比这些方法更出色,但是可以拓展我们的视野。…...
计算机网络八股总结
这里写目录标题 网络模型划分(五层和七层)及每一层的功能五层网络模型七层网络模型(OSI模型) 三次握手和四次挥手具体过程及原因三次握手四次挥手 TCP/IP协议组成UDP协议与TCP/IP协议的区别Http协议相关知识网络地址,子…...
AMD CMD UMD CommonJs ESM 的历史和区别
这几个东西都是用于定义模块规范的。有些资料会提及到这些概念,不理清楚非常容易困惑。 ESM(ES Module) 这个实际上我们是最熟悉的,就是ES6的模块功能。出的最晚,因为是官方出品,所以大势所趋,…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...
【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...
