当前位置: 首页 > news >正文

图像处理之《基于多MSB预测和Huffman编码的加密图像可逆数据隐藏》论文精读

一、文章摘要

随着云存储和隐私保护的发展,可逆数据隐藏在加密图像中(RDHEI)作为一种技术越来越受到人们的关注,它可以:在图像加密领域嵌入额外的数据,确保嵌入的数据可以无差错地提取,原始图像可以无损地恢复。本文提出了一种基于多MSB(最高有效位)预测和Huffman编码的大容量RDHEI算法。首先,自适应预测每个像素的多MSB,并在原始图像中进行Huffman编码标记。然后,采用流密码法对图像进行加密。最后,利用空出的空间可以通过多MSB替换来嵌入额外的数据。实验结果表明,与现有方法相比,该方法具有更高的嵌入容量。

二、文章提出的方法

本文提出了一种基于多MSB预测和Huffman编码的大容量无差错数据提取和图像解密新方法。如图2所示,所提方法包含三个阶段:1)图像加密由内容所有者完成;2)数据嵌入由数据隐藏者完成;3)数据提取和图像解密由接收者完成。在图像加密阶段,我们首先在图像加密之前计算原始图像的标签映射,并将标签映射嵌入到加密后的图像中。在嵌入阶段,我们可以根据标签映射,通过自适应多MSB替换在每个加密像素中嵌入多比特信息。最后,对于具有数据隐藏密钥或图像加密密钥的接收者,可以分别进行数据提取或图像恢复,且提取的数据和恢复的图像均无差错。
在这里插入图片描述

A.标签映射生成

对于大小为m × n的原始图像I,首先计算每个像素的预测值。如图3所示,我们基于当前像素x(i, j)周围的三个像素,使用中值边缘检测器(MED)预测器[6]计算预测值px(i, j),其中1≤i≤m, 1≤j≤n, 公式如下:
在这里插入图片描述
在这里插入图片描述
接下来,我们将x(i, j)和px(i, j)的值通过公式(6)转换为8位二进制序列,表示为xk(i, j)和pxk(i, j),其中k = 1,2,…8。
在这里插入图片描述
然后,从MSB到LSB依次比较xk(i, j)和pxk(i, j)的每一位,直到某一位不同,当前像素的标签等于它们相同位的长度。由于转换后的二进制序列有8位,所以像素的标签有9个情况,即从0到8。假设标签值用t表示,即t = 0,1,2,…,8,根据式(7)得到的t的最大值为当前像素x(i, j)的标签。
在这里插入图片描述
其中x(i, j)tMSB和px(i, j)tMSB分别为x(i, j)和px(i, j)的t- MSB(像素的前t MSB)值。

由式(7)得到当前像素的标签值t,表示该像素在后续的数据隐藏过程中可以嵌入(t + 1)位。这是因为原始像素的前(t + 1)个MSB可以从它的预测值中得到。换句话说,原始像素的前t-MSB与其预测值相同,将其预测值对应位置的值求负即可得到第(t + 1)个MSB

例如,如图4所示,假设当前像素值x等于156,其预测值px等于150。然后将x和px转换为8位二进制序列,记为xk和pxk (k = 1,2,…, 8),即xk = ’ 10011100 ', pxk = ’ 10010110 ‘。通过比较,可以得到xk和pxk的序列在第5个位置是不同的,即前四位是相同的,因此像素x的标签为’ label = 4 ',即可以在该像素中嵌入5位信息。
在这里插入图片描述
最后,我们可以通过上述方法扫描图像中的所有像素,得到原始图像的标签映射。请注意,第一行和第一列中的像素是参考像素,没有标记。

B.图像加密

在该部分中,对原始图像的每个像素使用加密密钥Ke进行加密。首先,我们通过密钥Ke生成一个m × n的伪随机矩阵r。接下来,将当前像素x(i, j)及其对应的r(i, j)根据公式(6)转换为8位二进制序列,记为xk(i, j)和rk(i, j)。然后执行如下加密操作:
在这里插入图片描述

其中xke(i, j)是加密的8位二进制序列,⊕是异或(XOR)操作。最后由公式(9)计算加密后的像素xe(i, j),得到加密后的图像Ie。
在这里插入图片描述
C.Huffman 编码

根据Section III-A中获得的原始图像的标签映射,我们可以计算出图像中可以嵌入的数据总量。当然,标签映射需要转换成二进制序列作为辅助信息并嵌入到加密图像中,其目的是保证原始图像可以完全重建

对于自然图像中的所有像素,有9种标签,所以我们需要用9个二进制代码来表示所有类型的标签。由于每个标签的数量不同,我们通过Huffman编码来记录标签映射,这样可以有效地压缩辅助信息量,从而增加图像的有效载荷。因此,我们预定义了9种Huffman码来表示这9种标签,分别是{00,01,100,101,1100,1101,1110,11110,11111}。我们首先对9种标签按像素数进行排序,我们使用较短的代码表示像素数较大的标签。也就是说,对于9个Huffman编码,其中’ 00 ‘表示像素数最大的标签,’ 11111 '表示像素数最小的标签。

例如,在Lena图像中,标签映射的分布和相应的Huffman编码如表I所示,其中’-1’表示参考像素。我们可以看到,Lena中标签值为5的像素数量最大,因此这些像素被标记为’00’代码。标签值为1的像素数量最少,因此这些像素被标记为’11111’代码。
在这里插入图片描述

Huffman编码确定后,我们可以计算标签映射的长度,表示为LM,公式如下:
在这里插入图片描述

D.标签映射嵌入

为了在加密图像中产生空间来嵌入额外的数据,我们需要在数据隐藏操作之前先嵌入标签映射。在加密图像Ie中,我们首先通过Huffman编码将标签映射转换为二进制序列。然后,我们以Huffman编码规则、二进制序列的长度和二进制序列作为辅助信息。请注意,Huffman编码规则是9个Huffman编码,按照它们所代表的标签按0到8的顺序排列。接下来,为了保证Huffman编码规则和标签映射在后期能够完全提取出来,我们需要将部分辅助信息存储在第一行和第一列的参考像素中。这是因为我们在提取辅助信息时需要提前知道当前像素的标签,而当前像素的标签只能从前一个像素提取的辅助信息中获得,也就是说我们不能直接从当前像素中得到它的标签值。最后,根据标签映射,将剩余辅助信息和替换后的参考像素通过多MSB替换嵌入到加密图像中,嵌入公式如下:
在这里插入图片描述

其中t为Ie中当前像素xe(i, j)的标签值,bs为待嵌入的辅助信息。在嵌入辅助信息和参考像素后,我们得到了最终包含标签映射的加密图像。注意,为了在后续操作中完全提取辅助信息,需要在一些粗略图像中设置多个行和列作为参考像素

E.数据隐藏

在本小节中,在数据隐藏之前我们需要从获得的加密图像中提取Huffman编码规则和标签映射Ie’。首先,提取第一行和第一列的部分辅助信息,得到Huffman编码规则和辅助信息长度。然后根据已有的辅助信息和Huffman编码规则,获得当前像素的标签值t,提取(t + 1)位辅助信息。在获得所有辅助信息后,我们可以根据Huffman编码规则恢复标签映射。最后,根据式(11),将附加的数据嵌入到剩余像素中,剩余像素是用于将数据嵌入加密图像中的预留空间。因此,生成包含附加数据的标记加密图像Iew。注意,为了进一步增强嵌入数据的安全性,我们在嵌入过程之前使用数据隐藏密钥Kd对其进行加密。

F.数据提取和图像恢复

首先,合法的接收者可以从标记的加密图像Iew中提取Huffman编码规则和标签映射。然后,根据标签映射,以同样的方式提取参考像素和加密的附加数据。最后,将参考像素放回第一行和第一列。上面的工作可以在没有密钥的情况下完成,但是下一个过程将得到不同的结果,这取决于接收方拥有的不同的密钥。

如果接收方只有数据隐藏密钥Kd,则可以直接对提取出来的加密附加数据进行解密,获得所嵌入的信息。然而,由于没有加密密钥,原始图像无法重建。

如果接收方只有加密密钥Ke,则可以恢复原始图像而不丢失。这是因为数据隐藏密钥只对嵌入的数据进行加密,并不影响图像处理的过程。首先,根据Ke生成的伪随机矩阵r对得到的图像进行解密,并由式(8)处理。然后我们得到解密后的图像Iew,除了参考像素外,每个像素的前(t + 1)位都与原始像素不同。因为这些像素根据它们的标签值t嵌入了额外的(t + 1)比特的信息。接下来,我们从上到下,从左到右扫描图像中的像素,除了参考像素。使用MED预测器计算当前像素xew’(i, j)的预测值px(i, j),然后根据标签值t和预测值px(i, j)恢复原始像素x(i, j)。这是因为x(i, j)的t-MSB与对应的px(i, j)相同,x(i, j)的第(t + 1)个MSB可以通过对px(i, j)的第(t + 1)个MSB求负得到。注意,如果标签值等于8,则原始像素等于其预测值。重建过程表示如下:
在这里插入图片描述

其中,px(i, j)tMSB为由式(7)求得的px(i, j)的t- MSB值,bt+1为原像素的第(t +1)个二进制值,由下式求得:
在这里插入图片描述

式中,pxt+1(i, j)为由式(6)求得的px(i, j)的第(t +1)个二进制位。最后得到无误差的原始图像。

因此,只有数据隐藏密钥Kd和图像加密密钥Ke同时存在,接收方才能可逆地提取附加数据并恢复原始图像

三、汇报PPT

1、预备知识
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2、相关工作

在这里插入图片描述
3、提出方法

在这里插入图片描述
3.1、标签映射生成

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2、图像加密

在这里插入图片描述
3.3、Huffman编码

在这里插入图片描述
在这里插入图片描述

3.4、标签映射嵌入 & 3.5、数据隐藏

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.6 数据提取和图像解密

在这里插入图片描述
在这里插入图片描述
4、实验结果

在这里插入图片描述

4.1、安全性分析
在这里插入图片描述
4.2、性能分析

在这里插入图片描述

在这里插入图片描述

4.3、比较

在这里插入图片描述
在这里插入图片描述

5、结论

在这里插入图片描述

论文地址:Reversible Data Hiding in Encrypted Images Based on Multi-MSB Prediction and Huffman Coding

开源代码:This code is the implementation of the paper “Reversible Data Hiding in Encrypted Images Based on Multi-MSB Prediction and Huffman Coding”.

相关文章:

图像处理之《基于多MSB预测和Huffman编码的加密图像可逆数据隐藏》论文精读

一、文章摘要 随着云存储和隐私保护的发展,可逆数据隐藏在加密图像中(RDHEI)作为一种技术越来越受到人们的关注,它可以:在图像加密领域嵌入额外的数据,确保嵌入的数据可以无差错地提取,原始图像可以无损地恢复。本文提…...

Nginx安装配置项目部署然后加SSL

个人操作笔记记录 第一步:把 nginx 的源码包nginx-1.8.0.tar.gz上传到 linux 系统 第二步:解压缩 tar zxvf nginx-1.8.0.tar.gz 第三步:进入nginx-1.8.0目录 使用 configure 命令创建一 makeFile 文件。 直接复制过去运行 ./configur…...

【算法练习Day26】分发饼干摆动序列 最大子数组和

​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:练题 🎯长路漫漫浩浩,万事皆有期待 文章目录 分发饼干摆动序列最大子数组…...

redis缓存击穿/穿透/雪崩面试回答

面试官:什么是缓存穿透 ? 怎么解决 ? 候选人: 嗯~~,我想一下 缓存穿透是指查询一个一定不存在的数据,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到 DB 去查询,可能导致…...

Jmeter性能测试 —— TPS拐点寻找

寻找TPS性能拐点1、准备脚本①在本地电脑调试Jmeter压测脚本 ②上传到压测机Jmeter所在的服务器 2、执行压力测试①执行压测脚本 jmeter –n –t xianchengzuse.jmx ②记录业务压测数据 3、监控服务器性能指标 ①监控CPU输入top命令 ②监控内存 free –m ③jstat监控sweep和…...

科技资讯|苹果穿戴新专利,表带、服装等织物可变身柔性屏幕或扬声器

根据美国商标和专利局(USPTO)本周公示的清单,苹果公司获得了一项新的技术专利,可以在 Apple Watch 表带、服装等物品上,引入基于织物的柔性扬声器。 根据专利描述,通过在织物中嵌入声学组件(例…...

数据分析和机器学习的11个高级可视化图表介绍

可视化是一种强大的工具,用于以直观和可理解的方式传达复杂的数据模式和关系。它们在数据分析中发挥着至关重要的作用,提供了通常难以从原始数据或传统数字表示中辨别出来的见解。 可视化对于理解复杂的数据模式和关系至关重要,我们将介绍11…...

祝所有的程序猿们2023年的1024节快乐~

许久没更新Bolg了,眼看就要到1024节,其实也是没有可以更新的东西,目前在PhD,发现很多东西都还需要慢慢沉淀,放一doctoral college 开学的时候ppt的老图。 越往深处研究会陷入泥潭,考虑的细节将会越来越多&…...

Win10/Win11系统bitlocker正在等待激活如何解决?

有同学升级Win10系统后,发现C盘与D盘分区盘符中出现了黄色的锁定感叹号,还显示“bitlocker正在等待激活”,这可能是用户开启了bitlocker加密所导致的。下面就来看看解决的办法吧。 一、bitlocker正在等待激活的解决方法 打开控制面板-系统和安…...

酷开科技 | 酷开系统,为居家生活打开更精彩的窗口

电视在我们的日常生活中扮演着重要的角色。虽然,作为客厅C位的扛把子——电视的娱乐作用深入人心,但是,它的涵义和影响力却因我们每个人的具体生活环境而存在着种种差异,而我们的生活环境又受到我们所处的社会及文化环境的影响。 …...

谷歌真的不喜欢 Node.js ?

有人在 Quora 上提问,为什么谷歌不喜欢 Node.js 呢,Google 的 UX 工程师和来自 Node.js 团队的开发者分别回答了他们对这个问题的看法,对于编程语言来说,每一门语言都有它自己的优势,重要的是如何用它去解决问题。 谷…...

前端项目如何找到所有未被引用的文件

要找到 React 项目中所有未被引用的文件,可以使用工具来进行静态代码分析。以下是一些方法: 使用静态代码分析工具unimported: 静态代码分析工具可以找到未被引用的 JSX 文件。一个常用的工具是 “unimported”。以下是使用它的步骤&#xff…...

CANoe-使用IG Ethernet Packet Builder实现IP包分片的若干问题

在文章《CANoe-Ethernet IG和Ethernet Packet Builder的使用和区别》中,我们讲过Packet Builder可以组装多种类型的以太网报文: 当我们想组装一条icmpv4 echo request报文,payload只有1个字节的数据FF时,选择ICMPv4 Packet,创建一条ICMPv4报文,把payload改为1个字节: 然…...

UE4逆向篇-2_各类数据的查找方式

写在前面 1.通过前面的文章,相信各位已经能够自己找到GNames并使用DUMP工具导出GNames了。 2.本篇文章将介绍各种所需数据的查找方法。 一、准备工作 1.CheatEngine,本篇以及后续篇幅的重要工具。 2.一个记事本,保证你能记录下关键信息。…...

JDBC-day07(Apache-DBUtils实现CRUD操作)

九:Apache-DBUtils实现CRUD操作 1 Apache-DBUtils简介 Apache-DbUtils 是 Apache 组织提供的开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用DbUtils能极大简化JDBC编码的工作量,同时也不会影响程序的…...

零代码编程:用ChatGPT多线程批量将PDF文档转换为word格式

pdf2docx是Python的一个库,可以很方便的将PDF文档转换为word格式,首先安装这个库。 然后在ChatGPT中输入提示词: 你是一个Python编程专家,要完成一个文档格式转换的任务,具体步骤如下: 打开F盘的Books文件…...

codeshell安装配置

codeshell安装配置 1 注意事项1.1 Python版本问题 2 codeshell环境搭建2.1 codeshell使用软件各版本2.2 软件下载2.3 codeshell使用环境安装2.3.1 python-3.10.9-amd64.exe安装2.3.2 Anaconda3-2022.10-Windows-x86_64.exe安装2.3.3 创建环境2.3.4 Pytorch安装2.3.5 transforme…...

mfc140u.dll丢失的详细解决方法,最详细修复mfc140u.dll丢失的办法分享

在计算机技术日益发展的今天,我们不可避免地会遇到各种各样的技术问题。其中,“MFC140U.DLL丢失”是一个常见的错误,它可能会影响我们的电脑性能和软件运行。本文将详细介绍四种解决“MFC140U.DLL丢失”问题的方法。 首先,我们需…...

CMake

文章目录 前言一、快速开始编译C/C代码1. 只有源码的项目2. 包含库的项目3. 编译成库给他人使用使用cmake的流程1. 生成构建系统2. 执行构建3. 执行测试4. 安装 && 打包 二、cmake 语法简介1 变量2 条件语句3 脚本命令**消息打印****if-else**:**list命令**&#xff1a…...

互联网Java工程师面试题·Spring篇·第二弹

目录 3、Beans 3.1、什么是 spring bean? 3.2、spring 提供了哪些配置方式? 3.3、spring 支持集中 bean scope? 3.4、spring bean 容器的生命周期是什么样的? 3.5、什么是 spring 的内部 bean? 3.6、什么是 spri…...

Anko库、AppCompat库

Anko库Anko 是一个由 JetBrains 公司开发的 Kotlin 库,旨在简化 Android 应用程序的开发过程。它通过提供简洁的 API 和基于 Kotlin 的领域特定语言(DSL),减少了样板代码,提升了开发效率和代码可读性。Anko 的最后一个…...

电机模型、电流环PI控制器、PLL锁相环的标幺化处理及采样时间详解

电机标幺化、PI标幺化、锁相环PLL标幺化 详解电机模型相关标幺化处理 电流环PI控制器的标幺化处理 观测器中PLL锁相环的标幺化处理 采样时间处理 这是文档,不是代码,文档中的代码均为引用举例子的在电机控制的世界里,标幺化处理是一个绕不开的…...

2026-04-10:连接非零数字并乘以其数字和Ⅱ。用go语言,对每个查询区间 [l, r],按以下步骤处理字符串中的连续片段 s[l..r]: 1.在该子串中按从左到右的顺序,把所有“非零”字符数字

2026-04-10:连接非零数字并乘以其数字和Ⅱ。用go语言,对每个查询区间 [l, r],按以下步骤处理字符串中的连续片段 s[l…r]: 1.在该子串中按从左到右的顺序,把所有“非零”字符数字依次拼接成一个新整数 x;如…...

LexikJWTAuthenticationBundle源码解析:深入理解JWT认证实现原理

LexikJWTAuthenticationBundle源码解析:深入理解JWT认证实现原理 【免费下载链接】LexikJWTAuthenticationBundle JWT authentication for your Symfony API 项目地址: https://gitcode.com/gh_mirrors/le/LexikJWTAuthenticationBundle LexikJWTAuthenticat…...

MSGEQ7音频频谱芯片驱动设计与抗干扰实践

1. MSGEQ7 图形均衡器芯片驱动库技术解析MSGEQ7 是由 Mixed Signal Integration(MSI)公司设计的一款单片7通道图形均衡器集成电路,广泛应用于音频频谱分析、LED音乐可视化、嵌入式音频响应系统等场景。该芯片采用串行扫描架构,仅需…...

金融PHP支付代码审计清单(含OWASP ASVS 4.0对标项):27个必查风险点,附自动化检测脚本

第一章:金融PHP支付接口安全代码审计导论金融级PHP支付接口是资金流转的核心通道,其安全性直接关系到用户资产、商户信誉与平台合规性。不同于通用Web应用,支付接口需同时满足PCI DSS基础要求、中国《金融行业网络安全等级保护基本要求》&…...

亚洲美女-造相Z-TurboGPU算力优化:FP16量化+FlashAttention加速部署方案

亚洲美女-造相Z-Turbo GPU算力优化:FP16量化FlashAttention加速部署方案 想快速部署一个能生成高质量亚洲美女图片的AI模型,但又担心显存不够、速度太慢?今天分享一个经过深度优化的部署方案,让你用更少的资源,跑出更…...

PHP支付配置安全加固指南:从SSL证书到PCI DSS合规,7步实现生产环境零漏洞上线

第一章:PHP支付配置安全加固的核心原则与风险全景在现代Web应用中,PHP支付模块常因配置疏忽成为攻击者突破口。密钥硬编码、环境变量泄露、未校验回调签名、调试模式残留等隐患,极易导致资金盗刷、订单篡改或敏感信息外泄。安全加固并非仅依赖…...

在超大数据集下 DuckDB 与 MySQL 查询速度对比排

一、什么是urllib3? urllib3 是一个用于处理 HTTP 请求和连接池的强大、用户友好的 Python 库。 它可以帮助你: 发送各种 HTTP 请求(GET, POST, PUT, DELETE等)。 管理连接池,提高网络请求效率。 处理重试和重定向。 支…...

PHP代码“带病上线”时代终结:2024最严GDPR/等保合规AI校验清单(仅限首批200名开发者获取)

第一章:PHP代码“带病上线”时代终结:合规校验的范式革命过去,PHP项目常因缺乏统一的静态分析、类型约束与安全策略而陷入“先上线、后修复”的被动循环。如今,随着 PHP 8.0 原生支持联合类型、属性类型声明、枚举及 JIT 编译&…...