[发明专利]JPEG图像比特流加密域可逆数据隐藏方法有效

专利信息
申请号: 201811040706.5 申请日: 2018-09-06
公开(公告)号: CN109151486B 公开(公告)日: 2020-10-09
发明(设计)人: 陈帆;郑梦阳;和红杰;董梦瑶 申请(专利权)人: 西南交通大学
主分类号: H04N19/88 分类号: H04N19/88;H04N19/91;H04N19/184;H04L9/06
代理公司: 成都博通专利事务所 51208 代理人: 陈树明
地址: 610031 四*** 国省代码: 四川;51
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: jpeg 图像 比特流 加密 可逆 数据 隐藏 方法
【权利要求书】:

1.一种JPEG图像比特流加密域可逆数据隐藏方法,包括如下步骤:

A、JPEG比特流加密:

A1、交流系数置乱:

A1.1、比特流数据读取:

用户读取大小为H×W的JPEG格式的图像X,获得图像X的原始比特流J,J={SOI,JH,ECS1,ECS2,...,ECSn,...,ECSN,EOI},其中:

SOI为图像开始标记符,JH为JPEG头文件,EOI为图像结束标记符;

ECSn为图像中的第n个图像块熵编码,N为图像块熵编码的个数,H为图像X的行数、W为图像X的列数;

ECSn={DCCn,ACCn,1,ACCn,2,...,ACCn,i,...ACCn,I,EOB};DCCn是第n个图像块熵编码的直流系数熵编码,ACCn,i是ECSn中第i个交流系数熵编码,EOB是图像块熵编码结束标记符,I为交流系数熵编码的个数;

A1.2、交流系数解码:

对原始比特流J中的第n个图像块熵编码ECSn中所有的交流系数熵编码ACCn,i,根据JPEG解码标准进行熵解码,得到第n个图像块熵编码ECSn的交流系数Cn,Cn={ACn,1,ACn,2,...,ACn,t,...,ACn,63},其中ACn,t为第n个图像块熵编码ECSn的交流系数Cn中的第t个交流系数,t=1,2,...,63;

A1.3、AC系数分组:

找出第n个图像块熵编码ECSn的交流系数Cn中最后一个非零交流系数,记为ACn,T,其序号为T;用户对第n个图像块熵编码ECSn的交流系数Cn中的前T个交流系数ACn,t依次进行分组:

如果交流系数ACn,t连续为0,则将这些交流系数ACn,t构成一个分组否则,一个交流系数ACn,t独立构成一个分组然后,将这些分组依次拼接,得到第n个图像块熵编码ECSn的系数分组序列Bn,其中r为第n个图像块熵编码ECSn的交流系数分组的序号,Rn为第n个图像块熵编码ECSn的交流系数分组的个数;

A1.4、交流系数分组序列置乱:

在第n个图像块熵编码ECSn的交流系数分组序列Bn中,对前Rn-1个交流系数分序列进行分类,如果交流系数分组中的交流系数全为0,记为交流系数为零的分组否则,记为交流系数非零的分组

将所有的交流系数非零的分组依次拼接,得到交流系数非零的分组序列Bn,1,其中r’为交流系数非零的分组的序号,r1为交流系数非零的分组的个数;

然后,根据加密密钥K1对交流系数非零的分组序列Bn,1进行伪随机置乱生成交流系数非零的置乱分组序列其中,为交流系数非零的置乱分组序列中的第r’个交流系数非零的置乱分组;

将所有的交流系数为零的分组依次拼接,得到交流系数为零的分组序列Bn,0,其中为第r”个交流系数为零的置乱分组,r0为交流系数为零的置乱分组的个数;r0+r1=Rn-1;r0≤r1

然后,根据加密密钥K1对交流系数为零的分组序列Bn,0进行伪随机置乱生成交流系数为零的置乱分组序列

将交流系数为零的置乱分组序列中的交流系数为零的置乱分组与交流系数非零的置乱分组序列中前r0个交流系数非零的置乱分组依次交替拼接,再与置乱交流系数非零的分组序列中后r1-r0个置乱交流系数非零的分组和系数分组序列Bn中最后一个系数分组依次拼接,得到生成置乱交流系数分组序列其中r”’为置乱交流系数分组的序号;

A1.5、置乱交流系数生成:

最后,用户将置乱交流系数分组序列中所有的交流系数与63-T个0,依次拼接,生成伪随机置乱系数并通过下式得到置乱交流系数C′n

A2、系数置乱比特流生成:

对置乱交流系数C′n进行熵编码,得到置乱交流系数熵编码并将第n个图像块熵编码ECSn中直流系数的熵编码DCCn与置乱交流系数熵编码拼接,组成第n个系数置乱熵编码ECS′n

将图像开始标记符SOI,JPEG头文件JH,所有的系数置乱熵编码ECS′n以及图像结束标记符EOI依次拼接,得到系数置乱比特流J′,J′={SOI,JH,ECS′1,ECS′2,...,ECS′N,EOI};

A3、系数置乱熵编码异或加密:

在系数置乱比特流J′的第n个系数置乱熵编码ECS′n中,ECS′n={DCCn,ACC′n,1,ACC′n,2,...ACC′n,l,EOB},直流系数置乱的熵编码DCCn,DCCn=[DCHn,DCAn]由直流系数置乱霍夫曼编码DCHn和直流系数置乱扩展位DCAn组成;交流系数置乱熵编码ACC′n,i,ACC′n,i=[ACH′n,i,ACA′n,i],由交流系数置乱霍夫曼编码ACHn,i和交流系数置乱扩展位ACAn,i组成,i=1,2,...,I;

第n个系数置乱熵编码ECS′n中,提取直流系数置乱熵编码DCCn的扩展位DCAn和所有交流系数置乱熵编码ACC′n,i的扩展位ACA′n,i,组成第n个块扩展位Ln,Ln={DCAn,ACA′n,1,ACA′n,2,...,ACA′n,I};

然后,将所有的块扩展位Ln依次拼接得到比特流扩展位L,L={L1,L2,...,Ln,...LN};用户使用加密密钥K1对比特流扩展位L按位异或加密,生成比特流扩展位密文L′,L′={L′1,L′2,...,L′n,...,L′N};

A4、比特流密文生成:

将第n个系数置乱熵编码ECS′n中的直流系数置乱霍夫曼编码DCHn和第n个块扩展位密文L′n,L′n={DCA′n,ACA″n,1,ACA″n,2,...,ACA″n,i,...ACA″n,l}中的直流系数置乱扩展位密文DCA′n进行拼接,得到第n个系数置乱熵编码ECS′n中直流系数熵编码密文DCC′n,DCC′n=[DCHn,DCA′n];

然后,将系数置乱熵编码ECS′n中的交流系数的霍夫曼编码ACHn,i和块扩展位密文L′n中第i个AC系数的扩展位密文ACA″n,i进行依次重组,得到系数置乱熵编码ECS′n中第i个AC系数熵编码密文ACC″n,i,ACC″n,i=[ACHn,i,ACA″n,i],i=1,2,...,I;

最后,将第n个系数置乱熵编码ECS′n中直流系数熵编码密文DCC′n和I个交流系数熵编码密文ACC″n,i依次拼接,得到第n个图像块熵编码密文ECS″n,ECS″n={DCC′n,ACC″n,1,ACC″n,2,...ACC″n,l,EOB};所有的图像块熵编码密文ECS″n依次拼接组成熵编码密文序列E″,E″={ECS″1,ECS″2,...,ECS″N};

将图像开始标记代码SOI,JPEG头文件JH,熵编码密文序列E″以及图像结束标记代码EOI依次拼接,得到比特流密文J″,J″={SOI,JH,ECS″1,ECS″2,...,ECS″N,EOI};

A5、图像块熵编码密文置乱:

在比特流密文J″中,用户根据加密密钥K1对熵编码密文序列E″中的图像块熵编码密文ECS″n进行伪随机置乱得到初始块置乱熵编码密文序列E*

并将图像开始标记符SOI,JPEG头文件JH,块置乱熵编码密文序列E*以及图像结束标记符EOI依次拼接,得到初始块置乱比特流J*

A6、块置乱比特流生成:

在初始块置乱比特流J*中,将第n个初始块置乱熵编码数据中的直流系数熵编码DCC*n进行熵解码,得到第n个初始块置乱熵编码数据的直流系数Dn

将所有初始块置乱熵编码数据的直流系数Dn依次拼接,得到初始块置乱比特流J*的直流系数序列D,D={D1,D2,...,Dn,...DN};然后,对直流系数序列D进行差分脉冲调制编码,得到差分脉冲调制编码直流系数序列Dc

然后,将差分脉冲调制编码序列Dc中的直流系数进行熵编码,得到初始块置乱直流系数熵编码并替换初始块置乱熵编码数据中的直流系数熵编码DCC*n,得到块置乱熵编码所有的块置乱熵编码依次拼接组成块置乱熵编码序列E1

最后,将图像开始标记代码SOI,JPEG头文件JH,块置乱熵编码序列E1以及图像结束标记代码EOI依次拼接,得到块置乱比特流J1,并上传到云端;

B、信息隐藏:

在上传到云端的块置乱比特流J1中,云端根据直方图平移方法,将额外信息U分段在块置乱熵编码中的交流系数中,从前至后依次进行信息隐藏;分段隐藏额外信息后的块置乱熵编码记为携密图像块熵编码

最后,将图像开始标记代码SOI,JPEG头文件JH,所有的携密图像块熵编码以及图像结束标记代码EOI依次拼接,得到携密比特流Jm

C、信息提取:

在携密比特流Jm中,云端进行B步骤中的直方图平移方法的逆操作,提取出额外信息U,对携密比特流Jm中的交流系数进行恢复,得到置乱比特流J1;最后,云端将置乱比特流J1发送给接收者;

D、JPEG比特流解密:

D1、初始块置乱比特流恢复:

接收者首先在块置乱比特流J1中提取第n个块置乱熵编码中的直流系数熵编码并进行熵解码,得到第n个块置乱熵编码数据的直流系数

然后,将所有的块置乱熵编码的直流系数进行拼接,得到块置乱比特流J1的差分脉冲调制编码直流系数序列Dc

对差分脉冲调制编码直流系数序列Dc进行差分脉冲调制解码,得到初始块置乱比特流J*的直流系数序列D,D={D1,D2,...,Dn,...DN};将第n个初始块置乱熵编码数据的直流系数Dn进行熵编码,得到第n个初始块置乱熵编码数据的直流系数熵编码DCC*n,并替换块置乱熵编码数据中的直流系数熵编码得到初始块置乱熵编码数据将所有的初始块置乱熵编码数据进行拼接,得到初始块置乱熵编码密文序列E*

最后,将图像开始标记符SOI,JPEG头文件JH,初始块置乱熵编码密文序列E*以及图像结束标记符EOI依次拼接,得到初始块置乱比特流J*

D2、置乱恢复比特流密文:

接收者根据加密密钥K1对初始块置乱比特流J*中初始熵编码密文序列E*,进行置乱恢复,得到图像块熵编码密文序列E″,E″={ECS″1,ECS″2,...,ECS″N};

并将图像开始标记符SOI,JPEG头文件JH,图像块熵编码密文序列E″以及图像结束标记符EOI依次拼接,恢复得到比特流密文J″,J″={SOI,JH,ECS″1,ECS″2,...,ECS″N,EOI};

D3、图像块熵编码密文异或解密:

在第n个图像块熵编码密文ECS″n中,将其中的直流系数的扩展位DCA′n和交流系数的扩展位ACA″n,i,组成第n个图像块熵编码密文ECS″n的块扩展位密文L′n;然后,将比特流密文J″中的所有块扩展位密文L′n依次拼接,得到比特流扩展位密文L′,L′={L′1,L′2,...,L′N};

接收者使用加密密钥K1对比特流扩展位密文L′按位异或解密,得到比特流扩展位L;

D4、系数置乱比特流恢复:

将第n个图像块熵编码密文ECS″n的直流系数的霍夫曼编码DCHn和块扩展位Ln中直流系数的扩展位DCAn进行重组,得到第n个图像块熵编码ECS′n中直流系数的熵编码DCCn,DCCn=[DCHn,DCAn];

然后,将第n个图像块熵编码密文ECS″n的交流系数的霍夫曼编码ACHn,i和块扩展位Ln中交流系数的扩展位ACA′n,i进行重组,得到第n个图像块熵编码ECS′n中第i个交流系数的熵编码ACC′n,i,ACC′n,i=[ACHn,i,ACA′n,i],i=1,2,...,I;最后将直流系数的熵编码DCCn和I个交流系数的熵编码ACC′n,i依次拼接,得到图像块熵编码ECS′n

最后,将图像开始标记代码SOI,JPEG头文件JH,所有的图像块熵编码ECS′n以及图像结束标记代码EOI依次拼接,得到系数置乱比特流J′,J′={SOI,JH,ECS′1,ECS′2,...,ECS′N,EOI};

D5、交流系数置乱恢复:

将系数置乱比特流J′,J′={SOI,JH,ECS′1,ECS′2,...,ECS′N,EOI}替换为原始比特流J,J={SOI,JH,ECS1,ECS2,...,ECSn,...,ECSN,EOI},将替换后的原始比特流J进行A1.2步骤至A1.5步骤的操作得到第n个置乱交流系数C′n,最后,将第n个置乱交流系数C′n替换为第n个图像块熵编码ECSn的交流系数Cn

D6、原始比特流恢复:

将D5步骤得到的第n个图像块熵编码ECSn的交流系数Cn进行霍夫曼编码,得到第n个图像块熵编码ECSn中交流系数的原始编码并与第n个图像块熵编码ECSn中直流系数的熵编码DCCn组成原始图像块熵编码ECSn

将图像开始标记符SOI,JPEG头文件JH,所有的原始图像块熵编码ECSn以及图像结束标记符EOI依次拼接,得到原始比特流J,J={SOI,JH,ECS1,ECS2,…,ECSN,EOI}。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西南交通大学,未经西南交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201811040706.5/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top