一种数字图像压缩加密联合编码方法
【专利摘要】本发明一种数字图像压缩加密联合编码方法,属于图像加密【技术领域】,本方法基于目前应用最为广泛的JPEG压缩编码标准实现,在编码过程中融入了基于混沌的加密算法;根据JPEG标准对DC系数和AC系数分开进行编码的特点,对图像的DC系数和AC系数分别进行加密;为兼顾安全性与压缩效率,本方法对全部DC及部分AC系数进行加密,将所有DCT块中相同位置的系数组成不同的分组,在组内进行置乱和扩散,以最大可能降低加密过程对差分编码及行程编码的破坏;置乱和扩散分别基于logistic和Chebyshev混沌映射实现;实验证明,该方法在提供有效的图像数据安全保护的同时,具有较好的数据压缩能力。
【专利说明】一种数字图像压缩加密联合编码方法
【技术领域】
[0001] 本发明属于图像加密【技术领域】,具体涉及一种数字图像压缩加密联合编码方法。
【背景技术】
[0002] 近年来,随着多媒体与计算机网络技术的飞速发展,数字图像作为最直观的信息 载体已成为人们进行信息交流的重要手段,越来越多的数字图像在以Internet、无线网络 等为代表的开放性网络中传播,极大的方便了信息的访问与共享;与此同时,商业、金融、医 疗、科研、军事、政治等诸多敏感领域的图像信息在开放网络环境下的传输存在着巨大的安 全隐患,经常会遭到各种人为的攻击,包括信息的非法窃取、篡改与发布等,给信息拥有者 造成巨大的损失。
[0003] 与普通文字信息相比,数字图像具有容量大、冗余度高、可理解性好等特点。现代 密码学中典型的加密算法,如Triple-DES (三重-数据加密标准)、AES (高级加密标准)、 IDEA(国际数据加密算法)等,可以应用于图像加密,但其并未考虑到图像信息的固有特 点,因此并不适合于图像加密。尤其近年来随着宽带网络应用的普及,传统算法在加密速度 上越来越不能满足日益增长的图像实时安全传输的需求。
[0004] 基于以上背景,近年来图像加密技术得到了广泛深入的研究,已成为密码学的一 个热点研究分支;在国内外学者提出的众多方法中,基于混沌动力学的加密方法,得到了广 泛的关注。自上世纪90年代中期以来,很多学者发现混沌学与密码学之间存在着天然的联 系;混沌系统具有的初值与系统参数极端敏感性、遍历性、轨道不可预测性以及良好的伪随 机性等一系列特性,使其能够很好的满足构建一个安全性能良好的密码系统的需求。基于 混沌动力学构造的加密系统,提供了安全性与加密效率的一个良好的平衡,其既具有很高 的安全性保证,又具有软、硬件实现简单,速度较快的特点,特别适合于对数据量较大的数 字图像进行加密,实现数字图像的实时、安全传输;目前,基于混沌的图像加密方法已成为 图像信息安全的主流技术和研究热点。
[0005] 然而,绝大多数的现有图像加密算法均未考虑到图像压缩的问题;从密码学的角 度来讲,加密后的密文图像像素灰度值应具有良好的随机分布特性,即:密文图像的信息熵 应逼近理想随机信源的信息熵;然而,这一密码学的良好特性却违背了数据压缩的基本准 贝1J ;根据香农(Shannon)信息论的原理,最佳的(无损)数据压缩方法的理论极限是信息 熵;有损压缩则是在人的视觉系统容许范围内,通过丢弃一些信息,即突破信息熵的限制, 以得到更大的压缩率;由于加密过程改变了源图像的信息熵,使其逼近理论上的最大值, 因此加密后的图像从统计分析上看已不具备任何冗余特性,从编码角度来看已几乎不能压 缩;这一对矛盾严重制约了图像信息安全技术的发展与应用。
【发明内容】
[0006] 针对现有技术的缺点,本发明提出一种数字图像压缩加密联合编码方法,以达到 解决图像加密后数据无法进行有效压缩的目的。
[0007] -种数字图像压缩加密联合编码方法,包括以下步骤:
[0008] 步骤1、将待压缩加密图像进行色彩空间转换,即由RGB色彩空间转换至YCrCb色 彩空间,获得由多个最小数据单元构成的图像;
[0009] 步骤2、针对于转换后的图像,对其最小数据单元内像素点的亮度和色度进行采 样;
[0010] 步骤3、采用二维离散余弦变换方法对采样后的图像进行变换,即将图像的像素点 由空间域转换至频率域,获得频率域内,图像每个最小数据单元内像素点的亮度和色度;
[0011] 步骤4、根据亮度和色度量化表,对频率域内,图像每个最小数据单元内像素点的 亮度和色度进行量化;
[0012] 即将每个像素点的亮度或色度除以其对应量化步长,并将计算结果进行四舍五入 获得量化后的亮度值或色度值;
[0013] 步骤5、确定量化后每个最小数据单元的亮度直流分量和色度直流分量,并对其进 行加密,具体步骤如下:
[0014] 步骤5-1、按照最小数据单元的先后顺序,将每个最小数据单元的亮度直流分量构 成一个序列;
[0015] 步骤5-2、根据logistic混沌映射对亮度直流分量构成的序列进行置乱,具体如 下:
[0016] 步骤5-2-1、用户根据实际需求设置logistic混沌映射的置乱密钥和控制参数;
[0017] xn+1 = rxn(l-xn) (1)
[0018] 其中,xn+1表示n+1次迭代中的logistic映射状态变量;r表示logistic映射的 控制参数,re (3. 56995,4] ;xn表示η次迭代中的logistic映射状态变量;xne [0,l],Xn 的初始值作为亮度直流分量的系数置乱密钥,由用户根据实际需求设定;
[0019] 步骤5-2-2、预迭代logistic映射Ν。次,Ν。彡200,使映射充分进入混沌状态;
[0020] 步骤5-2-3、在步骤5-2-2的基础上继续迭代logistic映射,获得伪随机位置坐 标;
[0021] positionobJ = mod [floor (xnX 1014), (lengthXwidth/N2-positioncurr+l) ]+posit ioncurr (2)
[0022] 其中,position。^为当前操作的亮度直流分量在序列中的位置;position^.为交 换目标亮度直流分量在序列中的位置,即伪随机位置坐标;floor(x nX1014)函数返回距离 xnX 1014最近的整数值;length表示图像的长;width表示图像的宽;xn表示当前状态变 量;N表示最小数据单元的长或宽;mod(X,y)函数表示返回X除以y的余数;
[0023] 步骤5-2-4、将当前操作的亮度直流分量与目标位置的亮度直流分量进行交换;
[0024] 步骤5-2-5、返回步骤5-2-3,直到序列中所有亮度直流分量的位置均交换完成, 即完成亮度直流分量的置乱处理;
[0025] 步骤5-2-6、返回执行步骤5-2-1至步骤5-2-5,完成色度直流分量的置乱处理;
[0026] 步骤5-3、根据Chebyshev映射对置乱后的亮度直流分量构成的序列和置乱后的 色度直流分量构成的序列进行扩散,具体如下:
[0027] 步骤5-3-1、用户根据实际需求设置Chebyshev映射的扩散密钥和控制参数;
[0028] X' n+1 = cos (k · acos (X' n)) (3)
[0029] 其中,k表示Chebyshev映射的控制参数,k彡2 ;acos(.)表示反余弦函数,x' n+1 代表第n+1次迭代Chebyshev映射的状态变量值,X' n代表第η次迭代Chebyshev映射的 状态变量值,f ne[-l,l],x' "的初始值X' J乍为亮度直流分量的系数扩散密钥,由用 户根据实际需求设定;
[0030] 步骤5-3-2、预迭代Chebyshev映射%次,% > 200,使映射充分进入混沌状态;
[0031] 步骤5-3-3、在步骤5-3-2的基础上继续迭代Chebyshev映射,对当前状态变量 V "进行量化,获得密钥流元素;
[0032] kn = mod [floor (X' nX 1014),L] (4)
[0033] 其中,kn表示密钥流元素,L表示图像边长;
[0034] 步骤5-3-4、根据密钥流元素对序列中当前亮度直流分量进行加密,即进行异或操 作;
[0035] DC,n = kn ? DCn ? DC,- (5)
[0036] 其中,DCn表示当前操作的亮度直流分量;DC' "表示加密后的亮度直流分量; DC' n_i为前一次迭代中已加密的亮度直流分量,其初始值DC' ^为整型常量,由用户根据 实际需求设定,其取值范围为[0, L],?表示按位异或操作;
[0037] 步骤5-3-5、返回执行步骤5-3-3,直至序列中所有亮度直流分量均完成加密,即 完成亮度直流分量的扩散操作;
[0038] 步骤5-3-6、返回执行步骤5-3-1至步骤5-3-5完成色度直流分量的扩散操作;
[0039] 步骤6、确定量化后每个最小数据单元的亮度交流分量和色度交流分量,并对其进 行加密,具体步骤如下:
[0040] 步骤6-1、按照Z字排列顺序,将所有最小数据单元中的亮度交流分量提取出,提 取的亮度交流分量个数范围为[4, 20];
[0041] 步骤6-2、将所有最小数据单元提取出的第一个亮度交流分量,按照最小数据单元 的排列顺序,构成一个序列,并按照Z字排列顺序继续构建其他亮度交流分量的序列,直至 提取出的最后一个亮度交流分量,按照最小数据单元的排列顺序,完成构成一个序列,即获 得所有亮度交流分量所构成的多组序列,序列的组数为提取的亮度交流分量个数;
[0042] 步骤6-3、根据步骤5-2,采用logistic混沛映射对第一组亮度交流分量构成的序 列进行置乱;
[0043] 步骤6-4、根据步骤5-3,采用Chebyshev映射对置乱后的第一组亮度交流分量构 成的序列进行扩散;
[0044] 步骤6-5、反复执行步骤6-3至步骤6-4,直至完成所有组亮度交流分量构成的序 列的置乱和扩散处理,即完成对亮度交流分量的加密;
[0045] 步骤6-6、返回执行步骤6-1至步骤6-5,完成对色度交流分量的加密;
[0046] 步骤7、对加密后的亮度直流分量、色度直流分量、亮度交流分量和色度交流分量 进行压缩处理,具体如下:
[0047] 步骤7-1、对加密后的亮度直流分量序列进行差分脉冲编码;
[0048] 步骤7-2、对差分脉冲编码后的亮度直流分量序列进行熵编码;
[0049] 即根据差分脉冲编码后的亮度直流分量的大小,查询DC系数熵编码表,对应获得 该亮度直流分量所属范围,查询其所占的比特位数,并确定该亮度直流分量的二进制码,由 获得的比特位数和二进制码构成该亮度直流分量的熵编码;并反复执行上述内容,直至序 列中所有亮度直流分量均完成熵编码,获得亮度直流分量的熵编码码流;
[0050] 步骤7-3、返回执行步骤7-1至步骤7-2,获得色度直流分量的熵编码码流;
[0051] 步骤7-4、对加密后的所有组亮度交流分量序列进行行程长度编码;
[0052] 即按照Z字排列顺序,提取出的所有最小数据单元中加密后的亮度交流分量,确 定每一个非零亮度交流分量前〇的个数,并根据该非零亮度交流分量值的大小,查询行程 长度编码表,确定非零亮度交流分量的比特位数及其在所属范围内所处位置;确定非零亮 度交流分量前〇的个数与其比特位数的数值组合,确定其所处位置的二进制码,并由上述 两者构成交流分量的行程长度编码;
[0053] 步骤7-5、对获得的所有组行程长度编码进行熵编码;
[0054] 即根据非零亮度交流分量前0的个数与其比特位数的数值组合,查询AC系数熵编 码表,确定其对应码字,并由该码字和非零交流分量所处位置的二进制码构成熵编码,进而 获得每组亮度交流分量序列的熵编码流;
[0055] 步骤7-6、返回执行步骤7-4至步骤7-5,获得每组色度交流分量序列的熵编码 流;
[0056] 步骤7-7、完成对加密后的亮度直流分量、色度直流分量、亮度交流分量和色度交 流分量的压缩处理;
[0057] 步骤8、根据获得的直流分量序列熵编码码流和所有组交流分量序列熵编码码流, 将压缩加密后的图像保存为JPEG格式,即完成图像的压缩加密处理。
[0058] 步骤2所述的采样方式包括:以1 : 1 : 1采样频率的方式,对图像的每个最小数 据单元的亮度和色度进行采样;或以4 : 2 : 2或4 : 1 : 1采样频率的方式,对图像的指 定最小数据单元的亮度和色度进行采样。
[0059] 步骤7-4所述的数值组合为:R/S,其中,R表示非零亮度交流分量前0的个数;S表 示非零亮度交流分量的比特位数。
[0060] 本发明优点:
[0061] (1)本发明方法将图像的压缩编码与加密有机融合在一起,解决了传统意义上加 密后数据无法进行有效压缩的问题;在提供有效的图像数据安全保护的同时,具有较好的 数据压缩能力;
[0062] (2)编码后文件仍符合JPEG国际标准,可通过任何常见的图像浏览器进行查看;
[0063] (3)密钥空间大于经典的分组加密算法,包括DES,AES及IDEA。
【专利附图】
【附图说明】
[0064] 图1为本发明一种实施例的数字图像压缩加密联合编码架构图;
[0065] 图2字本发明一种实施例的数字图像压缩加密联合编码方法流程图;
[0066] 图3为本发明一种实施例的24位待压缩加密彩色图像;
[0067] 图4为本发明一种实施例的YCrCb4 : 2 : 2采样示意图;
[0068] 图5为本发明一种实施例的最小数据单元的直流分量位置示意图;
[0069] 图6为本发明一种实施例的直流分量加密架构示意图;
[0070] 图7为本发明一种实施例的参与加密操作的AC系数示意图;
[0071] 图8为本发明一种实施例的AC系数加密架构示意图;
[0072] 图9为本发明一种实施例的JPEG标准文件格式示意图;
[0073] 图10为本发明一种实施例的加密效果测试图,其中,图(a)为图像原图;图(b)为 JPEG编码压缩后的效果图;图(c)为压缩加密联合编码效果图。
【具体实施方式】
[0074] 下面结合附图对本发明一种实施例做进一步说明。
[0075] 本发明实施例中,数字图像压缩加密联合编码架构如图1所示,本发明基于目前 应用最为广泛的JPEG压缩编码标准实现,在编码过程中融入基于混沌的加密算法;由图1 可见,源图像经过色彩空间转换与采样后,分成8X8的数据块(最小数据单元);对每个数 据块内的数据进行离散余弦变换(DCT)与量化;量化后的数据分为直流(DC)系数和交流 (AC)系数;根据两种系数的不同特点,本发明分别对DC(直流分量)和AC(交流分量)系 数独立进行加密,以期达到较好加密效果的同时,能够尽量减小对压缩效果的影响;本发明 对两类系数的加密均采用混沌密码学中经典的"置乱-扩散"架构进行加密;加密后的DC 系数和AC系数分别进行差分脉冲编码和行程长度编码,之后送入熵编码器进行霍夫曼编 码,以最大限度的去除数据冗余;最后,按JPEG标准规范,构建文件头并写入量化表、熵编 码表、熵编码器输出的数据以及文件中必要的格式控制信息,形成最终的压缩加密联合编 码文件。
[0076] -种数字图像压缩加密联合编码方法,方法流程图如图2所示,包括以下步骤:
[0077] 步骤1、将待压缩加密图像进行色彩空间转换,即由RGB色彩空间转换至YCrCb色 彩空间,获得由多个最小数据单元构成的图像;
[0078] 如图3所示,本发明实施例中对一个大小为256X256的24位真彩图像实施压缩 加密;
[0079] 转换公式为:
[0080]
【权利要求】
1. 一种数字图像压缩加密联合编码方法,其特征在于,包括以下步骤: 步骤1、将待压缩加密图像进行色彩空间转换,即由RGB色彩空间转换至YCrCb色彩空 间,获得由多个最小数据单元构成的图像; 步骤2、针对于转换后的图像,对其最小数据单元内像素点的亮度和色度进行采样; 步骤3、采用二维离散余弦变换方法对采样后的图像进行变换,即将图像的像素点由空 间域转换至频率域,获得频率域内,图像每个最小数据单元内像素点的亮度和色度; 步骤4、根据亮度和色度量化表,对频率域内,图像每个最小数据单元内像素点的亮度 和色度进行量化; 即将每个像素点的亮度或色度除以其对应量化步长,并将计算结果进行四舍五入获得 量化后的亮度值或色度值; 步骤5、确定量化后每个最小数据单元的亮度直流分量和色度直流分量,并对其进行加 密,具体步骤如下: 步骤5-1、按照最小数据单元的先后顺序,将每个最小数据单元的亮度直流分量构成一 个序列; 步骤5-2、根据logistic混沌映射对亮度直流分量构成的序列进行置乱,具体如下: 步骤5-2-1、用户根据实际需求设置logistic混沌映射的置乱密钥和控制参数; xn+i = rxn (l_xn) (1) 其中,xn+1表示n+1次迭代中的logistic映射状态变量;r表示logistic映射的控制 参数,re (3. 56995,4] ;xn表示η次迭代中的logistic映射状态变量;xne [〇,1],\的 初始值作为亮度直流分量的系数置乱密钥,由用户根据实际需求设定; 步骤5-2-2、预迭代logistic映射队次,队彡200,使映射充分进入混沌状态; 步骤5-2-3、在步骤5-2-2的基础上继续迭代logistic映射,获得伪随机位置坐标; positionobJ = mod [floor (xnX 1014), (lengthX wi dth/N2-posit ioncurr+l) ] +positionc (2) urr \ 其中,position。^为当前操作的亮度直流分量在序列中的位置;position^为交换 目标亮度直流分量在序列中的位置,即伪随机位置坐标;fl〇〇r(xnX1014)函数返回距离 xnX1014最近的整数值;length表示图像的长;width表示图像的宽;xn表示当前状态变量; N表示最小数据单元的长或宽;mod(X,y)函数表示返回X除以y的余数; 步骤5-2-4、将当前操作的亮度直流分量与目标位置的亮度直流分量进行交换; 步骤5-2-5、返回步骤5-2-3,直到序列中所有亮度直流分量的位置均交换完成,即完 成亮度直流分量的置乱处理; 步骤5-2-6、返回执行步骤5-2-1至步骤5-2-5,完成色度直流分量的置乱处理; 步骤5-3、根据Chebyshev映射对置乱后的亮度直流分量构成的序列和置乱后的色度 直流分量构成的序列进行扩散,具体如下: 步骤5-3-1、用户根据实际需求设置Chebyshev映射的扩散密钥和控制参数; X' n+1 = cos(k · acos(x/n)) (3) 其中,k表示Chebyshev映射的控制参数,k > 2 ;acos(.)表示反余弦函数,X' n+1代 表第n+1次迭代Chebyshev映射的状态变量值,X' n代表第η次迭代Chebyshev映射的状 态变量值,f ne[-l,l],x' "的初始值X' J乍为亮度直流分量的系数扩散密钥,由用户 根据实际需求设定; 步骤5-3-2、预迭代Chebyshev映射N。次,N。> 200,使映射充分进入混沌状态; 步骤5-3-3、在步骤5-3-2的基础上继续迭代Chebyshev映射,对当前状态变量V "进 行量化,获得密钥流元素; kn = mod [floor (X' nX 1014),L] (4) 其中,kn表示密钥流元素,L表示图像边长; 步骤5-3-4、根据密钥流元素对序列中当前亮度直流分量进行加密,即进行异或操作; DC,n = kn ? DCn ? DC,- (5) 其中,DCn表示当前操作的亮度直流分量;DC' "表示加密后的亮度直流分量;DC' n_i 为前一次迭代中已加密的亮度直流分量,其初始值DC' ^为整型常量,由用户根据实际需求 设定,其取值范围为[〇, L],?表示按位异或操作; 步骤5-3-5、返回执行步骤5-3-3,直至序列中所有亮度直流分量均完成加密,即完成 亮度直流分量的扩散操作; 步骤5-3-6、返回执行步骤5-3-1至步骤5-3-5完成色度直流分量的扩散操作; 步骤6、确定量化后每个最小数据单元的亮度交流分量和色度交流分量,并对其进行加 密,具体步骤如下: 步骤6-1、按照Z字排列顺序,将所有最小数据单元中的亮度交流分量提取出,提取的 亮度交流分量个数范围为[4, 20]; 步骤6-2、将所有最小数据单元提取出的第一个亮度交流分量,按照最小数据单元的排 列顺序,构成一个序列,并按照Z字排列顺序继续构建其他亮度交流分量的序列,直至提取 出的最后一个亮度交流分量,按照最小数据单元的排列顺序,完成构成一个序列,即获得所 有亮度交流分量所构成的多组序列,序列的组数为提取的亮度交流分量个数; 步骤6-3、根据步骤5-2,采用logistic混沛映射对第一组亮度交流分量构成的序列进 行置乱; 步骤6-4、根据步骤5-3,采用Chebyshev映射对置乱后的第一组亮度交流分量构成的 序列进行扩散; 步骤6-5、反复执行步骤6-3至步骤6-4,直至完成所有组亮度交流分量构成的序列的 置乱和扩散处理,即完成对亮度交流分量的加密; 步骤6-6、返回执行步骤6-1至步骤6-5,完成对色度交流分量的加密; 步骤7、对加密后的亮度直流分量、色度直流分量、亮度交流分量和色度交流分量进行 压缩处理,具体如下: 步骤7-1、对加密后的亮度直流分量序列进行差分脉冲编码; 步骤7-2、对差分脉冲编码后的亮度直流分量序列进行熵编码; 即根据差分脉冲编码后的亮度直流分量的大小,查询DC系数熵编码表,对应获得该亮 度直流分量所属范围,查询其所占的比特位数,并确定该亮度直流分量的二进制码,由获得 的比特位数和二进制码构成该亮度直流分量的熵编码;并反复执行上述内容,直至序列中 所有亮度直流分量均完成熵编码,获得亮度直流分量的熵编码码流; 步骤7-3、返回执行步骤7-1至步骤7-2,获得色度直流分量的熵编码码流; 步骤7-4、对加密后的所有组亮度交流分量序列进行行程长度编码; 即按照Z字排列顺序,提取出的所有最小数据单元中加密后的亮度交流分量,确定每 一个非零亮度交流分量前0的个数,并根据该非零亮度交流分量值的大小,查询行程长度 编码表,确定非零亮度交流分量的比特位数及其在所属范围内所处位置;确定非零亮度交 流分量前0的个数与其比特位数的数值组合,确定其所处位置的二进制码,并由上述两者 构成交流分量的行程长度编码; 步骤7-5、对获得的所有组行程长度编码进行熵编码; 即根据非零亮度交流分量前〇的个数与其比特位数的数值组合,查询AC系数熵编码 表,确定其对应码字,并由该码字和非零交流分量所处位置的二进制码构成熵编码,进而获 得每组亮度交流分量序列的熵编码流; 步骤7-6、返回执行步骤7-4至步骤7-5,获得每组色度交流分量序列的熵编码流; 步骤7-7、完成对加密后的亮度直流分量、色度直流分量、亮度交流分量和色度交流分 量的压缩处理; 步骤8、根据获得的直流分量序列熵编码码流和所有组交流分量序列熵编码码流,将压 缩加密后的图像保存为JPEG格式,即完成图像的压缩加密处理。
2. 根据权利要求1所述的数字图像压缩加密联合编码方法,其特征在于,步骤2所述的 采样方式包括:以1 : 1 : 1采样频率的方式,对图像的每个最小数据单元的亮度和色度进 行采样;或以4 : 2 : 2或4 : 1 : 1采样频率的方式,对图像的指定最小数据单元的亮度 和色度进行采样。
3. 根据权利要求1所述的数字图像压缩加密联合编码方法,其特征在于,步骤7-4所述 的数值组合为:R/S,其中,R表示非零亮度交流分量前0的个数;S表示非零亮度交流分量 的比特位数。
【文档编号】H04N19/48GK104144343SQ201410329402
【公开日】2014年11月12日 申请日期:2014年7月11日 优先权日:2014年7月11日
【发明者】王宁宁, 付冲, 侯淇彬 申请人:东北大学