CN115766963A - 一种基于自适应预测编码的加密图像可逆信息隐藏方法 - Google Patents
一种基于自适应预测编码的加密图像可逆信息隐藏方法 Download PDFInfo
- Publication number
- CN115766963A CN115766963A CN202211410817.7A CN202211410817A CN115766963A CN 115766963 A CN115766963 A CN 115766963A CN 202211410817 A CN202211410817 A CN 202211410817A CN 115766963 A CN115766963 A CN 115766963A
- Authority
- CN
- China
- Prior art keywords
- sequence
- block
- pixel
- bit
- mark
- 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.)
- Pending
Links
Images
Landscapes
- Image Processing (AREA)
Abstract
本发明公开一种基于自适应预测编码的加密图像可逆信息隐藏方法,是基于不同特征计算纹理复杂度对图像块进行分类,针对不同类型块的像素相关性差距较大,对不同的块运用不同的压缩算法;利用自适应权重预测法,缩小原像素值和预测值之间的差距,提高压缩效率,以此增加嵌入容量。平滑块根据不同的预测误差,使用不同的像素级压缩方法,纹理块采用了优化自适应权重预测的块级压缩方法,给秘密信息的嵌入提供了足够的空间。本发明具有压缩效率高、嵌入容量大、完全可逆、安全性及不可见性好等优点。
Description
技术领域
本发明涉及一种加密图像可逆信息隐藏方法,尤其是一种基于自适应预测编码的加密图像可逆信息隐藏方法。
背景技术
图像是多媒体中最为常见的形式,比如生活办公、医疗诊断等等,数据隐藏技术是保证图像数据安全的手段之一。早期数据隐藏技术能够将数据嵌入,但提取时会导致图像信息失真。可逆数据隐藏(Reversible data hide,RDH)可以将图像的认证信息和附加信息嵌入并且能够完美提取,同时保留原始数据,通过提取的认证信息判断图像的真伪。
目前RDH研究的方法主要有无损压缩(LC)、差分扩展(DE)、像素值排序(PVO)、直方图平移(HS)和预测误差扩展(PEE)等。Chen等人使用扩展游程编码和最高有效位(MSB)平面重排机制,通过无损压缩图像的MSB平面腾出嵌入空间。该方案具有较高的嵌入率和图像质量,不足在于MSB平面的像素分布不确定,当遇到纹理度大的区域,压缩的效率就大大降低,从而导致腾出的嵌入空间减小。Wang等人首先对图像进行块级加密和块置乱,再用块左上角像素预测其余像素腾出嵌入空间,最后将像素块重排保证可逆。该方案加密效果好,嵌入容量有所提升,缺点在于第一在于使用2*2块会降低像素之间的相关性,使得预测准确性偏低及嵌入容量有所减少,第二存储的位置图信息都集中于前面部分的块中,若其受到攻击,整个图像的分块压缩信息无法提取,从而导致无法还原和提取信息,即存在着预测忽略相关性和位置图存储过于集中等问题。
发明内容
本发明是为了解决现有技术所存在的上述技术问题,提供一种基于自适应预测编码的加密图像可逆信息隐藏方法。
本发明的技术解决方案是:一种基于自适应预测编码的加密图像可逆信息隐藏方法,依次按照如下步骤进行:
步骤1.将图像按照纹理度划分为平滑块和纹理块;
步骤2.对平滑块根据不同的预测误差进行像素差值压缩或像素位平面压缩;
步骤3.对纹理块进行优化自适应权重预测的块级压缩;
步骤4.分别对平滑块和纹理块进行信息嵌入,再将嵌入后的块还原形成载密块,最后将所有载密块组合形成载密图像;
步骤5.使用拥有的密钥进行图像恢复或/和信息提取。
所述步骤1具体如下:
步骤1.1将图像img_origin分为4*4的块;
步骤1.2计算图像img_origin子块纹理度:
步骤1.2.1依据公式(1)计算子块能量值:
其中g代表的是灰度共生矩阵,d,θ是两个灰度之间的距离和方向,k表示子块的大小;
步骤1.2.2依据公式(2)计算子块的熵;
步骤1.2.3依据公式(3)计算子块对比度;
步骤1.2.4通过均方误差给所有子块的能量、熵和对比度三个特征值分配不同权重,并计算最终特征值J、H、D;
步骤1.2.5对三个最终特征参数分配权值w1,w2,w3,计算纹理复杂度f,其中w1,w2,w3由全局优化算法确定;
f=w1×J+w2×H+w3×D (4)
步骤1.3用矩阵map_block存储每个块的分类信息,纹理块为1,平滑块为0;
所述步骤2具体如下:
步骤2.1确定坐标为{(1,2),(2,4),(3,1),(4,3)}的像素为参考像素{p1,p2,p3,p4};
步骤2.2通过每个预处理像素点与参考像素的欧几里得距离计算权重{w1,w2,w3,w4};
步骤2.3根据公式(5),计算每个像素值对应的预测值pr;
步骤2.4将每一个参考像素与周围相邻的三个预处理像素组成一个单元;
步骤2.5在一个单元内,如公式(6-7)将预处理像素值p和对应位置的预测像素值pr相减,得到的差值的绝对值dif_a,设置标志位mark_s,如果三个dif_a都小于8,那么mark_s为1,否则为0;
dif_a(i,j)=|p(i,j)-pr(i,j)| (6)
步骤2.6如果mark_s为1,则进行像素差值压缩法,如果mark_s为0,则进行像素位平面压缩法;
所述像素差值压缩法按照如下步骤进行:
步骤2.6.1.1根据单元内三个预处理像素的差值绝对值dif_a按照公式(8)计算对应的正负属性dif_t;
步骤2.6.1.2通过哈夫曼编码,经过优化,根据所有mark_s为1的单元的差值数量统计,按频次从高到低的顺序,依次用01-00011来代替,形成哈夫曼压缩替换表;
步骤2.6.1.3创建一个24bit的空序列;
步骤2.6.1.4序列的第一位表示平滑块中的压缩类型,像素差值压缩法填充为1;
步骤2.6.1.5查找预处理像素差值dif_a与哈夫曼压缩替换表所对应的标签,将标签依次填充到序列第一位之后;
步骤2.6.1.6序列的剩余部分为压缩后的可嵌入空间;
步骤2.6.1.7预处理像素的正负属性dif_t当作辅助信息img_water_c进行存储;
所述像素位平面压缩法按照如下步骤进行:
步骤2.6.2.1将单元内四个像素ph用8位二进制表示,如公式(9):
步骤2.6.2.2将四个像素从最高有效位MSB到最低有效位LSB进行对比,寻找相同的位数,用sim_num表示不同位数的数量;
步骤2.6.2.3创建一个24bit的空序列;
步骤2.6.2.4序列的第一位表示平滑块中的压缩类型,像素位平面压缩法填充为0;
步骤2.6.2.5将sim_num用3位二进制数表示,填充到序列的第二位到第四位;
步骤2.6.2.6将三个预处理像素的不相同位,如公式(10),依次填充到序列的第四位之后;
dif_ph={ph,t|t=sim_num,…,8} (10)
步骤2.6.2.7序列的剩余部分为压缩后的可嵌入空间;
步骤2.6.2.8将溢出的数据当作辅助信息img_water_w进行存储;
步骤2.6.3在以坐标(1,2)为参考像素的单元中,24bit序列第一位存放的是块类型标记,平滑块标记为0,纹理块标记为1;
步骤2.7将24bit的序列三等分,转化为十进制后,分配给单元中的三个预处理像素;
步骤2.8最终将四个单元拼合后,组成可嵌入块;
所述步骤3具体如下:
步骤3.1画一条从上到下和一条从左到右的线;
步骤3.2通过两条线将块划分为n个区域,计算每个区域中的均方差,再求和得到msen;
步骤3.3将所有块的msen求和得到mse_all;
步骤3.4重复步骤3.1-3.3,通过划定不同的两条线,可以得到多个不同的mse_all;
步骤3.5从众多mse_all中选取最小值,并将对应的两条线line1,line2的坐标当作辅助信息img_water_l存储;
步骤3.6用line1,line2将纹理块划分为多个区域;
步骤3.7确定坐标为{(1,2),(2,4),(3,1),(4,3)}的像素为参考像素{p1,p2,p3,p4};
步骤3.8通过像素点与参考像素的欧几里得距离,计算权重{w1,w2,w3,w4};
步骤3.9在同一个区域中,如果有多个参考像素,就增加对应参考像素的权重值,如果没有参考像素,就对权重不做改变,最后更新权重为{w1′,w2′,w3′,w4′};
步骤3.10根据公式(11),计算每个像素值对应的预测值pr′;
步骤3.11将预处理像素值和预测像素值做差,存储到矩阵block中,参考像素值不变,存储到对应位置,如公式(12);
步骤3.12把矩阵block用8个位平面block_b表示,如公式(13)所示;
步骤3.13在最高有效位MSB的位平面中,从左至右,从上到下,填充索引信息;
步骤3.13.1位置(1,1)表示块类型标记,纹理块标记为1;
步骤3.13.2位置(1,2),(1,4),(2,2)表示嵌入层数,通过判断block_b的每一个为平面,除参考像素位置和索引信息位置外,是否都为0,用sim_layer表示都为0的位平面个数,即可嵌入层数;
步骤3.13.3创建一个块可嵌层数替换表;
步骤3.13.4根据块可嵌层数替换表,寻找sim_layer对应的标记,并填充至位置(1,2),(1,4),(2,2);
步骤3.13.5在可嵌入层数中,剩余空间为可嵌入空间;
步骤3.14通过公式(14),将像素值做差后的正负属性dif_t′当作辅助信息img_water_c存储起来;
步骤3.15当可嵌入层数为0时,将原位置(1,1),(1,2),(1,4),(2,2)的数当作辅助信息img_water_w存储起来;
步骤3.16将8个位平面转化为用十进制表示的可嵌入块;
步骤3.17图像块间置乱;
3.17.1令Z1=para_1,a=para_2,利用ICMIC映射如公式(15)生成随机序列Z,para_1和para_2作为密钥kb保存;
步骤3.17.2取随机序列前128*128位,对其排序,得到位置索引序列Zf;
步骤3.17.3将所有可嵌入块转换为一维序列Zb,按照位置索引序列进行位置置乱,形成置乱后的序列Za,如公式(16)所示;
Za(Zf(i))=Zb(i)i=1,2,…,128×128 (16)
步骤3.18将所有可嵌入块一维序列转换为待嵌入图像;
所述步骤4具体如下:
步骤4.1用18位二进制数img_water_c_len表示辅助信息img_water_c的长度,用15位二进制数img_water_w_len表示辅助信息img_water_w的长度;
步骤4.2将待嵌入图像划分为4*4的块;
步骤4.3识别块中左上角的像素最高有效位,如果为1,此块为纹理块,反之为平滑块;
步骤4.4平滑块嵌入
步骤4.4.1确定坐标为{(1,2),(2,4),(3,1),(4,3)}的参考像素{p1,p2,p3,p4};
步骤4.4.2将每一个参考像素与周围相邻的三个预处理像素组成一个单元;
步骤4.4.3将单元中的三个预处理像素转化为二进制拼接起来,形成24bit的序列;
步骤4.4.4识别序列的第一位数,如果是1,表明此单元是差值压缩;
步骤4.4.4.1通过哈夫曼压缩替换表,识别序列从第二位开始的三个对应标记,计算三位标记的总位数num_mark;
步骤4.4.4.2通过公式(17)计算,序列的剩余空间长度re_d_len为待嵌入空间;
re_d_len=24-1-num_mark (17)
步骤4.4.5序列的第一位数,如果是0,表明此单元是位平面压缩;
步骤4.4.5.1通过序列的第二至四位,转化为十进制mark_p;
步骤4.4.5.2通过公式(18)计算,序列的剩余空间长度re_p_len,如果re_p_len小于0,那么表示不可嵌入,反之为待嵌入空间;
re_p_len=24-1-3-(8-mark_p)*3 (18)
步骤4.5纹理块嵌入
步骤4.5.1确定坐标为{(1,2),(2,4),(3,1),(4,3)}的参考像素{p1,p2,p3,p4};
步骤4.5.2纹理块block用8个位平面block_b表示,如公式(13)所示;
步骤4.5.3判断最高有效位平面的位置(1,2),(1,4),(2,2),将他们组合起来形成十进制数mark_sim;
步骤4.5.4通过mark_sim判断可嵌入的层数,在可嵌入层数中,除去索引信息和参考像素以外的空间,作为待嵌入空间;
步骤4.6将辅助信息的长度嵌入到待嵌入空间中,之后再将辅助信息嵌入;
步骤4.7辅助信息嵌入完成后,将图像块还原,形成可嵌入秘密信息块;
步骤4.8图像隐藏者按照步骤4.1-步骤4.5,得到待嵌入空间;
步骤4.9获取18位和15位的辅助信息长度;
步骤4.10将秘密信息使用流密码加密;
步骤4.10.1令Z0=para_3,a=para_4,利用ICMIC映射如公式(15)生成随机序列,para_3和para_4作为密钥ke保存;
步骤4.10.2生成的随机序列为小数,通过公式(19)将随机序列转换为二进制表示;
步骤4.10.3再将二进制随机序列与秘密信息进行按位异或,最后形成加密后的秘密信息;
步骤4.11计算秘密信息的长度,将其添加到秘密信息的头部;
步骤4.12嵌入秘密信息,计算此时待嵌入空间索引位置是否超过了辅助信息长度,如果超过,则进行嵌入,否则跳过;
步骤4.13将嵌入后的块还原,形成载密块;
步骤4.14将所有载密块组合,形成载密图像;
所述步骤5具体如下:
步骤5.1图像接收者拥有密钥ke
步骤5.1.1平滑块提取信息
步骤5.1.1.1确定坐标为{(1,2),(2,4),(3,1),(4,3)}的参考像素{p1,p2,p3,p4};
步骤5.1.1.2将每一个参考像素与周围相邻的三个预处理像素组成一个单元;
步骤5.1.1.3将单元中的三个预处理像素转化为二进制拼接起来,形成24bit的序列;
步骤5.1.1.4识别序列的第一位数,如果是1,表明此单元是差值压缩;
步骤5.1.1.4.1通过哈夫曼压缩替换表,识别序列从第二位开始的三个对应标记,计算三位标记的总位数num_mark;
步骤5.1.1.4.2通过公式(17)计算,提取长度为re_d_len的序列剩余空间信息;
步骤5.1.1.5序列的第一位数,如果是0,表明此单元是位平面压缩;
步骤5.1.1.5.1通过序列的第二至四位,转化为十进制mark_p;
步骤5.1.1.5.2通过公式(18)计算,取长度为re_p_len的序列剩余空间信息,如果re_p_len小于0,则跳过,反之提取嵌入信息;
步骤5.1.2纹理块提取信息
步骤5.1.2.1确定坐标为{(1,2),(2,4),(3,1),(4,3)}的参考像素{p1,p2,p3,p4};
步骤5.1.2.2纹理块block用8个位平面block_b表示,如公式(13)所示;
步骤5.1.2.3判断最高有效位平面的位置(1,2),(1,4),(2,2),将他们组合起来形成十进制数mark_sim;
步骤5.1.2.4通过mark_sim判断嵌入信息的层数,在嵌入信息层数中,除去索引信息和参考像素以外的空间,都是嵌入的信息,将其提取出来;
步骤5.1.3辅助信息提取
步骤5.1.3.1提取前12位的交叉线坐标信息;
步骤5.1.3.2提取13-30位的正负属性长度img_water_c_len,并从31位开始提取正负属性辅助信息;
步骤5.1.3.3提取(32+img_water_c_len)-(46+img_water_c_len)位的溢出信息长度img_water_w_len,紧接着提取溢出信息;
步骤5.1.4提取信息中除去辅助信息,取秘密信息长度,再提取秘密信息;
步骤5.1.5将秘密信息使用流密码解密;
步骤5.1.5.1将密钥ke带入到公式(15)中,利用ICMIC映射生成随机序列。
步骤5.1.5.2通过公式(19)将随机序列转换为二进制表示;
步骤5.1.5.3再将二进制随机序列与秘密信息进行按位异或,最后形成解密后的秘密信息;
步骤5.2图像接收者拥有密钥kb
步骤5.2.1根据步骤5.1.3,提取辅助信息;
步骤5.2.2平滑块还原
步骤5.2.2.1确定坐标为{(1,2),(2,4),(3,1),(4,3)}的参考像素{p1,p2,p3,p4};
步骤5.2.2.2将每一个参考像素与周围相邻的三个预处理像素组成一个单元;
步骤5.2.2.3将单元中的三个预处理像素转化为二进制拼接起来,形成24bit的序列;
步骤5.2.2.4识别序列的第一位数,如果是1,表明此单元是差值压缩;
步骤5.2.2.4.1通过哈夫曼压缩替换表,识别序列从第二位开始的三个对应标记{mark_t1,mark_t2,mark_t3},并提取三个标记对应的差值difn;
步骤5.2.2.4.2通过像素点与参考像素的欧几里得距离,计算权重{w1,w2,w3,w4};
步骤5.2.2.4.3根据公式(5),计算每个像素值对应的预测值pr;
步骤5.2.2.4.4从img_water_c中提取正负属性e,如公式(20)所示;
步骤5.2.2.4.5在一个单元内,将e与差值difn相乘,再与预测像素值pr相加,最后得到原始像素值p′n,如公式(21)所示。
p′n=e×difn+pr n=1,2,3 (21)
步骤5.2.2.5识别序列的第一位数,如果是0,表明此单元是位平面压缩;
步骤5.2.2.5.1通过序列的第二至四位,转化为十进制mark_p;
步骤5.2.2.5.2如果mark_p等于0,则从第五位开始,每次取长度为8二进制数,分别赋值到{num_p1,num_p2},剩余序列赋值到num_p3;
步骤5.2.2.5.3如果是以坐标(1,2)为参考像素的单元,便从辅助信息img_water_w中提取5位,反之从辅助信息img_water_w中提取4位补充到num_p3后;
步骤5.2.2.5.4如果mark_p等于1,则从第五位开始,每次取长度为7二进制数,分别赋值到{num_p1,num_p2},剩余序列赋值到num_p3;
步骤5.2.2.5.5如果是以坐标(1,2)为参考像素的单元,便从辅助信息img_water_w中提取1位,反之从辅助信息img_water_w中提取2位补充到num_p3后;
步骤5.2.2.5.6将参考像素第一位分别赋值到num_pn的头部;
步骤5.2.2.5.7如果mark_p大于1,则从第五位开始,每次取长度为(8-mark_p)二进制数,分别赋值到{num_p1,num_p2},剩余序列赋值到num_p3;
步骤5.2.2.5.8将参考像素前mark_p位分别赋值到num_pn的头部;
步骤5.2.2.5.9将num_pn转换成十进制,形成原始像素值p′n;
步骤5.2.3纹理块还原
步骤5.2.3.1确定坐标为{(1,2),(2,4),(3,1),(4,3)}的参考像素{p1,p2,p3,p4};
步骤5.2.3.2将辅助信息中两条线坐标提取出,形成line1,line2;
步骤5.2.3.3将纹理块用line1,line2划分为多个区域;
步骤5.2.3.4通过像素点与参考像素的欧几里得距离,计算权重{w1,w2,w3,w4};
步骤5.2.3.5在同一个区域中,如果有多个参考像素,就增加对应参考像素的权重值。如果没有参考像素,就对权重不做改变,最后更新权重为{w1′,w2′,w3′,w4′};
步骤5.2.3.6根据通过公式(11),计算每个像素值对应的预测值pr′;
步骤5.2.3.7纹理块block用8个位平面block_b表示;
步骤5.2.3.8取第一个位平面位置为(1,2),(1,4),(2,2)的数,将他们组合起来与表2进行对比,得出相应的嵌入层数mark_sim;
步骤5.2.3.9将前mark_sim个位平面中,除去参考像素以外的空间,都填充0;
步骤5.2.3.10如果mark_sim为0,提取辅助信息img_water_w前4位,替换掉block_b中第一位平面位置(1,1),(1,2),(1,4),(2,2)的值;
步骤5.2.3.11再将8位平面转换成十进制矩阵block′;
步骤5.2.3.12从辅助信息img_water_c中提取正负属性e,如公式(20);
步骤5.2.3.13通过公式(22),得到原始块block_s;
步骤5.2.4将所有块转换成一维序列;
步骤5.2.5将密钥kb带入到公式(18)中,利用ICMIC映射生成随机序列Z;
步骤5.2.6取随机序列前128*128位,对其排序,得到位置索引序列Zf;
步骤5.2.7将所有还原块转换为一维序列Za,按照位置索引序列进行逆置乱,形成还原后的序列Zb,如公式(23)所示;
Zb(Zf(i))=Za(i)i=1,2,…,128×128 (23)
步骤5.2.8将所有还原块一维序列转换为还原图像;
步骤5.3图像接收者拥有密钥kb和ke
步骤5.3.1按照步骤5.1和步骤5.2,提取秘密信息及还原图像。
本发明根据图像不同块的纹理度将图像子块划分为平滑块和纹理块,对平滑块根据不同的预测误差进行像素差值压缩或像素位平面压缩,对纹理块进行优化自适应权重预测的块级压缩,再分别对平滑块和纹理块进行信息嵌入,将嵌入后的块还原形成载密块,最后将所有载密块组合形成载密图像,可根据所拥有的密钥进行图像恢复和信息提取。由于不同类型的块有着不同程度的像素相关性,使用自适应权重预测法可使预测值更加贴近于原始像素值,以此腾出更多的空间嵌入秘密信息。同时本发明将数据处理、数据嵌入和数据接收划分为三个部分,每个部分互不干涉,只能通过指定的密钥进行对应操作,更能保证数据传输之间的安全性和隐私性。具有压缩效率高、嵌入容量大、完全可逆、安全性及不可见性好等优点。
附图说明
图1是本发明实施例总体流程图。
图2是本发明实施例参考像素标记位置图。
图3是本发明实施例平滑块拆分单元图。
图4是本发明实施例像素差值压缩图。
图5是本发明实施例像素位平面压缩图。
图6是本发明实施例块级压缩图。
图7是本发明实施例双线区域划分图,图7(a)是块中可选线的交叉点坐标图,图7(b)是划线对图像块分割图,图7(c)是实际图像分割区域图。
图8是本发明实施例辅助信息。
图9是本发明实施例块置乱流程图。
图10是本发明实施例流密码加密流程图。
图11是本发明实施例像素差值压缩还原图。
图12是本发明实施例像素位平面压缩还原图。
图13是本发明实施例块级压缩还原图。
图14是本发明实施例测试图像的压缩和载密效果图,图14(a1-f1)是测试图像,图14(a2-f2)是压缩后的待嵌入图像,图14(a3-f3)是载密图像。
图15是本发明实施例Lena图像的像素分布图。
图16是本发明实施例不同文献PSNR和EC结果对比图。
具体实施方式
本发明的一种基于自适应预测编码的加密图像可逆信息隐藏方法,如图1所示,依次按照如下步骤进行:
步骤1.将图像按照纹理度划分为平滑块和纹理块:
所述步骤1具体如下:
步骤1.1将图像img_origin分为4*4的块;
步骤1.2计算图像img_origin子块纹理度:
步骤1.2.1依据公式(1)计算子块能量值:
其中g代表的是灰度共生矩阵,d,θ是两个灰度之间的距离和方向,k表示子块的大小;
步骤1.2.2依据公式(2)计算子块的熵;
步骤1.2.3依据公式(3)计算子块对比度;
步骤1.2.4通过均方误差给所有子块的能量、熵和对比度三个特征值分配不同权重,并计算最终特征值J、H、D;
步骤1.2.5对三个最终特征参数分配权值w1,w2,w3,计算纹理复杂度f,其中w1,w2,w3由全局优化算法确定;
f=w1×J+w2×H+w3×D (4)
步骤1.3用矩阵map_block存储每个块的分类信息,纹理块为1,平滑块为0。
步骤2.对平滑块根据不同的预测误差进行像素差值压缩或像素位平面压缩:
步骤2.1确定坐标为{(1,2),(2,4),(3,1),(4,3)}的像素为参考像素{p1,p2,p3,p4},如图2所示;
步骤2.2通过每个预处理像素点与参考像素的欧几里得距离计算权重{w1,w2,w3,w4};
步骤2.3根据公式(5),计算每个像素值对应的预测值pr;
步骤2.4将每一个参考像素与周围相邻的三个预处理像素组成一个单元,如图3所示;
步骤2.5在一个单元内,如公式(6-7)将预处理像素值p和对应位置的预测像素值pr相减,得到的差值的绝对值dif_a,设置标志位mark_s,如果三个dif_a都小于8,那么mark_s为1,否则为0;
dif_a(i,j)=|p(i,j)-pr(i,j)| (6)
步骤2.6如果mark_s为1,则进行像素差值压缩法,如果mark_s为0,则进行像素位平面压缩法;
所述像素差值压缩法如图4所示,按照如下步骤进行:
步骤2.6.1.1根据单元内三个预处理像素的差值绝对值dif_a按照公式(8)计算对应的正负属性dif_t;
步骤2.6.1.2通过哈夫曼编码,经过优化,根据所有mark_s为1的单元的差值数量统计,按频次从高到低的顺序,依次用01-00011来代替,形成哈夫曼压缩替换表(如表1所示);
步骤2.6.1.2通过哈夫曼编码,经过优化,根据所有单元满足mark_s为1的差值数量统计,按频次从高到低的顺序,依次用01-00011来代替,形成哈夫曼压缩替换表,如表1所示;
表1
差值 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
标签 | 11 | 01 | 101 | 001 | 1001 | 0000 | 10000 | 00011 |
步骤2.6.1.3创建一个24bit的空序列;
步骤2.6.1.4序列的第一位表示平滑块中的压缩类型,像素差值压缩法填充为1;
步骤2.6.1.5查找预处理像素差值dif_a与哈夫曼压缩替换表所对应的标签,将标签依次填充到序列第一位之后;
步骤2.6.1.6序列的剩余部分为压缩后的可嵌入空间;
步骤2.6.1.7预处理像素的正负属性dif_t当作辅助信息img_water_c进行存储;
所述像素位平面压缩法如图5所示,按照如下步骤进行:
步骤2.6.2.1将单元内四个像素ph用8位二进制表示,如公式(9):
步骤2.6.2.2将四个像素从最高有效位MSB到最低有效位LSB进行对比,寻找相同的位数,用sim_num表示不同位数的数量;
步骤2.6.2.3创建一个24bit的空序列;
步骤2.6.2.4序列的第一位表示平滑块中的压缩类型,像素位平面压缩法填充为0;
步骤2.6.2.5将sim_num用3位二进制数表示,填充到序列的第二位到第四位;
步骤2.6.2.6将三个预处理像素的不相同位,如公式(10),依次填充到序列的第四位之后;
dif_ph={ph,t|t=sim_num,…,8} (10)
步骤2.6.2.7序列的剩余部分为压缩后的可嵌入空间;
步骤2.6.2.8在sim_num为0和1时,序列在嵌入后的状态是溢出的,分别溢出了4位和1位(如果是第二、三、四个单元,分别溢出了5位和1位),为了能够完全还原图像,将溢出的数据当作辅助信息img_water_w进行存储;
步骤2.6.3在以坐标(1,2)为参考像素的单元中,24bit序列第一位存放的是块类型标记,平滑块标记为0,纹理块标记为1;
步骤2.7将24bit的序列三等分,转化为十进制后,分配给单元中的三个预处理像素;
步骤2.8最终将四个单元拼合后,组成可嵌入块;
步骤3.对纹理块进行优化自适应权重预测的块级压缩,如图6所示:
步骤3.1画一条从上到下(a1-e1→a2-e2)和一条从左到右(a1-a2→e1-e2)的线,如图7(a)所示;
步骤3.2通过两条线将块划分为n个区域,计算每个区域中的均方差,再求和得到msen;
步骤3.3将所有块的msen求和得到mse_all;
步骤3.4重复步骤3.1-3.3,通过划定不同的两条线,可以得到多个不同的mse_all;
步骤3.5从众多mse_all中选取最小值,并将对应的两条线line1,line2的坐标当作辅助信息img_water_l存储;
步骤3.6用line1,line2将纹理块划分为多个区域,如图7(b)(c)所示;
步骤3.7确定坐标为{(1,2),(2,4),(3,1),(4,3)}的像素为参考像素{p1,p2,p3,p4};
步骤3.8通过像素点与参考像素的欧几里得距离,计算权重{w1,w2,w3,w4};
步骤3.9在同一个区域中,如果有多个参考像素,就增加对应参考像素的权重值,如果没有参考像素,就对权重不做改变,最后更新权重为{w1′,w2′,w3′,w4′};
步骤3.10根据公式(11),计算每个像素值对应的预测值pr′;
步骤3.11将预处理像素值和预测像素值做差,存储到矩阵block中,参考像素值不变,存储到对应位置,如公式(12);
步骤3.12把矩阵block用8个位平面block_b表示,如公式(13)所示;
步骤3.13在最高有效位MSB的位平面中,从左至右,从上到下,填充索引信息;
步骤3.13.1位置(1,1)表示块类型标记,纹理块标记为1;
步骤3.13.2位置(1,2),(1,4),(2,2)表示嵌入层数,通过判断block_b的每一个为平面,除参考像素位置和索引信息位置外,是否都为0,用sim_layer表示都为0的位平面个数,即可嵌入层数;
步骤3.13.3创建一个块可嵌层数替换表,如表2所示;
表2
标记 | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
可嵌入层数 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
步骤3.13.4根据块可嵌层数替换表,寻找sim_layer对应的标记,并填充至位置(1,2),(1,4),(2,2);
步骤3.13.5在可嵌入层数中,剩余空间为可嵌入空间;
步骤3.14通过公式(14),将像素值做差后的正负属性dif_t′当作辅助信息img_water_c存储起来;
步骤3.15当可嵌入层数为0时,将原位置(1,1),(1,2),(1,4),(2,2)的数当作辅助信息img_water_w存储起来;
步骤3.16将8个位平面转化为用十进制表示的可嵌入块;
步骤3.17图像块间置乱,如图9所示;
3.17.1令Z1=para_1,a=para_2,利用ICMIC映射如公式(15)生成随机序列Z,para_1和para_2作为密钥kb保存;
步骤3.17.2取随机序列前128*128位,对其排序,得到位置索引序列Zf;
步骤3.17.3将所有可嵌入块转换为一维序列Zb,按照位置索引序列进行位置置乱,形成置乱后的序列Za,如公式(16)所示;
Za(Zf(i))=Zb(i)i=1,2,…,128×128 (16)
步骤3.18将所有可嵌入块一维序列转换为待嵌入图像;
表3给出了不同测试图像哈夫曼压缩替换表优化和未优化嵌入容量的对比;
表3
表4给出了在不同测试图像中,原始图像和待嵌入图像之间的PSNR以及待嵌入图像和载密图像之间的PSNR;
表4
步骤4.分别对平滑块和纹理块进行信息嵌入,再将嵌入后的块还原形成载密块,最后将所有载密块组合形成载密图像:
步骤4.1用18位二进制数img_water_c_len表示辅助信息img_water_c的长度,用15位二进制数img_water_w_len表示辅助信息img_water_w的长度,如图8所示;
步骤4.2将待嵌入图像划分为4*4的块;
步骤4.3识别块中左上角的像素最高有效位,如果为1,此块为纹理块,反之为平滑块;
表5给出了不同测试图像的信息熵;
表5
步骤4.4平滑块嵌入
步骤4.4.1确定坐标为{(1,2),(2,4),(3,1),(4,3)}的参考像素{p1,p2,p3,p4};
步骤4.4.2将每一个参考像素与周围相邻的三个预处理像素组成一个单元;
步骤4.4.3将单元中的三个预处理像素转化为二进制拼接起来,形成24bit的序列;
步骤4.4.4识别序列的第一位数,如果是1,表明此单元是差值压缩;
步骤4.4.4.1通过哈夫曼压缩替换表,识别序列从第二位开始的三个对应标记,计算三位标记的总位数num_mark;
步骤4.4.4.2通过公式(17)计算,序列的剩余空间长度re_d_len为待嵌入空间;
re_d_len=24-1-num_mark (17)
步骤4.4.5序列的第一位数,如果是0,表明此单元是位平面压缩;
步骤4.4.5.1通过序列的第二至四位,转化为十进制mark_p;
步骤4.4.5.2通过公式(18)计算,序列的剩余空间长度re_p_len,如果re_p_len小于0,那么表示不可嵌入,反之为待嵌入空间;
re_p_len=24-1-3-(8-mark_p)*3 (18)
步骤4.5纹理块嵌入
步骤4.5.1确定坐标为{(1,2),(2,4),(3,1),(4,3)}的参考像素{p1,p2,p3,p4};
步骤4.5.2纹理块block用8个位平面block_b表示,如公式(13)所示;
步骤4.5.3判断最高有效位平面的位置(1,2),(1,4),(2,2),将他们组合起来形成十进制数mark_sim;
步骤4.5.4通过mark_sim判断可嵌入的层数,在可嵌入层数中,除去索引信息和参考像素以外的空间,作为待嵌入空间;
步骤4.6将辅助信息的长度嵌入到待嵌入空间中,之后再将辅助信息嵌入;
步骤4.7辅助信息嵌入完成后,将图像块还原,形成可嵌入秘密信息块;
步骤4.8图像隐藏者按照步骤4.1-步骤4.5,得到待嵌入空间;
步骤4.9获取18位和15位的辅助信息长度;
步骤4.10将秘密信息使用流密码加密,如图10所示;
步骤4.10.1令Z0=para_3,a=para_4,利用ICMIC映射如公式(15)生成随机序列,para_3和para_4作为密钥ke保存;
步骤4.10.2生成的随机序列为小数,通过公式(19)将随机序列转换为二进制表示;
步骤4.10.3再将二进制随机序列与秘密信息进行按位异或,最后形成加密后的秘密信息;
步骤4.11计算秘密信息的长度,将其添加到秘密信息的头部;
步骤4.12嵌入秘密信息,计算此时待嵌入空间索引位置是否超过了辅助信息长度,如果超过,则进行嵌入,否则跳过;
步骤4.13将嵌入后的块还原,形成载密块;
步骤4.14将所有载密块组合,形成载密图像;
不同测试图像腾出空间和嵌入信息后的效果图,如图14所示,图14(a1-f1)是测试图像,图14(a2-f2)是压缩后的待嵌入图像,图14(a3-f3)是载密图像。
表6给出了不同测试图像的嵌入容量和嵌入率对比;
表6
步骤5.使用拥有的密钥进行图像恢复或/和信息提取:
步骤5.1图像接收者拥有密钥ke
步骤5.1.1平滑块提取信息
步骤5.1.1.1确定坐标为{(1,2),(2,4),(3,1),(4,3)}的参考像素{p1,p2,p3,p4};
步骤5.1.1.2将每一个参考像素与周围相邻的三个预处理像素组成一个单元;
步骤5.1.1.3将单元中的三个预处理像素转化为二进制拼接起来,形成24bit的序列;
步骤5.1.1.4识别序列的第一位数,如果是1,表明此单元是差值压缩,如图11所示;
步骤5.1.1.4.1通过哈夫曼压缩替换表,识别序列从第二位开始的三个对应标记,计算三位标记的总位数num_mark;
步骤5.1.1.4.2通过公式(17)计算,提取长度为re_d_len的序列剩余空间信息;
步骤5.1.1.5序列的第一位数,如果是0,表明此单元是位平面压缩,如图12所示;
步骤5.1.1.5.1通过序列的第二至四位,转化为十进制mark_p;
步骤5.1.1.5.2通过公式(18)计算,取长度为re_p_len的序列剩余空间信息,如果re_p_len小于0,则跳过,反之提取嵌入信息;
步骤5.1.2纹理块提取信息,如图13所示;
步骤5.1.2.1确定坐标为{(1,2),(2,4),(3,1),(4,3)}的参考像素{p1,p2,p3,p4};
步骤5.1.2.2纹理块block用8个位平面block_b表示,如公式(13)所示;
步骤5.1.2.3判断最高有效位平面的位置(1,2),(1,4),(2,2),将他们组合起来形成十进制数mark_sim;
步骤5.1.2.4通过mark_sim判断嵌入信息的层数,在嵌入信息层数中,除去索引信息和参考像素以外的空间,都是嵌入的信息,将其提取出来;
步骤5.1.3辅助信息提取
步骤5.1.3.1提取前12位的交叉线坐标信息;
步骤5.1.3.2提取13-30位的正负属性长度img_water_c_len,并从31位开始提取正负属性辅助信息;
步骤5.1.3.3提取(32+img_water_c_len)-(46+img_water_c_len)位的溢出信息长度img_water_w_len,紧接着提取溢出信息;
步骤5.1.4提取信息中除去辅助信息,取秘密信息长度,再提取秘密信息;
步骤5.1.5将秘密信息使用流密码解密;
步骤5.1.5.1将密钥ke带入到公式(15)中,利用ICMIC映射生成随机序列。
步骤5.1.5.2通过公式(19)将随机序列转换为二进制表示;
步骤5.1.5.3再将二进制随机序列与秘密信息进行按位异或,最后形成解密后的秘密信息;
步骤5.2图像接收者拥有密钥kb
步骤5.2.1根据步骤5.1.3,提取辅助信息;
步骤5.2.2平滑块还原
步骤5.2.2.1确定坐标为{(1,2),(2,4),(3,1),(4,3)}的参考像素{p1,p2,p3,p4};
步骤5.2.2.2将每一个参考像素与周围相邻的三个预处理像素组成一个单元;
步骤5.2.2.3将单元中的三个预处理像素转化为二进制拼接起来,形成24bit的序列;
步骤5.2.2.4识别序列的第一位数,如果是1,表明此单元是差值压缩;
步骤5.2.2.4.1通过哈夫曼压缩替换表,识别序列从第二位开始的三个对应标记{mark_t1,mark_t2,mark_t3},并提取三个标记对应的差值difn;
步骤5.2.2.4.2通过像素点与参考像素的欧几里得距离,计算权重{w1,w2,w3,w4};
步骤5.2.2.4.3根据公式(5),计算每个像素值对应的预测值pr;
步骤5.2.2.4.4从img_water_c中提取正负属性e,如公式(20)所示;
步骤5.2.2.4.5在一个单元内,将e与差值difn相乘,再与预测像素值pr相加,最后得到原始像素值p′n,如公式(21)所示。
p′n=e×difn+pr n=1,2,3 (21)
步骤5.2.2.5识别序列的第一位数,如果是0,表明此单元是位平面压缩;
步骤5.2.2.5.1通过序列的第二至四位,转化为十进制mark_p;
步骤5.2.2.5.2如果mark_p等于0,则从第五位开始,每次取长度为8二进制数,分别赋值到{num_p1,num_p2},剩余序列赋值到num_p3;
步骤5.2.2.5.3如果是以坐标(1,2)为参考像素的单元,便从辅助信息img_water_w中提取5位,反之从辅助信息img_water_w中提取4位补充到num_p3后;
步骤5.2.2.5.4如果mark_p等于1,则从第五位开始,每次取长度为7二进制数,分别赋值到{num_p1,num_p2},剩余序列赋值到num_p3;
步骤5.2.2.5.5如果是以坐标(1,2)为参考像素的单元,便从辅助信息img_water_w中提取1位,反之从辅助信息img_water_w中提取2位补充到num_p3后;
步骤5.2.2.5.6将参考像素第一位分别赋值到num_pn的头部;
步骤5.2.2.5.7如果mark_p大于1,则从第五位开始,每次取长度为(8-mark_p)二进制数,分别赋值到{num_p1,num_p2},剩余序列赋值到num_p3;
步骤5.2.2.5.8将参考像素前mark_p位分别赋值到num_pn的头部;
步骤5.2.2.5.9将num_pn转换成十进制,形成原始像素值p′n;
步骤5.2.3纹理块还原
步骤5.2.3.1确定坐标为{(1,2),(2,4),(3,1),(4,3)}的参考像素{p1,p2,p3,p4};
步骤5.2.3.2将辅助信息中两条线坐标提取出,形成line1,line2;
步骤5.2.3.3将纹理块用line1,line2划分为多个区域;
步骤5.2.3.4通过像素点与参考像素的欧几里得距离,计算权重{w1,w2,w3,w4};
步骤5.2.3.5在同一个区域中,如果有多个参考像素,就增加对应参考像素的权重值。如果没有参考像素,就对权重不做改变,最后更新权重为{w1′,w2′,w3′,w4′};
步骤5.2.3.6根据通过公式(11),计算每个像素值对应的预测值pr′;
步骤5.2.3.7纹理块block用8个位平面block_b表示;
步骤5.2.3.8取第一个位平面位置为(1,2),(1,4),(2,2)的数,将他们组合起来与表2进行对比,得出相应的嵌入层数mark_sim;
步骤5.2.3.9将前mark_sim个位平面中,除去参考像素以外的空间,都填充0;
步骤5.2.3.10如果mark_sim为0,提取辅助信息img_water_w前4位,替换掉block_b中第一位平面位置(1,1),(1,2),(1,4),(2,2)的值;
步骤5.2.3.11再将8位平面转换成十进制矩阵block′;
步骤5.2.3.12从辅助信息img_water_c中提取正负属性e,如公式(20);
步骤5.2.3.13通过公式(22),得到原始块block_s;
步骤5.2.4将所有块转换成一维序列;
步骤5.2.5将密钥kb带入到公式(18)中,利用ICMIC映射生成随机序列Z;
步骤5.2.6取随机序列前128*128位,对其排序,得到位置索引序列Zf;
步骤5.2.7将所有还原块转换为一维序列Za,按照位置索引序列进行逆置乱,形成还原后的序列Zb,如公式(23)所示;
Zb(Zf(i))=Za(i)i=1,2,…,128×128 (23)
步骤5.2.8将所有还原块一维序列转换为还原图像;
步骤5.3图像接收者拥有密钥kb和ke
步骤5.3.1按照步骤5.1和步骤5.2,提取秘密信息及还原图像。
Lena图像不同阶段的二维直方图分布和三维直方图分布如图15所示,
不同测试图像中,本发明实施例处理不同图像与相关文献的PSNR和EC值对比如图16所示。
对比结果表明:本发明的待嵌入图像和载密图像的内容不可见性好。根据二维和三维直方图可知,待嵌入图像和载密图像与原始图像相关性低,加密效果好。还原图像与原始图像一致,说明本发明的方法完全可逆。本发明还原图像的图像质量,嵌入容量和其他文献比较都有着一定的优势。
参考文献:
[1]Wang X,Chang C C,Lin C C.Reversible data hiding in encryptedimages with block-based adaptive MSB encoding[J].Information Sciences,2021(8).
[2]Niu Y,Shen S.A novel pixel value ordering reversible data hidingbased on dual-image[J].Multimedia Tools and Applications,2022,81(10):13751-13771.
[3]Chen K,Chang C C.High-capacity Reversible Data Hiding in EncryptedImages Based on Extended Run-Length Coding and Block-based MSB PlaneRearrangement[J].Journal of Visual Communication and Image Representation,2018,58(JAN.):334-344.
[4]Wang Y,Cai Z,He W.High Capacity Reversible Data Hiding inEncrypted Image Based on MSB Prediction[J].IEEE Transactions on Multimedia,2020,PP(99):1-1.
[5]Wang X,Chang C C,Lin C C.Adaptive reversible data hiding schemefor AMBTC compressed images[J].Multimedia Tools and Applications,2020,79(3.4).
[6]Li F,Zhu H,Yu J,et al.Double linear regression prediction basedreversible data hiding in encrypted images[J].Multimedia Tools andApplications,2020:1-19.
[7]Shaji C,Sam I S.Dual encoding approach with sequence folding forreversible data hiding in dual stego images[J].Multimedia Tools andApplications,2021.
[8]Zhou K,Ding Y,Bi W.High-capacity PVO-based reversible data hidingscheme using changeable step size[J].Multimedia Tools and Applications,2021,80(1):1123-1141.
[9]Chen Y Q,Sun W J,Li L Y,et al.An efficient general data hidingscheme based on image interpolation[J].Journal of Information Security andApplications,2020,54(3.4):102584.
[10]Zhang T,Qi W,Guo Z.Reversible data hiding using multiplehistogram modification and dynamic programming[J].IEEE Transactions onInformation Forensics and Security,2020,PP(99):1-1.
[11]Liu Z,Pun C M.Reversible Data Hiding in Encrypted Images usingChunk Encryption and Redundancy Matrix Representation[J].IEEE Transactions onDependable and Secure Computing,2020,PP(99):1-1.
Claims (2)
1.一种基于自适应预测编码的加密图像可逆信息隐藏方法,依次按照如下步骤进行:
步骤1.将图像按照纹理度划分为平滑块和纹理块;
步骤2.对平滑块根据不同的预测误差进行像素差值压缩或像素位平面压缩;
步骤3.对纹理块进行优化自适应权重预测的块级压缩;
步骤4.分别对平滑快和纹理块进行信息嵌入,再将嵌入后的块还原形成载密块,最后将所有载密块组合形成载密图像;
步骤5.使用拥有的密钥进行图像恢复或/和信息提取。
2.根据权利要求1所述的自适应预测编码的加密图像可逆信息隐藏方法,其特征在于:
所述步骤1具体如下:
步骤1.1将图像img_origin分为4*4的块;
步骤1.2计算图像img_origin子块纹理度:
步骤1.2.1依据公式(1)计算子块能量值:
其中g代表的是灰度共生矩阵,d,θ是两个灰度之间的距离和方向,k表示子块的大小;
步骤1.2.2依据公式(2)计算子块的熵;
步骤1.2.3依据公式(3)计算子块对比度;
步骤1.2.4通过均方误差给所有子块的能量、熵和对比度三个特征值分配不同权重,并计算最终特征值J、H、D;
步骤1.2.5对三个最终特征参数分配权值w1,w2,w3,计算纹理复杂度f,其中w1,w2,w3由全局优化算法确定;
f=w1×J+w2×H+w3×D (4)
步骤1.3用矩阵map_block存储每个块的分类信息,纹理块为1,平滑块为0;
所述步骤2具体如下:
步骤2.1确定坐标为{(1,2),(2,4),(3,1),(4,3)}的像素为参考像素{p1,p2,p3,p4};
步骤2.2通过每个预处理像素点与参考像素的欧几里得距离计算权重{w1,w2,w3,w4};
步骤2.3根据公式(5),计算每个像素值对应的预测值pr;
步骤2.4将每一个参考像素与周围相邻的三个预处理像素组成一个单元;
步骤2.5在一个单元内,如公式(6-7)将预处理像素值p和对应位置的预测像素值pr相减,得到的差值的绝对值dif_a,设置标志位mark_s,如果三个dif_a都小于8,那么mark_s为1,否则为0;
dif_a(i,j)=|p(i,j)-pr(i,j)| (6)
步骤2.6如果mark_s为1,则进行像素差值压缩法,如果mark_s为0,则进行像素位平面压缩法;
所述像素差值压缩法按照如下步骤进行:
步骤2.6.1.1根据单元内三个预处理像素的差值绝对值dif_a按照公式(8)计算对应的正负属性dif_t;
步骤2.6.1.2通过哈夫曼编码,经过优化,根据所有mark_s为1的单元的差值数量统计,按频次从高到低的顺序,依次用01-00011来代替,形成哈夫曼压缩替换表;
步骤2.6.1.3创建一个24bit的空序列;
步骤2.6.1.4序列的第一位表示平滑块中的压缩类型,像素差值压缩法填充为1;
步骤2.6.1.5查找预处理像素差值dif_a与哈夫曼压缩替换表所对应的标签,将标签依次填充到序列第一位之后;
步骤2.6.1.6序列的剩余部分为压缩后的可嵌入空间;
步骤2.6.1.7预处理像素的正负属性dif_t当作辅助信息img_water_c进行存储;
所述像素位平面压缩法按照如下步骤进行:
步骤2.6.2.1将单元内四个像素ph用8位二进制表示,如公式(9):
步骤2.6.2.2将四个像素从最高有效位MSB到最低有效位LSB进行对比,寻找相同的位数,用sim_num表示不同位数的数量;
步骤2.6.2.3创建一个24bit的空序列;
步骤2.6.2.4序列的第一位表示平滑块中的压缩类型,像素位平面压缩法填充为0;
步骤2.6.2.5将sim_num用3位二进制数表示,填充到序列的第二位到第四位;
步骤2.6.2.6将三个预处理像素的不相同位,如公式(10),依次填充到序列的第四位之后;
dif_ph={ph,t|t=sim_num,…,8} (10)
步骤2.6.2.7序列的剩余部分为压缩后的可嵌入空间;
步骤2.6.2.8将溢出的数据当作辅助信息img_water_w进行存储;
步骤2.6.3在以坐标(1,2)为参考像素的单元中,24bit序列第一位存放的是块类型标记,平滑块标记为0,纹理块标记为1;
步骤2.7将24bit的序列三等分,转化为十进制后,分配给单元中的三个预处理像素;
步骤2.8最终将四个单元拼合后,组成可嵌入块;
所述步骤3具体如下:
步骤3.1画一条从上到下和一条从左到右的线;
步骤3.2通过两条线将块划分为n个区域,计算每个区域中的均方差,再求和得到msen;
步骤3.3将所有块的msen求和得到mse_all;
步骤3.4重复步骤3.1-3.3,通过划定不同的两条线,可以得到多个不同的mse_all;
步骤3.5从众多mse_all中选取最小值,并将对应的两条线line1,line2的坐标当作辅助信息img_water_l存储;
步骤3.6用line1,line2将纹理块划分为多个区域;
步骤3.7确定坐标为{(1,2),(2,4),(3,1),(4,3)}的像素为参考像素{p1,p2,p3,p4};
步骤3.8通过像素点与参考像素的欧几里得距离,计算权重{w1,w2,w3,w4};
步骤3.9在同一个区域中,如果有多个参考像素,就增加对应参考像素的权重值,如果没有参考像素,就对权重不做改变,最后更新权重为{w1′,w2′,w3′,w4′};
步骤3.10根据公式(11),计算每个像素值对应的预测值pr′;
步骤3.11将预处理像素值和预测像素值做差,存储到矩阵block中,参考像素值不变,存储到对应位置,如公式(12);
步骤3.12把矩阵block用8个位平面block_b表示,如公式(13)所示;
步骤3.13在最高有效位MSB的位平面中,从左至右,从上到下,填充索引信息;
步骤3.13.1位置(1,1)表示块类型标记,纹理块标记为1;
步骤3.13.2位置(1,2),(1,4),(2,2)表示嵌入层数,通过判断block_b的每一个为平面,除参考像素位置和索引信息位置外,是否都为0,用sim_layer表示都为0的位平面个数,即可嵌入层数;
步骤3.13.3创建一个块可嵌层数替换表;
步骤3.13.4根据块可嵌层数替换表,寻找sim_layer对应的标记,并填充至位置(1,2),(1,4),(2,2);
步骤3.13.5在可嵌入层数中,剩余空间为可嵌入空间;
步骤3.14通过公式(14),将像素值做差后的正负属性dif_t′当作辅助信息img_water_c存储起来;
步骤3.15当可嵌入层数为0时,将原位置(1,1),(1,2),(1,4),(2,2)的数当作辅助信息img_water_w存储起来;
步骤3.16将8个位平面转化为用十进制表示的可嵌入块;
步骤3.17图像块间置乱;
3.17.1令Z1=para_1,a=para_2,利用ICMIC映射如公式(15)生成随机序列Z,para_1和para_2作为密钥kb保存;
步骤3.17.2取随机序列前128*128位,对其排序,得到位置索引序列Zf;
步骤3.17.3将所有可嵌入块转换为一维序列Zb,按照位置索引序列进行位置置乱,形成置乱后的序列Za,如公式(16)所示;
Za(Zf(i))=Zb(i) i=1,2,…,128×128 (16)
步骤3.18将所有可嵌入块一维序列转换为可嵌入图像;
所述步骤4具体如下:
步骤4.1用18位二进制数img_water_c_len表示辅助信息img_water_c的长度,用15位二进制数img_water_w_len表示辅助信息img_water_w的长度;
步骤4.2将可嵌入图像划分为4*4的块;
步骤4.3识别块中左上角的像素最高有效位,如果为1,此块为纹理块,反之为平滑块;
步骤4.4平滑块嵌入
步骤4.4.1确定坐标为{(1,2),(2,4),(3,1),(4,3)}的参考像素{p1,p2,p3,p4};
步骤4.4.2将每一个参考像素与周围相邻的三个预处理像素组成一个单元;
步骤4.4.3将单元中的三个预处理像素转化为二进制拼接起来,形成24bit的序列;
步骤4.4.4识别序列的第一位数,如果是1,表明此单元是差值压缩;
步骤4.4.4.1通过哈夫曼压缩替换表,识别序列从第二位开始的三个对应标记,计算三位标记的总位数num_mark;
步骤4.4.4.2通过公式(17)计算,序列的剩余空间长度re_d_len为待嵌入空间;
re_d_len=24-1-num_mark (17)
步骤4.4.5序列的第一位数,如果是0,表明此单元是位平面压缩;
步骤4.4.5.1通过序列的第二至四位,转化为十进制mark_p;
步骤4.4.5.2通过公式(18)计算,序列的剩余空间长度re_p_len,如果re_p_len小于0,那么表示不可嵌入,反之为待嵌入空间;
re_p_len=24-1-3-(8-mark_p)*3 (18)
步骤4.5纹理块嵌入
步骤4.5.1确定坐标为{(1,2),(2,4),(3,1),(4,3)}的参考像素{p1,p2,p3,p4};
步骤4.5.2纹理块block用8个位平面block_b表示,如公式(13)所示;
步骤4.5.3判断最高有效位平面的位置(1,2),(1,4),(2,2),将他们组合起来形成十进制数mark_sim;
步骤4.5.4通过mark_sim判断可嵌入的层数,在可嵌入层数中,除去索引信息和参考像素以外的空间,作为待嵌入空间;
步骤4.6将辅助信息的长度嵌入到待嵌入空间中,之后再将辅助信息嵌入;
步骤4.7辅助信息嵌入完成后,将图像块还原,形成可嵌入秘密信息块;
步骤4.8图像隐藏者按照步骤4.1-步骤4.5,得到待嵌入空间;
步骤4.9获取18位和15位的辅助信息长度;
步骤4.10将秘密信息使用流密码加密;
步骤4.10.1令Z0=para_3,a=para_4,利用ICMIC映射如公式(15)生成随机序列,para_3和para_4作为密钥ke保存;
步骤4.10.2生成的随机序列为小数,通过公式(19)将随机序列转换为二进制表示;
步骤4.10.3再将二进制随机序列与秘密信息进行按位异或,最后形成加密后的秘密信息;
步骤4.11计算秘密信息的长度,将其添加到秘密信息的头部;
步骤4.12嵌入秘密信息,计算此时待嵌入空间索引位置是否超过了辅助信息长度,如果超过,则进行嵌入,否则跳过;
步骤4.13将嵌入后的块还原,形成载密块;
步骤4.14将所有载密块组合,形成载密图像;
所述步骤5具体如下:
步骤5.1图像接收者拥有密钥ke
步骤5.1.1平滑块提取信息
步骤5.1.1.1确定坐标为{(1,2),(2,4),(3,1),(4,3)}的参考像素{p1,p2,p3,p4};
步骤5.1.1.2将每一个参考像素与周围相邻的三个预处理像素组成一个单元;
步骤5.1.1.3将单元中的三个预处理像素转化为二进制拼接起来,形成24bit的序列;
步骤5.1.1.4识别序列的第一位数,如果是1,表明此单元是差值压缩;
步骤5.1.1.4.1通过哈夫曼压缩替换表,识别序列从第二位开始的三个对应标记,计算三位标记的总位数num_mark;
步骤5.1.1.4.2通过公式(17)计算,提取长度为re_d_len的序列剩余空间信息;
步骤5.1.1.5序列的第一位数,如果是0,表明此单元是位平面压缩;
步骤5.1.1.5.1通过序列的第二至四位,转化为十进制mark_p;
步骤5.1.1.5.2通过公式(18)计算,取长度为re_p_len的序列剩余空间信息,如果re_p_len小于0,则跳过,反之提取嵌入信息;
步骤5.1.2纹理块提取信息
步骤5.1.2.1确定坐标为{(1,2),(2,4),(3,1),(4,3)}的参考像素{p1,p2,p3,p4};
步骤5.1.2.2纹理块block用8个位平面block_b表示,如公式(13)所示;
步骤5.1.2.3判断最高有效位平面的位置(1,2),(1,4),(2,2),将他们组合起来形成十进制数mark_sim;
步骤5.1.2.4通过mark_sim判断嵌入信息的层数,在嵌入信息层数中,除去索引信息和参考像素以外的空间,都是嵌入的信息,将其提取出来;
步骤5.1.3辅助信息提取
步骤5.1.3.1提取前12位的交叉线坐标信息;
步骤5.1.3.2提取13-30位的正负属性长度img_water_c_len,并从31位开始提取正负属性辅助信息;
步骤5.1.3.3提取(32+img_water_c_len)-(46+img_water_c_len)位的溢出信息长度img_water_w_len,紧接着提取溢出信息;
步骤5.1.4提取信息中除去辅助信息,取秘密信息长度,再提取秘密信息;
步骤5.1.5将秘密信息使用流密码解密;
步骤5.1.5.1将密钥ke带入到公式(15)中,利用ICMIC映射生成随机序列。
步骤5.1.5.2通过公式(19)将随机序列转换为二进制表示;
步骤5.1.5.3再将二进制随机序列与秘密信息进行按位异或,最后形成解密后的秘密信息;
步骤5.2图像接收者拥有密钥kb
步骤5.2.1根据步骤5.1.3,提取辅助信息;
步骤5.2.2平滑块还原
步骤5.2.2.1确定坐标为{(1,2),(2,4),(3,1),(4,3)}的参考像素{p1,p2,p3,p4};
步骤5.2.2.2将每一个参考像素与周围相邻的三个预处理像素组成一个单元;
步骤5.2.2.3将单元中的三个预处理像素转化为二进制拼接起来,形成24bit的序列;
步骤5.2.2.4识别序列的第一位数,如果是1,表明此单元是差值压缩;
步骤5.2.2.4.1通过哈夫曼压缩替换表,识别序列从第二位开始的三个对应标记{mark_t1,mark_t2,mark_t3},并提取三个标记对应的差值difn;
步骤5.2.2.4.2通过像素点与参考像素的欧几里得距离,计算权重{w1,w2,w3,w4};
步骤5.2.2.4.3根据公式(5),计算每个像素值对应的预测值pr;
步骤5.2.2.4.4从img_water_c中提取正负属性e,如公式(20)所示;
步骤5.2.2.4.5在一个单元内,将e与差值difn相乘,再与预测像素值pr相加,最后得到原始像素值p′n,如公式(21)所示。
p′n=e×difn+pr n=1,2,3 (21)
步骤5.2.2.5识别序列的第一位数,如果是0,表明此单元是位平面压缩;
步骤5.2.2.5.1通过序列的第二至四位,转化为十进制mark_p;
步骤5.2.2.5.2如果mark_p等于0,则从第五位开始,每次取长度为8二进制数,分别赋值到{num_p1,num_p2},剩余序列赋值到num_p3;
步骤5.2.2.5.3如果是以坐标(1,2)为参考像素的单元,便从辅助信息img_water_w中提取5位,反之从辅助信息img_water_w中提取4位补充到num_p3后;
步骤5.2.2.5.4如果mark_p等于1,则从第五位开始,每次取长度为7二进制数,分别赋值到{num_p1,num_p2},剩余序列赋值到num_p3;
步骤5.2.2.5.5如果是以坐标(1,2)为参考像素的单元,便从辅助信息img_water_w中提取1位,反之从辅助信息img_water_w中提取2位补充到num_p3后;
步骤5.2.2.5.6将参考像素第一位分别赋值到num_pn的头部;
步骤5.2.2.5.7如果mark_p大于1,则从第五位开始,每次取长度为(8-mark_p)二进制数,分别赋值到{num_p1,num_p2},剩余序列赋值到num_p3;
步骤5.2.2.5.8将参考像素前mark_p位分别赋值到num_pn的头部;
步骤5.2.2.5.9将num_pn转换成十进制,形成原始像素值p′n;
步骤5.2.3纹理块还原
步骤5.2.3.1确定坐标为{(1,2),(2,4),(3,1),(4,3)}的参考像素{p1,p2,p3,p4};
步骤5.2.3.2将辅助信息中两条线坐标提取出,形成line1,line2;
步骤5.2.3.3将纹理块用line1,line2划分为多个区域;
步骤5.2.3.4通过像素点与参考像素的欧几里得距离,计算权重{w1,w2,w3,w4};
步骤5.2.3.5在同一个区域中,如果有多个参考像素,就增加对应参考像素的权重值。如果没有参考像素,就对权重不做改变,最后更新权重为{w1′,w2′,w3′,w4′};
步骤5.2.3.6根据通过公式(11),计算每个像素值对应的预测值pr′;
步骤5.2.3.7纹理块block用8个位平面block_b表示;
步骤5.2.3.8取第一个位平面位置为(1,2),(1,4),(2,2)的数,将他们组合起来与表2进行对比,得出相应的嵌入层数mark_sim;
步骤5.2.3.9将前mark_sim个位平面中,除去参考像素以外的空间,都填充0;
步骤5.2.3.10如果mark_sim为0,提取辅助信息img_water_w前4位,替换掉block_b中第一位平面位置(1,1),(1,2),(1,4),(2,2)的值;
步骤5.2.3.11再将8位平面转换成十进制矩阵block′;
步骤5.2.3.12从辅助信息img_water_c中提取正负属性e,如公式(20);
步骤5.2.3.13通过公式(22),得到原始块block_s;
步骤5.2.4将所有块转换成一维序列;
步骤5.2.5将密钥kb带入到公式(18)中,利用ICMIC映射生成随机序列Z;
步骤5.2.6取随机序列前128*128位,对其排序,得到位置索引序列Zf;
步骤5.2.7将所有还原块转换为一维序列Za,按照位置索引序列进行逆置乱,形成还原后的序列Zb,如公式(23)所示;
Zb(Zf(i))=Za(i) i=1,2,…,128×128 (23)
步骤5.2.8将所有还原块一维序列转换为还原图像;
步骤5.3图像接收者拥有密钥kb和ke
步骤5.3.1按照步骤5.1和步骤5.2,提取秘密信息及还原图像。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211410817.7A CN115766963A (zh) | 2022-11-11 | 2022-11-11 | 一种基于自适应预测编码的加密图像可逆信息隐藏方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211410817.7A CN115766963A (zh) | 2022-11-11 | 2022-11-11 | 一种基于自适应预测编码的加密图像可逆信息隐藏方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115766963A true CN115766963A (zh) | 2023-03-07 |
Family
ID=85369495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211410817.7A Pending CN115766963A (zh) | 2022-11-11 | 2022-11-11 | 一种基于自适应预测编码的加密图像可逆信息隐藏方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115766963A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117557807A (zh) * | 2024-01-11 | 2024-02-13 | 齐鲁工业大学(山东省科学院) | 基于加权滤波增强的卷积神经网络图像预测方法 |
-
2022
- 2022-11-11 CN CN202211410817.7A patent/CN115766963A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117557807A (zh) * | 2024-01-11 | 2024-02-13 | 齐鲁工业大学(山东省科学院) | 基于加权滤波增强的卷积神经网络图像预测方法 |
CN117557807B (zh) * | 2024-01-11 | 2024-04-02 | 齐鲁工业大学(山东省科学院) | 基于加权滤波增强的卷积神经网络图像预测方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107493405B (zh) | 基于编码压缩的加密图像可逆信息隐藏方法 | |
Yin et al. | Reversible data hiding in encrypted images based on pixel prediction and bit-plane compression | |
Jo et al. | A digital image watermarking scheme based on vector quantisation | |
Yu et al. | New fragile watermarking method for stereo image authentication with localization and recovery | |
CN110290390B (zh) | 基于ambtc的模2运算和汉明码的信息隐藏方法 | |
CN110933438B (zh) | 一种jpeg图像可逆信息隐藏方法 | |
CN110913092B (zh) | 一种加密图像可逆信息隐藏方法 | |
CN112085016A (zh) | 基于roi和iwt医学图像篡改认证及恢复的鲁棒水印方法 | |
Wang et al. | A novel high-performance reversible data hiding scheme using SMVQ and improved locally adaptive coding method | |
Kiani et al. | A multi-purpose digital image watermarking using fractal block coding | |
CN111277831B (zh) | 一种基于分类编码的图像压缩方法及系统 | |
Wu et al. | A reversible data hiding scheme for encrypted images with pixel difference encoding | |
CN115766963A (zh) | 一种基于自适应预测编码的加密图像可逆信息隐藏方法 | |
CN114745475B (zh) | 一种鲁棒的加密图像可逆信息隐藏方法 | |
CN114399419B (zh) | 基于预测误差扩展的可逆图像水印算法 | |
Liu et al. | A fully reversible data hiding scheme in encrypted images based on homomorphic encryption and pixel prediction | |
Xu et al. | A high-capacity reversible data hiding scheme for encrypted images employing vector quantization prediction | |
CN113032813B (zh) | 基于改进的像素局部复杂度计算和多峰嵌入的可逆信息隐藏方法 | |
Su et al. | Reversible data hiding using the dynamic block-partition strategy and pixel-value-ordering | |
CN115379066B (zh) | 基于自适应压缩编码的加密图像可逆数据加密解密方法 | |
CN116743936A (zh) | 一种基于残差网络的密文域多方可逆信息隐藏方法 | |
CN115297218B (zh) | 基于哈夫曼编码规则和位置图压缩的可逆数据隐藏方法 | |
CN111741301A (zh) | 基于ambtc压缩编码的再压缩及信息隐藏方法 | |
CN115118836B (zh) | 基于像素预测的多策略组合的可逆数据隐藏方法 | |
CN115690014A (zh) | 一种基于纹理度交叉嵌入的医学图像篡改检测及自恢复方法 |
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 |