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
通过第一位数b_Num,获取所述初始图像的低位数据A_Low=mod(A,2 ),其中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)];
b_Num b_Num
当count_2(i)≥2 ‑1时,对count_2进行拆解,使得:count_2(i)≤2 ‑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,
将pi每8位一组,并转为十进制,得到序列B_P,B_P=bin2dec(pi),所述B_P即为第三压缩图像数据。
6.根据权利要求5所述的方法,其特征在于,所述获取待嵌入的秘密数据,将所述秘密数据替换所述初始压缩图像中的部分第三压缩图像数据,包括:获取待嵌入的秘密数据W=w1,w2,…wk,wi∈{0,1},所述待嵌入的秘密数据的总位数为k;
通过预设的初值x0′和μ′,通过Logistic映射的计算公式生成长度为k且各元素互不相等的序列Q, Q=q1,q2,…,qk,且i≠j时,qi≠qj;
当存在正整数j属于序列Q,且j等于序列Q中的qi时,确定wi以及B_P(j),使用wi替换原来的B_P(j),即:
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, 其中,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提取秘密数据。