论文阅读《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的模块功能。出的最晚,因为是官方出品,所以大势所趋,…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
