【图像隐藏】基于matlab像素预测和位平面压缩的加密图像可逆数据隐藏【含Matlab源码 2218期】

news2025/2/28 3:05:38

⛄一、加密图像可逆数据隐藏简介

1 信息隐藏技术概述
信息隐藏技术是把秘密信息隐藏在多媒体信息中的一种方法。图像是最适合信息隐藏的数据载体。信息隐藏的方法主要有数字水印技术、隐写术等。

信息隐藏可以分为有损信息隐藏与可逆信息隐藏信息隐藏技术, 区别在于接收端是否能无失真恢复载体。有损信息隐藏技术可以应用于多媒体数据的版权保护场景, 接收端提取秘密数据后不能完全恢复载体。可逆信息隐藏可应用在多媒体数据的非法篡改后, 可以验证其完整性并无损恢复, 比如医疗诊断信息等, 在接收端提取秘密信息后可以无失真恢复载体。

如图1所示, 信息隐藏技术的分类:根据信息隐藏的载体是否会造成永久性失真分为有损信息隐藏和可逆信息隐藏, 可逆信息隐藏又根据信息隐藏是否有加密分为密文域可逆信息隐藏和非密文可逆信息隐藏。
在这里插入图片描述
图1 信息隐藏技术的分类

2 加密图像的可逆信息隐藏的意义
随着信息技术的不断发展, 通信、信息安全领域的研究可以从不同的角度去探究, 多媒体数据在通信的传输中, 极易遭受到了非法截取、内容篡改等。多媒体数据涉及到的内容, 小到版权保护和隐私保护, 如医疗诊断信息、所有权信息、身份验证数据或软件序列号, 大到国家军事国防方面的图像信息。因此, 保护信息安全变得尤其的重要。

图像的加密和信息隐藏是保护信息安全的研究方向。密码学是通过加密可以保证数据内容的安全性。信息隐藏技术是通过嵌入秘密数据来验证其多媒体数据的完整性。

加密图像的可逆信息隐藏对于数据处理过程中的信息安全可以起到双重保险的作用, 加密对图像数据内容进行保护, 而嵌入的秘密数据可以起到在解密后监视多媒体数据的传输中是否被篡改, 验证其完整性和原始载体的无损恢复, 可以应用的场景, 如远程医学诊断、云环境下加密数据标注、司法上的数字取证等。

3 可逆信息隐藏研究现状
可逆信息隐藏技术的研究中, Tian[1]提出了可逆信息隐藏技术的差分展开机制, 通过将相邻像素差加倍并调整奇偶校验, 将秘密数据嵌入到原始图像中。Ni[2]等人首先提出了基于直方图平移的可逆信息隐藏方法, 对图像直方图中的峰值点平移, 修改像素值实现了可逆的秘密数据嵌入。M.Thodi和J.J.Rodriguez[3]中引入了预测误差扩展策略, 充分利用图像像素冗余, 取得了不错的率失真性能。Qin[4]等根据图像局部复杂度的分布自适应地选择参考像素, 并提出了基于预测的直方图平移的方案, 该方案可以获得数据嵌入时预测误差的集中直方图。J.Fridrich和M.Goljan[5]提出对图像压缩腾出空间来嵌入秘密信息实现可逆信息隐藏。

加密图像的可逆信息隐藏, 是将加密技术和信息隐藏技术两者结合起来, 分别从内容和存在的不同角度保护信息的安全性, 主要有两种情况:第一种, 先加密原始图像, 在加密图像后嵌入秘密信息;第二种, 先在原始图像嵌入秘密信息再加密, 得到密文图像。比如在云服务端, 可以在用户加密过的图像内容中嵌入额外的数据, 图像内容所有者在保护隐私不泄密的同时, 这样, 经过标记的加密图像就可以在云上进行有效的管理, 经过授权的接收方可以正确提取嵌入的数据, 并能无损地恢复原始明文图像。因此, 对加密图像的可逆信息隐藏方案, 从加密后的图像中找到空间进行数据隐藏, 保证数据提取和图像恢复。

文献[8,9,10]张和项提出的基于公钥加密的可逆信息隐藏算法就是利用公钥加密的加法同态性设计出了加密可逆信息隐藏算法, 文献[11]中肖也提出了利用具有加法同态性的加密算法处理原文图像后, 再利用多层差值直方图平移进行秘密数据嵌入。在加密图像信息隐藏领域引入了同态加密技术的早期算法, 引用Okamoto-Uchiyama公钥密码[14]来加密原文数据, 通过利用加密系统的同态属性适应性替换量化后的密文图像DCT系数来嵌入数字水印。

同态算法尤其是全同态加密技术的计算复杂度与密文扩展极大地影响了加密图像秘密数据嵌入的效率, 这种情况可以引入密文压缩技术有效提高嵌入效率, Zhang[7]提出了一种独立可分的加密域图像的可逆信息隐藏算法, 是利用密文压缩技术实现可分离的代表算法, 一种典型的加密图像的可逆信息隐藏方案。

4 加密图像的可逆信息隐藏
加密图像的可逆信息隐藏研究, 提出研究内容包括以下两个方面:

4.1 基于加法同态的直方图多峰值平移的可逆信息隐藏算法。
Subramanyam等人提出的加密算法[6], 这种加密算法具有加法同态性。加密原始图像M, 由一个秘密种子s用RC4算法得到密钥流K。加密算法对每一个像素进行模加运算得到加密图像C:
在这里插入图片描述
初始灰度图像M;随机产生密钥流K;n表示图像的像素个数;mi, j表示M的第i行j列个像素;Ci, j表示C的第i行j列个像素;ki, j表示K的第i行j列的值。

加密图像C的相邻像素模减得到差值:

在这里插入图片描述
(在构造ki, j时, 令组成相邻像素对的ki, j相同)

因此, di, j= (mi, j+1-mi, j) mod 256

由上可知, 密文域像素模减的差值和明文域像素模减的差值是一样的, 差值构成差值直方图。通过多层差值直方图平移进行信息嵌入。本文提出了将图像分块通过不同的扫描方式得到最优最多峰值之和的差值直方图, 进行多层平移信息嵌入, 可以根据不同的载体图像提高信息嵌入容量。

4.2 基于Paillier同态公钥加密与预测误差的可逆信息隐藏算法。
同态性加密算法首先由Rivest等人所提出[12]。现有的基于Paillier同态公钥加密的可逆信息隐藏算法计算复杂度高, 运算成本较大, 例如文献[8]。于此, 文献[13]提出了一种新的加密图像的可逆信息隐藏算法, 先在原始图像预留空间嵌入秘密数据, 图像加密前, 将载体图像分为嵌入像素和参考像素, 通过嵌入像素点的四个相邻的上下左右参考像素值来计算它的预测像素值, 实际像素值与预测像素值运算获得预测误差值。把预测误差值小于阈值T的嵌入像素定位为目标像素, 可以映射成一张目标像素定位表。

目标像素定位后, 图像进行Paillier同态加密:
在这里插入图片描述
再把秘密数据用相同的密钥和加密算法加密, 信息隐藏者将待嵌入的额外信息组成伪像素, 根据定位表的位置信息, 替换目标像素的值, 完成秘密信息嵌入。发送方不需要发送定位表。接收方拥有相应的密钥, 图像解密前, 都可以根据目标像素定位表来提取秘密信息。图像解密后, 可以通过四个相邻像素的预测误差值提取秘密信息并恢复图像。

⛄二、部分源代码

clear
clc
%I = imread(‘测试图像\Airplane_1.tiff’); %Jetplane
% I = imread(‘测试图像\Lake.tiff’);
I = imread(‘测试图像\Lena.tiff’);
% I = imread(‘测试图像\Man.tiff’);
% I = imread(‘测试图像\Peppers.tiff’);

%I = imread(‘测试图像\Airplane_0.tiff’);
% I = imread(‘测试图像\Baboon.tiff’);
% I = imread(‘测试图像\Tiffany.tiff’);

% I = imread(‘测试图像\gpic1.tif’); %尺寸:512384
% I = imread(‘测试图像\gpic2.tif’); %尺寸:384
512
%I = imread(‘测试图像\gpic1049.tif’);%尺寸:384*512
origin_I = double(I);
%% 产生二进制秘密数据
num_D = 3000000;
rand(‘seed’,0); %设置种子
D = round(rand(1,num_D)1); %产生稳定随机数
%% 设置密钥
K_en = 1; %图像加密密钥
K_sh = 2; %图像混洗密钥
K_hide=3; %数据嵌入密钥
%% 设置参数
Block_size = 4; %分块大小(存储分块大小的比特数需要调整,目前设为4bits)
L_fix = 3; %定长编码参数
L = 4; %相同比特流长度参数,方便修改
%% 空出图像空间并加密混洗图像(内容所有者)
[ES_I,num_Of,PL_len,PL_room,total_Room] = Vacate_Encrypt(origin_I,Block_size,L_fix,L,K_en,K_sh);
%% 净载荷空间大于num的情况下才进行数据嵌入(代表有压缩空间)
[row,col] = size(origin_I); %计算origin_I的行列值
num = ceil(log2(row))+ceil(log2(col))+2; %记录净压缩空间大小需要的比特数
if total_Room>=num %需要num比特记录净压缩空间大小
%% 在加密混洗图像中嵌入数据(数据嵌入者)
[stego_I,emD] = Data_Embed(ES_I,K_sh,K_hide,D);
num_emD = length(emD);
%% 在载密图像中提取秘密信息(接收者)
[exD] = Data_Extract(stego_I,K_sh,K_hide,num_emD);
%% 恢复载密图像(接收者)
[recover_I] = Image_Recover(stego_I,K_en,K_sh);
%% 图像对比
figure(1);
H=GetHis(origin_I);
plot(0:255,H);
area(0:255,H,‘FaceColor’,‘b’)
figure(2);
H=GetHis(ES_I);
plot(0:255,H);
area(0:255,H,‘FaceColor’,‘b’)
figure(3);
H=GetHis(stego_I);
plot(0:255,H);
area(0:255,H,‘FaceColor’,‘b’)
figure(4);
subplot(141);imshow(origin_I,[]);title(‘原始图像’);
subplot(142);imshow(ES_I,[]);title(‘加密图像’);
subplot(143);imshow(stego_I,[]);title(‘载密图像’);
subplot(144);imshow(recover_I,[]);title(‘恢复图像’);
%% 计算图像嵌入率
[m,n] = size(origin_I);
bpp = num_emD/(m
n);
%% 结果判断
check1 = isequal(emD,exD);
check2 = isequal(origin_I,recover_I);
if check1 == 1
disp(‘提取数据与嵌入数据完全相同!’)
else
disp(‘Warning!数据提取错误!’)
end
if check2 == 1
disp(‘重构图像与原始图像完全相同!’)
else
disp(‘Warning!图像重构错误!’)
end
%---------------结果输出----------------%
if check1 == 1 && check2 == 1
disp([‘Embedding capacity equal to : ’ num2str(num_emD) ’ bits’] )
disp([‘Embedding rate equal to : ’ num2str(bpp) ’ bpp’])
fprintf([‘该测试图像------------ OK’,‘\n\n’]);
else
fprintf([‘该测试图像------------ ERROR’,‘\n\n’]);
end
else %该图像太复杂,溢出预测误差太多,导致辅助信息大于压缩空间
disp(‘辅助信息大于压缩空间,导致无法存储数据!’)
fprintf([‘该测试图像------------ ERROR’,‘\n\n’]);
end

⛄三、运行结果

在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]彭青梅,禹谢华.基于加密图像的可逆信息隐藏[J].信息技术与信息化. 2018,(12)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/9564.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【虚幻引擎UE】UE5 简单实现范围计算圆圈绘制

先来看看可以实现的效果: 一、实现快速绘制圆圈的C函数 .cpp文件 #include "drawPolygon.h" #include "Components/LineBatchComponent.h" #include "Engine/World.h" #include "EngineGlobals.h" #include "Prim…

墨西哥专线详解:墨西哥专线时效多久,墨西哥专线价格多少?

墨西哥专线是国内直飞墨西哥或者海运墨西哥的专线物流服务,从中国到墨西哥的物流大约需要3到30天。不同的运输方式到墨西哥的时间不同。国际快递是最快的。通常3到5天就可以完成目的地派送,最慢的是海运专线,到墨西哥大约需要20到30天才能到达…

隐式神经表示二:超分网络学习傅里叶系数Local Texture Estimator for Implicit Representation Function

文章目录1. Local Texture Estimator for Implicit Representation Function1. 通过隐式神经网络表示方法 实现 超分辨率。2. 在编码器和解码器之间作者引入一个 local texture estimator3. 代码分析整体框架生成图像特征,编码器是一个常规的卷积网络,文…

【Pytorch with fastai】第 8 章 :协同过滤深入探讨

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

十四、Java String 类

Java String 类 字符串广泛应用 在 Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。 创建字符串 创建字符串最简单的方式如下: String str "xxx"; 在代码中遇到字符串常量时,这里的值是 &q…

大数据开源平台好在哪里?

当前是大数据发展时代,对于企业而言需要紧紧抓住契机乘势而上,利用好内部数据做好数字化转型,可以为企业带来更高的发展空间。大数据开源平台是助力企业提升办公效率的软件平台,那么,哪里有这样的大数据开源平台&#…

关于Git使用:fatal: Could not read from remote repository.的报错问题解决

目录 一:问题描述 二:解决过程 1,增加账号及邮箱 2,添加秘钥: 3,获取公钥并将其设置到云效里面 4,宝塔终端 解除密码 三:解决截图 一:问题描述 我们公司的版本仓…

【布隆过滤器】世界上大概有1 亿种小蛋糕,客户康宝要求这辈子不吃重复的小蛋糕。

文章目录需求概念思想问题优点缺点应用手写布隆过滤器补充需求 现在客户康宝有一个需求:世界上大概有 1 亿 种小蛋糕,康宝要求这辈子不吃重复种类的小蛋糕。 因为小蛋糕的种类很大可能只会增加,而不会减少,面对这种大数据量的要…

静态分析 Qt Ceator 组织的工程代码

文章目录Missing reference in range-for with non trivial type (QString) [clazy-range-loop]Slots named on_foo_bar are error prone [clazy-connect-by-name]Call to virtual method FlowLayout::takeAt during destruction bypasses virtual dispatch [clang-analyzer-op…

目的和目标的差异|丰田自动工程完结的目的、目标、应用化的意义和明确、二

目的和目标的差异|丰田自动工程完结的目的、目标、应用化的意义和明确、二 业务的方式改废|工作的目的、目标、输出的明确化 业务改善的一种方法被称为业务改废。意思是更好地改善现有的业务,废除不必要的业务。 使用这种方法,首先要明确想要改变和废除…

初学Java,遇错就懵,这类问题到底怎么处理呢?!

前言 众所周知,壹哥在干Java的路上已经越走越远,越陷越深,最近无意刷知乎时看到一位初学Java的迷惑少年,被报错干懵啦!!! 初学Java的同学,遇到报错一定不要慌,首先检查…

Android App规范处理中版本设置、发布模式、给数据集SQLite加密的讲解及使用(附源码 超详细必看)

运行有问题或需要源码请点赞关注收藏后评论区留言~~~ 一、版本设置 每个App都有三个基础信息,第一个是App的图标,第二个是App的名称,第三个是App的版本号。 一旦安装了某个版本的App,那么之后只能安装版本更新的同名App&#xf…

[公派访问学者]申请条件及选拔方法

国家公派访问学者绝大多数是经过层层选拔的,那么具体有哪些条件呢?又是如何选拔的呢?知识人网访问学者申请咨询老师和大家分享以下这篇文章。 一、申请条件 1、高级研究学者 申请时年龄不超过55岁。教学科研人员应为教授、博士生导师。申请人须同时具备以下条件…

基础类型存放在栈上,引用类型存放在堆上,请问是为什么? 字符串是存放在栈上么?

基础类型存放在栈上,引用类型存放在堆上,请问是为什么? 记住一句话:能量是守衡的,无非是时间换空间,空间换时间的问题 堆比栈大,栈比堆的运算速度快,对象是一个复杂的结构&#xf…

苹果手机和电脑怎么录屏?详细教程来了!

​相信小伙伴身边有不少人使用的是苹果手机和电脑。安卓手机和windows电脑怎么录屏不少人都已经知道了,那么苹果手机和电脑怎么录屏 呢?现在,小编就来详细的教教大家如何录屏,快拿出小本本记下来哦! 一.苹…

C++11标准模板(STL)- 算法(std::partition_copy)

定义于头文件 <algorithm> 算法库提供大量用途的函数&#xff08;例如查找、排序、计数、操作&#xff09;&#xff0c;它们在元素范围上操作。注意范围定义为 [first, last) &#xff0c;其中 last 指代要查询或修改的最后元素的后一个元素。 复制一个范围&#xff0c;…

扒去 Spring 事件监听机制的外衣,竟是观察者模式

Spring 中提供了一套默认的事件监听机制&#xff0c;在容器初始化时便使用了这套机制。同时&#xff0c;Spring 也提供了事件监听机制的接口扩展能力&#xff0c;开发者基于此可快速实现自定义的事件监听功能。Spring 的事件监听机制是在 JDK 事件监听的基础上进行的扩展&#…

基于结构应力方法的焊接结构疲劳评估及实例分析(上篇)

作者 | 裴宪军博士 &#xff0c;仿真秀专栏作者 一、写在文前 焊接技术作为现代制造业中的支柱技术之一&#xff0c;由于其整体性强、轻量化、经济性好等优点&#xff0c;焊接结构被广泛应用于轨道交通、航空航天&#xff0c;船舶、重型装备等领域&#xff0c;安全承载问题也…

八大排序总结篇

一、前言 到这里&#xff0c;数据结构的八大排序就算是全部写完了。这一期总结篇我们来测试一下八大排序的效率&#xff0c;印证一下八大排序的时间复杂度&#xff0c;以及深度剖析一下八大排序的稳定性问题。 二、八大排序 1、直接插入排序 http://t.csdn.cn/CdFFu 2、希尔排…

css:为什么我设置宽高百分比不生效

很多新手朋友写 css 的时候&#xff0c;有时发现设置宽高百分比有用&#xff0c;有时候又没用&#xff0c;到底怎么回事呢&#xff1f; 核心原则 设置百分比的时候&#xff0c;需要父元素有固定的高度&#xff0c;注意&#xff0c;这里说的只是需要父元素有固定的高度&#x…