CN113378186A - 一种基于编码的图像加密隐藏信息的方法及装置 - Google Patents

一种基于编码的图像加密隐藏信息的方法及装置 Download PDF

Info

Publication number
CN113378186A
CN113378186A CN202110498785.XA CN202110498785A CN113378186A CN 113378186 A CN113378186 A CN 113378186A CN 202110498785 A CN202110498785 A CN 202110498785A CN 113378186 A CN113378186 A CN 113378186A
Authority
CN
China
Prior art keywords
data
image
initial
sequence
compressed image
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202110498785.XA
Other languages
English (en)
Other versions
CN113378186B (zh
Inventor
袁义
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hunan University of Technology
Original Assignee
Hunan University of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hunan University of Technology filed Critical Hunan University of Technology
Priority to CN202110498785.XA priority Critical patent/CN113378186B/zh
Publication of CN113378186A publication Critical patent/CN113378186A/zh
Application granted granted Critical
Publication of CN113378186B publication Critical patent/CN113378186B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Multimedia (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明涉及图像处理技术领域,特别是指一种基于编码的图像加密隐藏信息的方法及装置,方法包括压缩过程、秘密数据嵌入过程、恢复过程以及秘密数据提取过程:所述压缩过程包括低位合并、高位压缩、生成随机序列进行补位、使用秘密数据替换补位数据使得秘密数据嵌入到图像中,将低位数据、高位数据、嵌入秘密数据的补位数据顺次连接,重新生成的图像即为初始加密压缩图像,再对图像进行像素扩散,得到最终加密压缩图像。采用本发明,可以使图像生成较大的可嵌入控件,且具有较高的安全性,在图像加密的同时直接生成含有秘密数据的加密图像。

Description

一种基于编码的图像加密隐藏信息的方法及装置
技术领域
本发明涉及图像处理技术领域,特别是指一种基于编码的图像加密隐藏信息的方法及装置。
背景技术
信息隐藏技术作为信息安全的重要方法之一,近年来发展较为迅速,但伴随着应用领域的不断扩展,传统的信息隐藏技术已经不能完全胜任新的应用需求,在很多应用领域,需要在加密后的图像中嵌入信息,且秘密数据的嵌入不能破坏载体图像,这就使得加密域信息隐藏技术应运而生,特别是加密域的可逆信息隐藏技术,因其良好的特性得到迅速发展。如在医学方面,经常需要数字化存储病人的检查结果,为了保护病人隐私,往往需要对一些医学图像进行加密,而为了便于管理,第三方管理者需要在加密后的医学图像中嵌入病人的相关信息,并且最好能在不解密图像的情形下,能对加密图像进行一些分类、查找、检索等,最重要的是:信息的嵌入决不能影响到病人的医学检测图像,否则可能造成误诊、错诊,后果不堪设想,类似于这样的应用需求在军事、云服务、商业、法律等众多领域也不胜枚举。
目前密文域的可逆信息隐藏技术集中在:基于差值扩展、直方图平移、图像插值、预测误差、同态加密等方向,围绕这些技术研究人员提出了很多好的方法,但多数算法是从明文图像的可逆信息隐藏方法演变而来,这些算法主要是针对明文图像的特征而设计,而在密文域图像中很多特性受到了制约,因而嵌入率较低,性能较差。
发明内容
本发明实施例提供了一种基于编码的图像加密隐藏信息的方法及装置。所述技术方案如下:
一方面,提供了一种基于编码的图像加密隐藏信息的方法,该方法应用于电子设备,该方法包括压缩过程、秘密数据嵌入过程、恢复过程以及秘密数据提取过程:
所述压缩过程包括:
获取待加密的初始图像,所述初始图像的尺寸为m×n,其中,m为所述初始图像的像素行数,n为所述初始图像的像素列数;
获取第一位数b_Num,对所述初始图像进行低位的合并,得到第一压缩图像数据,所述第一压缩图像数据的总位数为m×n×b_Num;
获取第二位数b_Ele,对所述初始图像进行二元组编码,得到延伸序列位数b_count,对所述初始图像进行高位的压缩,得到第二压缩图像数据,所述第二压缩图像数据的总位数为(b_Num+b_Ele)×b_count;
通过所述第一压缩图像数据与所述第二压缩图像数据的总位数,确定所述初始图像编码后剩余空间的总位数b_space,通过预设公式生成随机序列作为第三压缩图像数据,其中,所述第三压缩图像数据的总位数为b_space;
将所述第一压缩图像数据、所述第二压缩图像数据以及所述第三压缩图像数据进行顺次连接,得到初始压缩图像的全部像素点,通过所述初始压缩图像的全部像素点生成m×n的图像,得到初始压缩图像;
所述秘密数据嵌入过程包括:
获取待嵌入的秘密数据,将所述秘密数据替换所述初始压缩图像中的部分第三压缩图像数据,得到嵌入秘密数据的初始压缩图像,其中,所述待嵌入的秘密数据的总位数k≤b_space;
通过所述预设公式,对所述嵌入秘密数据的初始压缩图像进行像素扩散,得到最终压缩加密图像;
所述恢复过程包括:
获取最终压缩加密图像,通过所述预设公式,将所述最终压缩加密图像恢复为像素扩散前的嵌入秘密数据的初始压缩图像;
将所述嵌入秘密数据的初始压缩图像的前m×n×b_Num位数据作为第一序列B1,通过所述第一序列B1得到所述初始图像的低位数据;
将所述嵌入秘密数据的初始压缩图像的[(m×n×b_Num/8)×8+1]位至[m×n×b_Num+(b_Num+b_Ele)×b_count]位数据作为第二序列B2,通过所述第二序列B2得到所述初始图像的高位数据;
将所述低位数据与所述高位数据进行组合,得到恢复后的初始图像;
所述秘密数据提取过程包括:
将所述嵌入秘密数据的初始压缩图像的[m×n×bNum+(bNum+bEle)×bcount]+1位至最后位数据作为第三序列B3,通过所述第三序列B3提取秘密数据。
可选地,所述对所述初始图像进行低位的合并,得到第一压缩图像数据,包括:
通过第一位数b_Num,获取所述初始图像的低位数据A_Low=mod(A,2b_Num),其中A表示所述初始图像的像素值;
将所述低位数据转为二进制数据,A_Low_2=dec2bin(A_Low),将二进制数据转换为字符向量元胞数组,A_Low_cell=cellstr(A_Low_2);
将所有字符向量元胞数组连接成一个序列,
A_Low_connect=strcat(A_Low_cell(1),A_Low_cell(2),…,A_Low_(m×n));
将序列转换为字符型,A_Low_char=char(A_Low_connet),并将A_Low_char每8位一组进行分组,不足8位时后面补0,得到B_Low(i)=A_Low_char((i-1)×8+1,8×i);
将B_Low转为十进制序列,B_L=bin2dec(B_Low)。
可选地,所述对所述初始图像进行二元组编码,得到延伸序列位数b_count,对所述初始图像进行高位的压缩,得到第二压缩图像数据,包括:
通过所述第二位数b_Ele,获取所述初始图像的高位数据A_High=bitshift(A,-b_Num),其中,bitshift(a,b)表示将a对应的二进制向左或向右移动b位,当b>0时左移,当b<0时右移;
将A_High改写为一维序列,并转为double型:A_High_d=double(A_High);
记录连续出现的A_High_d(i)值,并记录其连续出现的次数count:count=find([true;diff(A_High_d(:)~=0;true]);
则每个A_High_d(i)的起始下标:count_1=[count(1:end-1)];A_High_d(i)连续出现的个数count_2=[diff(count)];
当count_2(i)≥2b_Num-1时,对count_2进行拆解,使得:count_2(i)≤2b_Num-1,拆解后的延伸序列记为:COUNT_extend,所述延伸序列位数:b_count=length(COUNT_extend);
将每个相同元素A_High_d(i)与其对应个数COUNT_extend(i)顺次连接成一个新序列,A_High_connect=stract(A_High(count(i)),count_2_extend(i));
将A_High_connect每8位一组,生成新序列,不足8位时后面补0:B_High(i)=A_High_connect((i-1)×8+1,8×i);
将B_High转为十进制序列B_H=bin2dec(B_High),所述十进制序列B_H即为第二压缩图像数据。
可选地,所述通过所述第一压缩图像数据与所述第二压缩图像数据的总位数,确定所述初始图像编码后剩余空间的总位数b_space,包括:
b_space=m×n×8-m×n×b_Num-(b_Num+b_Ele)×b_count
=m×n×(8-b_Num)-(b_Num+b_Ele)×b_count。
可选地,所述通过预设公式生成随机序列作为第三压缩图像数据,包括:
通过Logistic映射的计算公式以及预设的初值x0和μ,生成序列xi,所述Logistic映射的计算公式为:
xk+1=μxk(1-xk)
其中:3.569945≤μ≤4,xk∈[0,1];
通过序列xi,生成pi
Figure BDA0003055571040000041
将pi每8位一组,并转为十进制,得到序列B_P,B_P=bin2dec(pi),所述B_P即为第三压缩图像数据。
可选地,所述获取待嵌入的秘密数据,将所述秘密数据替换所述初始压缩图像中的部分第三压缩图像数据,包括:
获取待嵌入的秘密数据W=w1,w2,…wk,wi∈{0,1},所述待嵌入的秘密数据的总位数为k;
通过预设的初值x0′和μ′,通过Logistic映射的计算公式生成长度为k且各元素互不相等的序列Q,
Figure BDA0003055571040000044
且i≠j时,qi≠qj
当存在正整数j属于序列Q,且j等于序列Q中的qi时,确定wi以及B_P(j),使用wi替换原来的B_P(j),即:
Figure BDA0003055571040000042
可选地,所述通过所述预设公式,对所述嵌入秘密数据的初始压缩图像进行像素扩散,得到最终压缩加密图像,包括:
通过预设的Logistic映射的计算公式以及预设的初值x0″和μ″,生成一个长为m×n的随机序列D,D=mod(fix(T(i)×1000),256),1≤i≤m×n则:0≤Q≤255;
将所述序列D改写为m×n大小的像素扩散矩阵D′,D′=reshape(Q,m,n);
通过所述嵌入秘密数据的初始压缩图像以及像素扩散矩阵D′,确定所述最终压缩加密图像C,
Figure BDA0003055571040000043
其中,B表示所述嵌入秘密数据的初始压缩图像。
可选地,所述通过所述第一序列B1得到所述初始图像的低位数据,包括:
将所述第一序列B1中的数据每b_Num位组成一组,得到图像A的低b_Num位。
可选地,所述通过所述第二序列B2得到所述初始图像的高位数据,包括:
将所述第二序列B2中的数据每(b_Num+b_Ele)位组成一组,再根据b_Num和b_Ele得到二元组(Element,Number),根据Number的数值展开Element,得到的序列构成B4
将序列B4中的数据每b_Ele位组成一组,得到图像A的高b_Ele位。
一方面,提供了一种基于编码的图像加密隐藏信息的装置,该装置应用于电子设备,该装置包括压缩单元、秘密数据嵌入单元、恢复单元以及秘密数据提取单元:
所述压缩单元用于:
获取待加密的初始图像,所述初始图像的尺寸为m×n,其中,m为所述初始图像的像素行数,n为所述初始图像的像素列数;
获取第一位数b_Num,对所述初始图像进行低位的合并,得到第一压缩图像数据,所述第一压缩图像数据的总位数为m×n×b_Num;
获取第二位数b_Ele,对所述初始图像进行二元组编码,得到延伸序列位数b_count,对所述初始图像进行高位的压缩,得到第二压缩图像数据,所述第二压缩图像数据的总位数为(b_Num+b_Ele)×b_count;
通过所述第一压缩图像数据与所述第二压缩图像数据的总位数,确定所述初始图像编码后剩余空间的总位数b_space,通过预设公式生成随机序列作为第三压缩图像数据,其中,所述第三压缩图像数据的总位数为b_space;
将所述第一压缩图像数据、所述第二压缩图像数据以及所述第三压缩图像数据进行顺次连接,得到初始压缩图像的全部像素点,通过所述初始压缩图像的全部像素点生成m×n的图像,得到初始压缩图像;
所述秘密数据嵌入单元用于:
获取待嵌入的秘密数据,将所述秘密数据替换所述初始压缩图像中的部分第三压缩图像数据,得到嵌入秘密数据的初始压缩图像,其中,所述待嵌入的秘密数据的总位数k≤b_space;
通过所述预设公式,对所述嵌入秘密数据的初始压缩图像进行像素扩散,得到最终压缩加密图像;
所述恢复单元用于:
获取最终压缩加密图像,通过所述预设公式,将所述最终压缩加密图像恢复为像素扩散前的嵌入秘密数据的初始压缩图像;
将所述嵌入秘密数据的初始压缩图像的前m×n×b_Num位数据作为第一序列B1,通过所述第一序列B1得到所述初始图像的低位数据;
将所述嵌入秘密数据的初始压缩图像的[(m×n×b_Num/8)×8+1]位至[m×n×b_Num+(b_Num+b_Ele)×b_count]位数据作为第二序列B2,通过所述第二序列B2得到所述初始图像的高位数据;
将所述低位数据与所述高位数据进行组合,得到恢复后的初始图像;
所述秘密数据提取单元用于:
将所述嵌入秘密数据的初始压缩图像的[m×n×bNum+(bNum+bEle)×bcount]+1位至最后位数据作为第三序列B3,通过所述第三序列B3提取秘密数据。
可选地,所述压缩单元,用于:
通过第一位数b_Num,获取所述初始图像的低位数据A_Low=mod(A,2b_Num),其中A表示所述初始图像的像素值;
将所述低位数据转为二进制数据,A_Low_2=dec2bin(A_Low),将二进制数据转换为字符向量元胞数组,A_Low_cell=cellstr(A_Low_2);
将所有字符向量元胞数组连接成一个序列,
A_Low_connect=strcat(A_Low_cell(1),A_Low_cell(2),…,A_Low_(m×n));
将序列转换为字符型,A_Low_char=char(A_Low_connet),并将A_Low_char每8位一组进行分组,不足8位时后面补0,得到B_Low(i)=A_Low_char((i-1)×8+1,8×i);
将B_Low转为十进制序列,B_L=bin2dec(B_Low)。
可选地,所述压缩单元,用于:
通过所述第二位数b_Ele,获取所述初始图像的高位数据A_High=bitshift(A,-b_Num),其中,bitshift(a,b)表示将a对应的二进制向左或向右移动b位,当b>0时左移,当b<0时右移;
将A_High改写为一维序列,并转为double型:A_High_d=double(A_High);
记录连续出现的A_High_d(i)值,并记录其连续出现的次数count:count=find([true;diff(A_High_d(:)~=0;true]);
则每个A_High_d(i)的起始下标:count_1=[count(1:end-1)];A_High_d(i)连续出现的个数count_2=[diff(count)];
当count_2(i)≥2b_Num-1时,对count_2进行拆解,使得:count_2(i)≤2b_Num-1,拆解后的延伸序列记为:COUNT_extend,所述延伸序列位数:b_count=length(COUNT_extend);
将每个相同元素A_High_d(i)与其对应个数COUNT_extend(i)顺次连接成一个新序列,A_High_connect=stract(A_High(count(i)),count_2_extend(i));
将A_High_connect每8位一组,生成新序列,不足8位时后面补0:B_High(i)=A_High_connect((i-1)×8+1,8×i);
将B_High转为十进制序列B_H=bin2dec(B_High),所述十进制序列B_H即为第二压缩图像数据。
可选地,所述压缩单元,用于:
b_space=m×n×8-m×n×b_Num-(b_Num+b_Ele)×b_count
=m×n×(8-b_Num)-(b_Num+b_Ele)×b_count。
可选地,所述压缩单元,用于:
通过Logistic映射的计算公式以及预设的初值x0和μ,生成序列xi,所述Logistic映射的计算公式为:
xk+1=μxk(1-xk)
其中:3.569945≤μ≤4,xk∈[0,1];
通过序列xi,生成pi
Figure BDA0003055571040000071
将pi每8位一组,并转为十进制,得到序列B_P,B_P=bin2dec(pi),所述B_P即为第三压缩图像数据。
可选地,所述秘密数据嵌入单元,用于:
获取待嵌入的秘密数据W=w1,w2,…wk,wi∈{0,1},所述待嵌入的秘密数据的总位数为k;
通过预设的初值x0′和μ′,通过Logistic映射的计算公式生成长度为k且各元素互不相等的序列Q,
Figure BDA0003055571040000073
且i≠j时,qi≠qj
当存在正整数j属于序列Q,且j等于序列Q中的qi时,确定wi以及B_P(j),使用wi替换原来的B_P(j),即:
Figure BDA0003055571040000072
可选地,所述秘密数据嵌入单元,用于:
通过预设的Logistic映射的计算公式以及预设的初值x0″和μ″,生成一个长为m×n的随机序列D,D=mod(fix(T(i)×1000),256),1≤i≤m×n则:0≤Q≤255;
将所述序列D改写为m×n大小的像素扩散矩阵D′,D′=reshape(Q,m,n);
通过所述嵌入秘密数据的初始压缩图像以及像素扩散矩阵D′,确定所述最终压缩加密图像C,
Figure BDA0003055571040000081
其中,B表示所述嵌入秘密数据的初始压缩图像。
可选地,所述恢复单元,用于:
将所述第一序列B1中的数据每b_Num位组成一组,得到图像A的低b_Num位。
可选地,所述恢复单元,用于:
将所述第二序列B2中的数据每(b_Num+b_Ele)位组成一组,再根据b_Num和b_Ele得到二元组(Element,Number),根据Number的数值展开Element,得到的序列构成B4
将序列B4中的数据每b_Ele位组成一组,得到图像A的高b_Ele位。
一方面,提供了一种电子设备,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现上述基于编码的图像加密隐藏信息的方法。
一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现上述基于编码的图像加密隐藏信息的方法。
本发明实施例提供的技术方案带来的有益效果至少包括:
上述方案中,通过对初始图像进行低位合并、高位压缩、随机序列补充、秘密数据嵌入等方法,对图像进行压缩加密并嵌入秘密数据,该方法非常适合于密文域信息隐藏,其主要优点有:(1)该算法是密文域可逆可分离算法;(2)该方法有较好通用性,适合任意类型图像,且操作对象可以是明文图像,也可以是密文图像;(3)该方法在压缩图像的同时,直接生成高质量加密图像,算法效率较高;(4)秘密信息隐藏于加密图像的补位部分,而该部分与图像自身并无关联,因此安全性较高;(5)选择合适参数,大多数图像有较大的嵌入容量。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1(a)是本发明实施例提供的一种二元组编码示意图;
图1(b)是本发明实施例提供的一种二元组编码示意图;
图2是本发明实施例提供的一种基于编码的图像加密隐藏信息的图像压缩方法流程图;
图3是本发明实施例提供的一种基于编码的图像加密隐藏信息的秘密数据嵌入方法流程图;
图4是本发明实施例提供的一种基于编码的图像加密隐藏信息的图像恢复方法流程图;
图5是本发明实施例提供的一种基于编码的图像加密隐藏信息的秘密数据提取方法流程图;
图6是本发明实施例提供的一种基于编码的图像加密隐藏信息的实验示意图;
图7是本发明实施例提供的一种基于编码的图像加密隐藏信息的实验示意图;
图8是本发明实施例提供的一种基于编码的图像加密隐藏信息的装置框图;
图9是本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
本发明实施例提供了一种基于编码的图像加密隐藏信息的方法,该方法可以由电子设备实现。本发明采用二元组编码方法,利用编码产生的冗长余空间嵌入秘密数据,整个过程可概括为:高位压缩、低位重组、空余补缺、信息嵌入、像素扩散,算法有较大的嵌入容量和较高的安全性,下面采用举例的方式讲解二元组编码方法的原理。
将一个二进制序列中被选定的一个或多个位的组合称为一个元素,记为:Element,将Element在序列中连续出现的次数记为:Number,则可用Element和与其对应的Number组成一个二元组(Element,Number),那么对于任意一个二进制序列均可以用二元组将其改写为:(Element1,Number1),(Element2,Number2),…,(Elementn,Numbern)的形式,将Element和Number统一用二进制表示,生成的二进制序列称之为二元组编码,如图1(a)所示。
如果每一个二元组的位数不同,那连续编码后就很难识别哪部分是Element,哪部是Number,为了准确识别与还原二元组,编码前必须给出明确的Element和Number位数,记:Element的位数b_Ele=length(Element),Number的位数b_Num=length(Number),那么同一序列的二元组编码需要执行统一的位数b_Ele和b-Num,当位数不足时需要补0,这样对于给定的b_Ele和b_Num,对应的二元组编码就有了唯一性和可还原性,如图1(b)所示。
但需要注意的是:Number的位数为b_Num,其最多能表示的数值为:2b_Num_1,在实际编码时会出现Element出现次数num超过2b_Num-1的情形,也就是说:用一个b_Num位不足以表示num,即:当num>2b_Num-1时,需要对二元组进行拆解,增加分组,如:对于二进制序列101010101010101011111101,长度为24位,其对应的二元组本该写为(10,8)(11,3)(01,1),但若设定的b-Ele=2,b-Num=2,则一个组最多能表示连续出现的3个Element,当总数超过3时需要拆解,所以,101010101010101011111101对应的正确二元组应为:(10,3)(10,3)(10,2)(11,3)(01,1),二元组编码为:10111011101011110101,编码后的长度为20位,比原始码长少了4位;但同样的序列,如果我们设定:b_Ele=4,b_Num=3,则序列101010101010101011111101对应二元组为(1010,4)(1111,1)(1101,1),编码为:101010011110011101001,长度为21位,比原始码长少了3位。因此,同样的序列,设定不同的b_Ele和b_Num,得到的二元组编码的长度也不同。
本实施例提供了一种基于编码的图像加密隐藏信息的方法,该方法包括压缩过程、秘密数据嵌入过程、恢复过程、秘密数据提取过程。图2是根据一示例性实施例示出的一种基于编码的图像加密隐藏信息的方法的图像压缩过程流程图,该方法用于电子设备中,本实施例以图像的压缩过程进行说明,包括以下步骤:
步骤201、获取待加密的初始图像,初始图像的尺寸为m×n,其中,m为初始图像的像素行数,n为初始图像的像素列数。
步骤202、获取第一位数b_Num,对初始图像进行低位的合并,得到第一压缩图像数据,第一压缩图像数据的总位数为m×n×b_Num。
一种可行的实施方式中,第一位数b_Num为预先设定的数据。对初始图像进行低位的合并,得到第一压缩图像数据,具体包括下述步骤2021-2025:
步骤2021、通过第一位数b_Num,获取初始图像的低位数据A_Low=mod(A,2b_Num),其中A表示初始图像的像素值,A_Low为低位数据的数组,mod()表示取余运算。举例来讲,假设初始图像的某个像素点的像素值A为163,b_Num预设为4,则A_Low=mod(163,24)=3。
步骤2022、将低位数据转为二进制数据,A_Low_2=dec2bin(A_Low),将二进制数据转换为字符向量元胞数组,A_Low_cell=cellstr(A_Low_2)。
步骤2023、将所有字符向量元胞数组连接成一个序列,
A_Low_connect=strcat(A_Low_cell(1),A_Low_cell(2),…,A_Low_(m×n))。
步骤2024、将序列转换为字符型,A_Low_char=char(A_Low_connet),并将A_Low_char每8位一组进行分组,不足8位时后面补0,得到B_Low(i)=A_Low_char((i-1)×8+1,8×i)。
步骤2025、将B_Low转为十进制序列,B_L=bin2dec(B_Low),B_L即为第一压缩图像数据。
步骤203、获取第二位数b_Ele,对初始图像进行二元组编码,得到延伸序列位数b_count,对初始图像进行高位的压缩,得到第二压缩图像数据,第二压缩图像数据的总位数为(b_Num+b_Ele)×b_count。
一种可行的实施方式中,第二位数b_Ele为预先设置的数据,得到第二压缩图像数据的具体步骤可以包括如下步骤2031-2037:
步骤2031、通过第二位数b_Ele,获取初始图像的高位数据A_High=bitshift(A,-b_Num),其中,bitshift(a,b)表示将a对应的二进制向左或向右移动b位,当b>0时左移,当b<0时右移。例如,bitshift(13,-2)=bitshift((1101)2,-2)=(11)2=3。
步骤2032、将A_High改写为一维序列,并转为double型:A_High_d=double(A_High)。
步骤2033、记录连续出现的A_High_d(i)值,并记录其连续出现的次数count:count=find([true;diff(A_High_d(:)~=0;true])。则每个A_High_d(i)的起始下标:count_1=[count(1:end-1)]。A_High_d(i)连续出现的个数count_2=[diff(count)]。
步骤2034、当count_2(i)≥2b_Num-1时,对count_2进行拆解,使得:count_2(i)≤2b_Num-1,拆解后的延伸序列记为:COUNT_extend,延伸序列位数:b_count=length(COUNT_extend)。
步骤2035、将每个相同元素A_High_d(i)与其对应个数COUNT_extend(i)顺次连接成一个新序列,A_High_connect=stract(A_High(count(i)),count_2_extend(i))。
步骤2036、将A_High_connect每8位一组,生成新序列,不足8位时后面补0:B_High(i)=A_High_connect((i-1)×8+1,8×i)。
步骤2037、将B_High转为十进制序列B_H=bin2dec(B_High),十进制序列B_H即为第二压缩图像数据。
步骤204、通过第一压缩图像数据与第二压缩图像数据的总位数,确定初始图像编码后剩余空间的总位数b_space,通过预设公式生成随机序列作为第三压缩图像数据,其中,第三压缩图像数据的总位数为b_space。
一种可行的实施方式中,可以通过下述公式(1)通过第一压缩图像数据与第二压缩图像数据的总位数,计算初始图像编码后剩余空间的总位数b_space:
b_space=m×n×8-m×n×b_Num-(b_Num+b_Ele)×b_count……(1)
=m×n×(8-b_Num)-(b_Num+b_Ele)×b_count。
可选地,通过预设公式生成随机序列作为第三压缩图像数据可以包括以下步骤2041-2043:
步骤2041、通过Logistic映射的计算公式以及预设的初值x0和μ,生成序列xi,Logistic映射的计算公式为:
xk+1=μxk(1-xk)
其中:3.569945≤μ≤4,xk∈[0,1]。
步骤2042、通过序列xi,生成pi
Figure BDA0003055571040000121
步骤2043、将pi每8位一组,并转为十进制,得到序列B_P,B_P=bin2dec(pi),B_P即为第三压缩图像数据。
步骤205、将第一压缩图像数据、第二压缩图像数据以及第三压缩图像数据进行顺次连接,得到初始压缩图像的全部像素点,通过初始压缩图像的全部像素点生成m×n的图像,得到初始压缩图像。
需要说明的是,在对初始图像进行处理时,可以对初始图像按顺序进行低位合并、高位压缩、生成随机序列进行补位,执行顺序如上述步骤201-205,除此之外,还可以按照高位压缩、低位合并、生成随机序列进行补位的顺序对初始图像进行处理,执行顺序即按照步骤201、203、202、204、205,但需要注意,在进行图像处理时的执行顺序需要与恢复图像时的执行顺序保持相同。
图3是根据一示例性实施例示出的一种基于编码的图像加密隐藏信息的方法的秘密数据嵌入过程流程图,该方法用于电子设备中,本实施例以秘密数据嵌入初始压缩图像的过程进行说明,包括以下步骤:
步骤301、获取待嵌入的秘密数据,将秘密数据替换初始压缩图像中的部分第三压缩图像数据,得到嵌入秘密数据的初始压缩图像。
其中,待嵌入的秘密数据的总位数k≤b_space。
可选地,获取待嵌入的秘密数据,将秘密数据替换初始压缩图像中的部分第三压缩图像数据,包括以下步骤3011-3013:
步骤3011、获取待嵌入的秘密数据W=w1,w2,…wk,wi∈{0,1},待嵌入的秘密数据的总位数为k。
步骤3012、通过预设的初值x0′和μ′,通过Logistic映射的计算公式生成长度为k且各元素互不相等的序列Q,
Figure BDA0003055571040000133
且i≠j时,qi≠qj
一种可行的实施方式中,该步骤的Logistic映射的计算公式与上述步骤2041中Logistic映射的计算公式相同,均为xk+1=μxk(1-xk),但该步骤的初值x0′和μ′与上述步骤2041中的初值x0和μ不相同。
步骤3013、当存在正整数j属于序列Q,且j等于序列Q中的qi时,确定wi以及B_P(j),使用wi替换原来的B_P(j),即:
Figure BDA0003055571040000131
完成替换的序列为B_S。
举例来讲,假设B_P=1011010010111,W=1001100,Q=21159748,当j=2,i=1,wi=w1=1,B_P(j)=B_P(2)=0,qi=q1=2时,j=qi,则使用w1=1替换B_P(2)=0,使得原来序列B_P中的第2位数据由0修改为1,其它替换可以参考下述表1。
表1
Figure BDA0003055571040000132
需要说明的是,上述步骤3012-3013是通过乱序替换的方式,将秘密数据打乱顺序嵌入到初始压缩图像中,这样,可以加大秘密数据的安全性,使得其他人员不能从嵌入秘密数据的初始压缩图像中轻易地提取出秘密数据。当然,当用户不需要加大秘密数据的安全性时,也可以采用顺序替换的方式,将秘密数据按照原始顺序替换进初始压缩图像中,或者采用其它的方法确定秘密数据的替换顺序,然后按照替换顺序将秘密数据替换进初始压缩图像中,本发明对此不作限定。
步骤302、通过预设公式,对嵌入秘密数据的初始压缩图像进行像素扩散,得到最终压缩加密图像。
可选地,通过预设公式,对嵌入秘密数据的初始压缩图像进行像素扩散,得到最终压缩加密图像,包括以下步骤3021-3023:
步骤3021、通过预设的Logistic映射的计算公式以及预设的初值x0″和μ″,生成一个长为m×n的随机序列D,D=mod(fix(T(i)×1000),256),1≤i≤m×n则:0≤Q≤255。
步骤3022、将序列D改写为m×n大小的像素扩散矩阵D′,D′=reshape(Q,m,n)。
步骤3023、通过嵌入秘密数据的初始压缩图像以及像素扩散矩阵D′,确定最终压缩加密图像C,
Figure BDA0003055571040000141
其中,B表示嵌入秘密数据的初始压缩图像。
图4是根据一示例性实施例示出的一种基于编码的图像加密隐藏信息的方法的图像恢复过程流程图,该方法用于电子设备中,本实施例以图像回复过程进行说明,包括以下步骤:
步骤401、获取最终压缩加密图像,通过预设公式,将最终压缩加密图像恢复为像素扩散前的嵌入秘密数据的初始压缩图像。
一种可行的实施方式中,最终压缩加密图像可以记为C,该最终压缩加密图像的尺寸为m×n。预设公式为上述步骤204、301使用相同的Logistic映射的计算公式,且在恢复压缩图像时,获取与上述步骤302中相同的初值x0″和μ″,通过Logistic映射的计算公式、初值x0″和μ″,生成与上述步骤302中相同的序列D′,通过
Figure BDA0003055571040000142
获取嵌入秘密数据的初始压缩图像。
步骤402、将嵌入秘密数据的初始压缩图像的前m×n×b_Num位数据作为第一序列B1,通过第一序列B1得到初始图像的低位数据。
一种可行的实施方式中,获取第一位数b_Num,该第一位数b_Num与上述步骤202中的第一位数b_Num相同。计算m×n×b_Num,该乘积数值为初始图像通过低位合并得到的第一压缩图像数据的总位数,因此,将嵌入秘密数据的初始压缩图像的前m×n×b_Num位数据作为第一序列B1,通过第一序列B1得到初始图像的低位数据,具体地,将所述第一序列B1中的数据每b_Num位组成一组,得到图像A的低b_Num位数据。
步骤403、将嵌入秘密数据的初始压缩图像的[(m×n×b_Num/8)×8+1]位至[m×n×b_Num+(b_Num+b_Ele)×b_count]位数据作为第二序列B2,通过第二序列B2得到初始图像的高位数据。
一种可行的实施方式中,获取第二位数b_Ele,该第二位数b_Ele与上述步骤203中的第二位数b_Ele相同,计算(b_Num+b_Ele)×b_count,该乘积为高位压缩得到的第二压缩图像数据的总位数,且因为第二压缩图像数据排在第一压缩图像数据的后边,因此,嵌入秘密数据的初始压缩图像的[(m×n×b_Num/8)×8+1]位至[m×n×b_Num+(b_Num+b_Ele)×b_count]位为第二压缩图像数据,通过第二序列B2得到初始图像的高位数据,具体地,将第二序列B2中的数据每(b_Num+b_Ele)位组成一组,再根据b_Num和b_Ele得到二元组(Element,Number),根据Number的数值展开Element,得到的序列构成B4;将序列B4中的数据每b_Ele位组成一组,得到图像A的高b_Ele位数据。
步骤404、将低位数据与高位数据进行组合,得到恢复后的初始图像。
图5是根据一示例性实施例示出的一种基于编码的图像加密隐藏信息的方法的秘密数据提取过程流程图,该方法用于电子设备中,本实施例以从嵌入秘密数据的初始压缩图像中提取秘密数据的过程进行说明,包括以下步骤:
步骤501、根据预设的初值x0′和μ′以及Logistic映射的计算公式,生成序列Q。
其中,预设的初值x0′和μ′以及Logistic映射的计算公式与上述步骤301中的相同,这样才能保证生成的序列Q与上述步骤301生成的序列Q完全相同。
步骤502、将嵌入秘密数据的初始压缩图像的[m×n×b_Num+(b_Ele+b_Num)×b_count]+1位至最后位数据作为第三序列B3。
一种可行的实施方式中,因为嵌入秘密数据的第三压缩图像数据排在第一压缩图像数据以及第二压缩图像数据之后,且第一压缩图像数据的总位数为m×n×b_Num,第二压缩图像数据的总位数为(b_Num+b_Ele)×b_count,因此,从[m×n×b_Num+(b_Ele+b_Num)×b_count]+1位至最后位数据为嵌入秘密数据的第三压缩图像数据,将其作为第三序列B3。
步骤503、在序列B3中顺次找到序列Q对应位置的值wi=B3(Q(i)),得到的序列W=w1,w2,w3,......wk即为秘密数据。
下面通过举例的方式进行说明:
获取高位和低位的预设公式:
High_x=bitshift(A,-x),Low_y=mod(A,2y)
假设原始图像A的连续16个像素灰度值为:163,162,168,166,167,166,164,160,124,15,13,8,7,9,5,1,设定:b_Ele=4,b_Num=4,首先获取High_4和Low_4,然后用16个Low_4两两一组重组成8个新的像素作为图像B的第一部分(第1~8个像素);High_4采用(High_4,4)方式进行编码,共可组成3个新的像素,作为图像B的第二部分(第9~11个像素),则第12~16位即为压缩后的冗余空间,可用于秘密信息的嵌入,整幅图像的编码方法如下表2所示,图像重组结构示意图如图6所示。
表2
Figure BDA0003055571040000161
需要说明的是,秘密数据的嵌入容量取决于图像的压缩比,通过上述论述,可以确定一幅图像的压缩比取决于:
(1)(Element,Number)的核心参数b_Ele和b_Num;
(2)“ELement类型数”(num)是指不改变排列顺序的情形下Element出现的类型总数;
(3)“Element真实标识数”(b_count)是指标识“Element类型数”所需的真实数量(当Element连续出现的数量超过2b_Num-1时,需要拆组),下述表3给出的是512×512大小Lena灰度图,图7是标准灰度图像各步骤的直方图,表4为b_Ele=b_Num时的各相关参数。
表3
Figure BDA0003055571040000171
压缩位数的计算公式为:
compression_bit=m×n×8-m×n×b_Num-(b_Num+b_Ele)×b_count
=m×n×(8-b_Num)-(b_Num+b_Ele)×b_count
压缩比:compression_ratio=compression_bit/m×n×8,最大压缩比也是最大嵌入率。
表4
Figure BDA0003055571040000172
因此,本申请算法嵌入率与给定的载体图像以及选择的参数有关,当参数选择合适时,嵌入容量较大。
从图7以及表4给出的直方图和相邻像素相关性分析均表明,使用本申请算法对明文图像进行低位组合、高位压缩、冗余位补缺后得到的重组图像有较好的加密效果,而在压缩产生的冗余位中嵌入秘密信息后,对加密图像直方图的影响较小,但对相邻像素的关联性进一步破坏,像素扩散使得加密图像的直方图趋于平均化,有效提高了抗统计分析能力。
本申请实施例中,通过对初始图像进行低位合并、高位压缩、随机序列补充、秘密数据嵌入等方法,对图像进行压缩加密并嵌入秘密数据,该方法非常适合于密文域信息隐藏,其主要优点有:(1)该算法是密文域可逆可分离算法;(2)该方法有较好通用性,适合任意类型图像,且操作对象可以是明文图像,也可以是密文图像;(3)该方法在压缩图像的同时,直接生成高质量加密图像,算法效率较高;(4)秘密信息隐藏于加密图像的补位部分,而该部分与图像自身并无关联,因此安全性较高;(5)选择合适参数,大多数图像有较大的嵌入容量。
图8是根据一示例性实施例示出的一种基于编码的图像加密隐藏信息的装置框图。参照图8,该装置包括压缩单元810、秘密数据嵌入单元820、恢复单元830以及秘密数据提取单元840:
所述压缩单元810用于:
获取待加密的初始图像,所述初始图像的尺寸为m×n,其中,m为所述初始图像的像素行数,n为所述初始图像的像素列数;
获取第一位数b_Num,对所述初始图像进行低位的合并,得到第一压缩图像数据,所述第一压缩图像数据的总位数为m×n×b_Num;
获取第二位数b_Ele,对所述初始图像进行二元组编码,得到延伸序列位数b_count,对所述初始图像进行高位的压缩,得到第二压缩图像数据,所述第二压缩图像数据的总位数为(b_Num+b_Ele)×b_count;
通过所述第一压缩图像数据与所述第二压缩图像数据的总位数,确定所述初始图像编码后剩余空间的总位数b_space,通过预设公式生成随机序列作为第三压缩图像数据,其中,所述第三压缩图像数据的总位数为b_space;
将所述第一压缩图像数据、所述第二压缩图像数据以及所述第三压缩图像数据进行顺次连接,得到初始压缩图像的全部像素点,通过所述初始压缩图像的全部像素点生成m×n的图像,得到初始压缩图像;
所述秘密数据嵌入单元820用于:
获取待嵌入的秘密数据,将所述秘密数据替换所述初始压缩图像中的部分第三压缩图像数据,得到嵌入秘密数据的初始压缩图像,其中,所述待嵌入的秘密数据的总位数k≤b_space;
通过所述预设公式,对所述嵌入秘密数据的初始压缩图像进行像素扩散,得到最终压缩加密图像;
所述恢复单元830用于:
获取最终压缩加密图像,通过所述预设公式,将所述最终压缩加密图像恢复为像素扩散前的嵌入秘密数据的初始压缩图像;
将所述嵌入秘密数据的初始压缩图像的前m×n×b_Num位数据作为第一序列B1,通过所述第一序列B1得到所述初始图像的低位数据;
将所述嵌入秘密数据的初始压缩图像的[(m×n×b_Num/8)×8+1]位至[m×n×b_Num+(b_Num+b_Ele)×b_count]位数据作为第二序列B2,通过所述第二序列B2得到所述初始图像的高位数据;
将所述低位数据与所述高位数据进行组合,得到恢复后的初始图像;
所述秘密数据提取单元840用于:
将所述嵌入秘密数据的初始压缩图像的[m×n×bNum+(bNum+bEle)×bcount]+1位至最后位数据作为第三序列B3,通过所述第三序列B3提取秘密数据。
可选地,所述压缩单元,用于:
通过第一位数b_Num,获取所述初始图像的低位数据A_Low=mod(A,2b_Num),其中A表示所述初始图像的像素值;
将所述低位数据转为二进制数据,A_Low_2=dec2bin(A_Low),将二进制数据转换为字符向量元胞数组,A_Low_cell=cellstr(A_Low_2);
将所有字符向量元胞数组连接成一个序列,
A_Low_connect=strcat(A_Low_cell(1),A_Low_cell(2),…,A_Low_(m×n));
将序列转换为字符型,A_Low_char=char(A_Low_connet),并将A_Low_char每8位一组进行分组,不足8位时后面补0,得到B_Low(i)=A_Low_char((i-1)×8+1,8×i);
将B_Low转为十进制序列,B_L=bin2dec(B_Low)。
可选地,所述压缩单元810,用于:
通过所述第二位数b_Ele,获取所述初始图像的高位数据A_High=bitshift(A,-b_Num),其中,bitshift(a,b)表示将a对应的二进制向左或向右移动b位,当b>0时左移,当b<0时右移;
将A_High改写为一维序列,并转为double型:A_High_d=double(A_High);
记录连续出现的A_High_d(i)值,并记录其连续出现的次数count:count=find([true;diff(A_High_d(:)~=0;true]);
则每个A_High_d(i)的起始下标:count_1=[count(1:end-1)];A_High_d(i)连续出现的个数count_2=[diff(count)];
当count_2(i)≥2b_Num-1时,对count_2进行拆解,使得:count_2(i)≤2b_Num-1,拆解后的延伸序列记为:COUNT_extend,所述延伸序列位数:b_count=length(COUNT_extend);
将每个相同元素A_High_d(i)与其对应个数COUNT_extend(i)顺次连接成一个新序列,A_High_connect=stract(A_High(count(i)),count_2_extend(i));
将A_High_connect每8位一组,生成新序列,不足8位时后面补0:B_High(i)=A_High_connect((i-1)×8+1,8×i);
将B_High转为十进制序列B_H=bin2dec(B_High),所述十进制序列B_H即为第二压缩图像数据。
可选地,所述压缩单元810,用于:
b_space=m×n×8-m×n×b_Num-(b_Num+b_Ele)×b_count
=m×n×(8-b_Num)-(b_Num+b_Ele)×b_count。
可选地,所述压缩单元810,用于:
通过Logistic映射的计算公式以及预设的初值x0和μ,生成序列xi,所述Logistic映射的计算公式为:
xk+1=μxk(1-xk)
其中:3.569945≤μ≤4,xk∈[0,1];
通过序列xi,生成pi
Figure BDA0003055571040000201
将pi每8位一组,并转为十进制,得到序列B_P,B_P=bin2dec(pi),所述B_P即为第三压缩图像数据。
可选地,所述秘密数据嵌入单元820,用于:
获取待嵌入的秘密数据W=w1,w2,…wk,wi∈{0,1},所述待嵌入的秘密数据的总位数为k;
通过预设的初值x0′和μ′,通过Logistic映射的计算公式生成长度为k且各元素互不相等的序列Q,
Figure BDA0003055571040000203
且i≠j时,qi≠qj
当存在正整数j属于序列Q,且j等于序列Q中的qi时,确定wi以及B_P(j),使用wi替换原来的B_P(j),即:
Figure BDA0003055571040000202
可选地,所述秘密数据嵌入单元820,用于:
通过预设的Logistic映射的计算公式以及预设的初值x0″和μ″,生成一个长为m×n的随机序列D,D=mod(fix(T(i)×1000),256),1≤i≤m×n则:0≤Q≤255;
将所述序列D改写为m×n大小的像素扩散矩阵D′,D′=reshape(Q,m,n);
通过所述嵌入秘密数据的初始压缩图像以及像素扩散矩阵D′,确定所述最终压缩加密图像C,
Figure BDA0003055571040000211
其中,B表示所述嵌入秘密数据的初始压缩图像。
可选地,所述恢复单元830,用于:
将所述第一序列B1中的数据每b_Num位组成一组,得到图像A的低b_Num位。
可选地,所述恢复单元830,用于:
将所述第二序列B2中的数据每(b_Num+b_Ele)位组成一组,再根据b_Num和b_Ele得到二元组(Element,Number),根据Number的数值展开Element,得到的序列构成B4
将序列B4中的数据每b_Ele位组成一组,得到图像A的高b_Ele位。
本申请实施例中,通过对初始图像进行低位合并、高位压缩、随机序列补充、秘密数据嵌入等方法,对图像进行压缩加密并嵌入秘密数据,该方法非常适合于密文域信息隐藏,其主要优点有:(1)该算法是密文域可逆可分离算法;(2)该方法有较好通用性,适合任意类型图像,且操作对象可以是明文图像,也可以是密文图像;(3)该方法在压缩图像的同时,直接生成高质量加密图像,算法效率较高;(4)秘密信息隐藏于加密图像的补位部分,而该部分与图像自身并无关联,因此安全性较高;(5)选择合适参数,大多数图像有较大的嵌入容量。
图9是本发明实施例提供的一种电子设备900的结构示意图,该电子设备900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessing units,CPU)901和一个或一个以上的存储器902,其中,所述存储器902中存储有至少一条指令,所述至少一条指令由所述处理器901加载并执行以实现下述基于编码的图像加密隐藏信息的方法的步骤:
所述压缩过程包括:
获取待加密的初始图像,所述初始图像的尺寸为m×n,其中,m为所述初始图像的像素行数,n为所述初始图像的像素列数;
获取第一位数b_Num,对所述初始图像进行低位的合并,得到第一压缩图像数据,所述第一压缩图像数据的总位数为m×n×b_Num;
获取第二位数b_Ele,对所述初始图像进行二元组编码,得到延伸序列位数b_count,对所述初始图像进行高位的压缩,得到第二压缩图像数据,所述第二压缩图像数据的总位数为(b_Num+b_Ele)×b_count;
通过所述第一压缩图像数据与所述第二压缩图像数据的总位数,确定所述初始图像编码后剩余空间的总位数b_space,通过预设公式生成随机序列作为第三压缩图像数据,其中,所述第三压缩图像数据的总位数为b_space;
将所述第一压缩图像数据、所述第二压缩图像数据以及所述第三压缩图像数据进行顺次连接,得到初始压缩图像的全部像素点,通过所述初始压缩图像的全部像素点生成m×n的图像,得到初始压缩图像;
所述秘密数据嵌入过程包括:
获取待嵌入的秘密数据,将所述秘密数据替换所述初始压缩图像中的部分第三压缩图像数据,得到嵌入秘密数据的初始压缩图像,其中,所述待嵌入的秘密数据的总位数k≤b_space;
通过所述预设公式,对所述嵌入秘密数据的初始压缩图像进行像素扩散,得到最终压缩加密图像;
所述恢复过程包括:
获取最终压缩加密图像,通过所述预设公式,将所述最终压缩加密图像恢复为像素扩散前的嵌入秘密数据的初始压缩图像;
将所述嵌入秘密数据的初始压缩图像的前m×n×b_Num位数据作为第一序列B1,通过所述第一序列B1得到所述初始图像的低位数据;
将所述嵌入秘密数据的初始压缩图像的[(m×n×b_Num/8)×8+1]位至[m×n×b_Num+(b_Num+b_Ele)×b_count]位数据作为第二序列B2,通过所述第二序列B2得到所述初始图像的高位数据;
将所述低位数据与所述高位数据进行组合,得到恢复后的初始图像;
所述秘密数据提取过程包括:
将所述嵌入秘密数据的初始压缩图像的[m×n×bNum+(bNum+bEle)×bcount]+1位至最后位数据作为第三序列B3,通过所述第三序列B3提取秘密数据。
本申请实施例中,通过对初始图像进行低位合并、高位压缩、随机序列补充、秘密数据嵌入等方法,对图像进行压缩加密并嵌入秘密数据,该方法非常适合于密文域信息隐藏,其主要优点有:(1)该算法是密文域可逆可分离算法;(2)该方法有较好通用性,适合任意类型图像,且操作对象可以是明文图像,也可以是密文图像;(3)该方法在压缩图像的同时,直接生成高质量加密图像,算法效率较高;(4)秘密信息隐藏于加密图像的补位部分,而该部分与图像自身并无关联,因此安全性较高;(5)选择合适参数,大多数图像有较大的嵌入容量。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括指令的存储器,上述指令可由终端中的处理器执行以完成上述基于编码的图像加密隐藏信息的方法。例如,所述计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种基于编码的图像加密隐藏信息的方法,其特征在于,所述方法包括压缩过程、秘密数据嵌入过程、恢复过程以及秘密数据提取过程:
所述压缩过程包括:
获取待加密的初始图像,所述初始图像的尺寸为m×n,其中,m为所述初始图像的像素行数,n为所述初始图像的像素列数;
获取第一位数b_Num,对所述初始图像进行低位的合并,得到第一压缩图像数据,所述第一压缩图像数据的总位数为m×n×b_Num;
获取第二位数b_Ele,对所述初始图像进行二元组编码,得到延伸序列位数b_count,对所述初始图像进行高位的压缩,得到第二压缩图像数据,所述第二压缩图像数据的总位数为(b_Num+b_Ele)×b_count;
通过所述第一压缩图像数据与所述第二压缩图像数据的总位数,确定所述初始图像编码后剩余空间的总位数b_space,通过预设公式生成随机序列作为第三压缩图像数据,其中,所述第三压缩图像数据的总位数为b_space;
将所述第一压缩图像数据、所述第二压缩图像数据以及所述第三压缩图像数据进行顺次连接,得到初始压缩图像的全部像素点,通过所述初始压缩图像的全部像素点生成m×n的图像,得到初始压缩图像;
所述秘密数据嵌入过程包括:
获取待嵌入的秘密数据,将所述秘密数据替换所述初始压缩图像中的部分第三压缩图像数据,得到嵌入秘密数据的初始压缩图像,其中,所述待嵌入的秘密数据的总位数k≤b_space;
通过所述预设公式,对所述嵌入秘密数据的初始压缩图像进行像素扩散,得到最终压缩加密图像;
所述恢复过程包括:
获取最终压缩加密图像,通过所述预设公式,将所述最终压缩加密图像恢复为像素扩散前的嵌入秘密数据的初始压缩图像;
将所述嵌入秘密数据的初始压缩图像的前m×n×b_Num位数据作为第一序列B1,通过所述第一序列B1得到所述初始图像的低位数据;
将所述嵌入秘密数据的初始压缩图像的[(m×n×b_Num/8)×8+1]位至[m×n×b_Num+(b_Num+b_Ele)×b_count]位数据作为第二序列B2,通过所述第二序列B2得到所述初始图像的高位数据;
将所述低位数据与所述高位数据进行组合,得到恢复后的初始图像;
所述秘密数据提取过程包括:
将所述嵌入秘密数据的初始压缩图像的[m×n×bNum+(bNum+bEle)×bcount]+1位至最后位数据作为第三序列B3,通过所述第三序列B3提取秘密数据。
2.根据权利要求1所述的方法,其特征在于,所述对所述初始图像进行低位的合并,得到第一压缩图像数据,包括:
通过第一位数b_Num,获取所述初始图像的低位数据A_Low=mod(A,2b_Num),其中A表示所述初始图像的像素值;
将所述低位数据转为二进制数据,A_Low_2=dec2bin(A_Low),将二进制数据转换为字符向量元胞数组,A_Low_cell=cellstr(A_Low_2);
将所有字符向量元胞数组连接成一个序列,
A_Low_connect=strcat(A_Low_cell(1),A_Low_cell(2),…,A_Low_(m×n));
将序列转换为字符型,A_Low_char=char(A_Low_connet),并将A_Low_char每8位一组进行分组,不足8位时后面补0,得到B_Low(i)=A_Low_char((i-1)×8+1,8×i);
将B_Low转为十进制序列,B_L=bin2dec(B_Low)。
3.根据权利要求1所述的方法,其特征在于,所述对所述初始图像进行二元组编码,得到延伸序列位数b_count,对所述初始图像进行高位的压缩,得到第二压缩图像数据,包括:
通过所述第二位数b_Ele,获取所述初始图像的高位数据A_High=bitshift(A,-b_Num),其中,bitshift(a,b)表示将a对应的二进制向左或向右移动b位,当b>0时左移,当b<0时右移;
将A_High改写为一维序列,并转为double型:A_High_d=double(A_High);
记录连续出现的A_High_d(i)值,并记录其连续出现的次数count:count=find([true;find(A_High_d(:)~=0;true]);
则每个A_High_d(i)的起始下标:count_1=[count(1:end-1)];A_High_d(i)连续出现的个数count_2=[diff(count)];
当count_2(i)≥2b_Num-1时,对count_2进行拆解,使得:count_2(i)≤2b_Num-1,拆解后的延伸序列记为:COUNT_extend,所述延伸序列位数:b_count=length(COUNT_extend);
将每个相同元素A_High_d(i)与其对应个数COUNT_extend(i)顺次连接成一个新序列,A_High_connect=stract(A_High(count(i)),count_2_extend(i));
将A_High_connect每8位一组,生成新序列,不足8位时后面补0:B_High(i)=A_High_connect((i-1)×8+1,8×i);
将B_High转为十进制序列B_H=bin2dec(B_High)),所述十进制序列B_H即为第二压缩图像数据。
4.根据权利要求1所述的方法,其特征在于,所述通过所述第一压缩图像数据与所述第二压缩图像数据的总位数,确定所述初始图像编码后剩余空间的总位数b_space,包括:
b_space=m×n×8-m×n×b_Num-(b_Num+b_Ele)×b_count
=m×n×(8-b_Num)-(b_Num+b_Ele)×b_count。
5.根据权利要求1所述的方法,其特征在于,所述通过预设公式生成随机序列作为第三压缩图像数据,包括:
通过Logistic映射的计算公式以及预设的初值x0和μ,生成序列xi,所述Logistic映射的计算公式为:
xk+1=μxk(1-xk)
其中:3.569945≤μ≤4,xk∈[0,1];
通过序列xi,生成pi
Figure FDA0003055571030000031
将pi每8位一组,并转为十进制,得到序列B_P,B_P=bin2dec(pi),所述B_P即为第三压缩图像数据。
6.根据权利要求5所述的方法,其特征在于,所述获取待嵌入的秘密数据,将所述秘密数据替换所述初始压缩图像中的部分第三压缩图像数据,包括:
获取待嵌入的秘密数据W=w1,w2,…wk,wi∈{0,1},所述待嵌入的秘密数据的总位数为k;
通过预设的初值x0′和μ′,通过Logistic映射的计算公式生成长度为k且各元素互不相等的序列Q,
Figure FDA0003055571030000032
Q=q1,q2,…,qk,且i≠j时,qi≠qj
当存在正整数j属于序列Q,且j等于序列Q中的qi时,确定wi以及B_P(j),使用wi替换原来的B_P(j),即:
Figure FDA0003055571030000041
7.根据权利要求5所述的方法,其特征在于,所述通过所述预设公式,对所述嵌入秘密数据的初始压缩图像进行像素扩散,得到最终压缩加密图像,包括:
通过预设的Logistic映射的计算公式以及预设的初值x0"和μ",生成一个长为m×n的随机序列D,D=mod(fix(T(i)×1000),256),1≤i≤m×n则:0≤Q≤255;
将所述序列D改写为m×n大小的像素扩散矩阵D′,D′=reshape(Q,m,n);
通过所述嵌入秘密数据的初始压缩图像以及像素扩散矩阵D′,确定所述最终压缩加密图像C,
Figure FDA0003055571030000042
其中,B表示所述嵌入秘密数据的初始压缩图像。
8.根据权利要求7所述的方法,其特征在于,所述通过所述第一序列B1得到所述初始图像的低位数据,包括:
将所述第一序列B1中的数据每b_Num位组成一组,得到图像A的低b_Num位。
9.根据权利要求8所述的方法,其特征在于,所述通过所述第二序列B2得到所述初始图像的高位数据,包括:
将所述第二序列B2中的数据每(b_Num+b_Ele)位组成一组,再根据b_Num和b_Ele得到二元组(Element,Number),根据Number的数值展开Element,得到的序列构成B4
将序列B4中的数据每b_Ele位组成一组,得到图像A的高b_Ele位。
10.一种基于编码的图像加密隐藏信息的装置,其特征在于,所述装置包括:
压缩单元,用于:
获取待加密的初始图像,所述初始图像的尺寸为m×n,其中,m为所述初始图像的像素行数,n为所述初始图像的像素列数;
获取第一位数b_Num,对所述初始图像进行低位的合并,得到第一压缩图像数据,所述第一压缩图像数据的总位数为m×n×b_Num;
获取第二位数b_Ele,对所述初始图像进行二元组编码,得到延伸序列位数b_count,对所述初始图像进行高位的压缩,得到第二压缩图像数据,所述第二压缩图像数据的总位数为(b_Num+b_Ele)×b_count;
通过所述第一压缩图像数据与所述第二压缩图像数据的总位数,确定所述初始图像编码后剩余空间的总位数b_space,通过预设公式生成随机序列作为第三压缩图像数据,其中,所述第三压缩图像数据的总位数为b_space;
将所述第一压缩图像数据、所述第二压缩图像数据以及所述第三压缩图像数据进行顺次连接,得到初始压缩图像的全部像素点,通过所述初始压缩图像的全部像素点生成m×n的图像,得到初始压缩图像;
秘密数据嵌入单元,用于:
获取待嵌入的秘密数据,将所述秘密数据替换所述初始压缩图像中的部分第三压缩图像数据,得到嵌入秘密数据的初始压缩图像,其中,所述待嵌入的秘密数据的总位数k≤b_space;
通过所述预设公式,对所述嵌入秘密数据的初始压缩图像进行像素扩散,得到最终压缩加密图像;
恢复单元,用于:
获取最终压缩加密图像,通过所述预设公式,将所述最终压缩加密图像恢复为像素扩散前的嵌入秘密数据的初始压缩图像;
将所述嵌入秘密数据的初始压缩图像的前m×n×b_Num位数据作为第一序列B1,通过所述第一序列B1得到所述初始图像的低位数据;
将所述嵌入秘密数据的初始压缩图像的[(m×n×b_Num/8)×8+1]位至[m×n×b_Num+(b_Num+b_Ele)×b_count]位数据作为第二序列B2,通过所述第二序列B2得到所述初始图像的高位数据;
将所述低位数据与所述高位数据进行组合,得到恢复后的初始图像;
秘密数据提取单元,用于:
将所述嵌入秘密数据的初始压缩图像的[m×n×bNum+(bNum+bEle)×bcount]+1位至最后位数据作为第三序列B3,通过所述第三序列B3提取秘密数据。
CN202110498785.XA 2021-05-08 2021-05-08 一种基于编码的图像加密隐藏信息的方法及装置 Active CN113378186B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110498785.XA CN113378186B (zh) 2021-05-08 2021-05-08 一种基于编码的图像加密隐藏信息的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110498785.XA CN113378186B (zh) 2021-05-08 2021-05-08 一种基于编码的图像加密隐藏信息的方法及装置

Publications (2)

Publication Number Publication Date
CN113378186A true CN113378186A (zh) 2021-09-10
CN113378186B CN113378186B (zh) 2023-01-20

Family

ID=77570846

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110498785.XA Active CN113378186B (zh) 2021-05-08 2021-05-08 一种基于编码的图像加密隐藏信息的方法及装置

Country Status (1)

Country Link
CN (1) CN113378186B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116170599A (zh) * 2023-04-26 2023-05-26 长城信息股份有限公司 一种同步实时图像压缩方法、系统、介质及终端

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107493405A (zh) * 2017-09-27 2017-12-19 广西师范大学 基于编码压缩的加密图像可逆信息隐藏方法
WO2018153317A1 (zh) * 2017-02-24 2018-08-30 陈伟 一种基于混沌数谱的数字化混沌密码方法
CN109800585A (zh) * 2018-12-04 2019-05-24 王继军 一种图像插值空间完全可逆可分离密文域信息隐藏算法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018153317A1 (zh) * 2017-02-24 2018-08-30 陈伟 一种基于混沌数谱的数字化混沌密码方法
CN107493405A (zh) * 2017-09-27 2017-12-19 广西师范大学 基于编码压缩的加密图像可逆信息隐藏方法
CN109800585A (zh) * 2018-12-04 2019-05-24 王继军 一种图像插值空间完全可逆可分离密文域信息隐藏算法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
DAWEN XU: "Separable and error-free reversible data hiding in encrypted images", 《SIGNAL PROCESSING》 *
WU,H.T: "A Reversible data hiding Scheme in Encrypted Medical Images", 《J.VIS.COMMUMN.IMAGE REPRESENT》 *
YUAN YI: "Effect of Embedding Way on Printed Watermarking Image by Lithography", 《 2014 INTERNATIONAL CONFERENCE ON CYBER-ENABLED DISTRIBUTED COMPUTING AND KNOWLEDGE DISCOVERY》 *
ZHENXING QIAN: "Reversible Data Hiding in Encrypted Images With Distributed Source Encoding", 《IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY》 *
王继军等: "图像插值空间完全可逆可分离密文域信息隐藏算法", 《电子学报》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116170599A (zh) * 2023-04-26 2023-05-26 长城信息股份有限公司 一种同步实时图像压缩方法、系统、介质及终端
CN116170599B (zh) * 2023-04-26 2023-07-25 长城信息股份有限公司 一种同步实时图像压缩方法、系统、介质及终端

Also Published As

Publication number Publication date
CN113378186B (zh) 2023-01-20

Similar Documents

Publication Publication Date Title
Yin et al. Reversible data hiding in encrypted images based on multi-MSB prediction and Huffman coding
Xiao et al. Separable reversible data hiding in encrypted image based on pixel value ordering and additive homomorphism
Cao et al. High capacity reversible data hiding in encrypted images by patch-level sparse representation
CN107493405B (zh) 基于编码压缩的加密图像可逆信息隐藏方法
CN109462714B (zh) 云存储开销小的加密图像多位平面可逆数据隐藏方法
JP4669187B2 (ja) 圧縮イメージ内に透かしを組み込む方法、圧縮されたイメージからすかしを回復する方法、ならびに記録媒体
Chen et al. Multi-MSB compression based reversible data hiding scheme in encrypted images
Liu et al. Reversible data hiding in encrypted images using chunk encryption and redundancy matrix representation
Liew et al. Reversible medical image watermarking for tamper detection and recovery with Run Length Encoding compression
CN111464717B (zh) 利用直方图平移的具有对比度拉升的可逆信息隐藏方法
Xiang et al. Cryptanalysis and improvement of a reversible data-hiding scheme in encrypted images by redundant space transfer
CN114745475B (zh) 一种鲁棒的加密图像可逆信息隐藏方法
Chen et al. Reversible watermarking for medical images using histogram shifting with location map reduction
CN114172630B (zh) 一种基于加法同态加密与多高位嵌入的可逆信息隐藏方法
CN113378186B (zh) 一种基于编码的图像加密隐藏信息的方法及装置
Gao et al. High-performance reversible data hiding in encrypted images with adaptive Huffman code
Gao et al. Reversible watermarking algorithm based on wavelet lifting scheme
CN111210378B (zh) 基于工业云上图像数据的可恢复性方法
CN115297218B (zh) 基于哈夫曼编码规则和位置图压缩的可逆数据隐藏方法
CN116305211A (zh) 一种图像加密处理方法及装置
Chang et al. Reversible run length data embedding for medical images
CN113382127B (zh) 一种弹性选择和游程编码的加密图像可逆信息隐藏方法
CN115190216A (zh) 基于预测误差图的加密图像可逆数据隐藏及解密方法
Yao et al. Reversible Data Hiding in Encrypted Images Using Global Compression of Zero-valued High Bit-planes and Block Rearrangement
Sultana et al. An Edge Detection Based Reversible Data Hiding Scheme

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20240401

Address after: 412007 No. 88 Taishan Road, Tianyuan District, Zhuzhou City, Hunan Province

Patentee after: HUNAN University OF TECHNOLOGY

Country or region after: China

Address before: 412007 room 603, building 15, No. 26, Zhujiang South Road, Tianyuan District, Zhuzhou City, Hunan Province

Patentee before: Yuan Yi

Country or region before: China

Patentee before: HUNAN University OF TECHNOLOGY

TR01 Transfer of patent right