随着网络和计算机技术飞速发展,网上图像传输给人们提供了很大便利,但是在网络应急通信情况下,海量的图像数据安全存储和传输问题日益突出。对于一些涉密的、隐私的、高价值的和不宜公开传输的图像,需要高效、安全地传输或存储。这就需要图像的压缩和加密技术[。同时由于受设备、场地等条件限制、实时传输等要求及已有压缩加密算法存在的不足的制约,需要研究新的压缩与加密同步的技术[。如果将图像先加密、再压缩,由于加密破坏了其空间和时间相关性,使压缩变得不可能或压缩率低,不能满足实际应用的需要。如果将图像先压缩、再加密,则传统加密方法又不太适合,并且也不能满足实际应用的需要。鉴于此,对数字图像需要设计压缩和加密同时进行且计算复杂度低的算法。因此,为了满足图像传输效率和安全性的要求,数字图像或视频加密和压缩结合的技术成为了当前国内外研究的热点[。
当前,对图像加密和压缩研究的文献不少[。文献[
受文献[LL)提取出来,按顺序构成一个二维系数矩阵;然后对该二维系数矩阵采用混沌方法进行加密,接着将置乱后的矩阵按顺序还原回4个二维系数矩阵;最后经小波逆变换得到加密压缩图像。该改进方案不仅实现图像加密和压缩同步进行,而且还增强了加密的安全性,并提高了图像的压缩率。
1 混沌序列
混沌现象是在非线性动力系统中出现的确定性的,类似随机的过程。这种过程既非周期,又不收敛,并且对初始值有极其敏感的依赖性[。
$
{x_{k + 1}} = f({{x}_k}),
$
(1)
其中,xk∈v=(0,1),k=0,1,2,3,…,称之为状态。而f:v→v是一个映射,将当前状态映射xk到下一个状态xk+1如果由初始值x0开始,反复应用f,就得到一个序列{xk,k=0,1,2,3,…,}这一序列称为该离散时间动力系统的一条轨迹。
一类非常简单却被广泛研究的动力系统是 Logistic 映射,其定义如下
$
{x_{k + 1}} = u{x_k}(1 - {{x}_k}),
$
(2)
其中,0≤u≤4称为分枝参数,xk∈(0,1)。当3.569 945 6≤u≤4时,Logistic 映射工作处于混沌状态。也就是说,由初始条件x0在 Logistic 映射的作用下所产生的序列{xk,k=0,1,2,3,…,}是非周期的、不收敛的,且对初始值非常敏感。Logistic 序列的这些特性表明,应用其进行图像加密将具有高的安全性能[。
2 算法思想及算法步骤
由于原始图像的绝大部分能量集中在小波变换后的低频成分(LL)部分,只需要低频成分就能够重构与原始图像非常相似的图像,因此改进的算法只针对小波系数矩阵中的低频分量进行加密。使用该方法,很大程度上避免了高低频系数迁移而引起图像原始信息的丢失。将4幅同样大小的原始图像进行小波变换,对变换后的LL成分按
改进的加密压缩新方案流程如
图 1(Figure 1)
图 1 加密压缩流程图
设4幅相同尺寸的原始灰度图像分别为Im×n(1)、Im×n(2)、Im×n(3)和Im×n(4),如果4幅图像尺寸不相同,可通过对行像素或列像素补0或其他值,使得4幅图像尺寸相同。设加密压缩后图像为I’m×n,加密压缩算法步骤如下
Step 1 读取原始4幅灰度图像Im×n(1)、Im×n(2)、Im×n(3)和Im×n(4),分别对4幅图像进行小波变换(实验中可选用“db1”小波),选取4幅图像变换后的低频成分LL1、LL2、LL3、LL4,按照Ck×l。其中,k=m,l=n。
Step 2 Logistic 混沌序列置乱
根据式(2) Logistic 迭代方程计算得到二维 Logistic 混沌映射,分别记为x和y,表示如下
x={xi|i=1,2,…,k×l},
y={yj|j=1,2,…,k×l},
其中u1=0.89,u2=0.89,x1 =0.99,y1 =0.02。
利用x,y对Ck×l的值进行位置置乱,即将像素位置(i,j)的值与像素位置(a,b)的值进行互换,得到C′k×l。
$
\begin{array}{l}
{{\mathit{\boldsymbol{C'}}}_{k \times l}} = \{ \mathit{C'}{\rm{(}}\mathit{i, j}{\rm{)}}\left| {i = 1, 2, \cdot \cdot \cdot, k;j} \right. = 1, 2, \cdot \cdot \cdot, l\}, \\
\mathit{\boldsymbol{a = }}\left\lfloor {{x_i} \times m} \right\rfloor + 1, \\
\mathit{\boldsymbol{b = }}\left\lfloor {{y_i} \times n} \right\rfloor + 1,
\end{array}
$
其中k,l为Ck×l矩阵行、列数,$\left\lfloor {} \right\rfloor $表示下取整。
Step 3 将C′k×l分别按LL1、LL2、LL3、LL4相同的尺寸分解成4个二维系数矩阵LL′1、LL′2、LL′3、LL′4,再分别对它们进行小波逆变换,得到加密压缩后图像I′m×n。
Step 4 需注意由于置乱加密后的系数经小波逆变换后取值区间不在[0, 255]区间内,这样存储后的图像再次读取时会发生变化,不能还原原始图像。为保证还原效果,在存储前应进行映射处理,将加密后图像的像素值映射至[0, 255]区间内。映射按下面式(3) 进行,便得到融合加密后的图像I″m×n。
$
{{I''}_{m \times n}}({i, j}) = \frac{{{{I'}_{m \times n}}({i, j}) - {p_{\min }}}}{{{p_{\max }} - {p_{\min }}}} \times 255, i = 1, 2, \cdot \cdot \cdot, k;j = 1, 2, \cdot \cdot \cdot, l,
$
(3)
其中pmin是I′m×n中最小的灰度值,pmax是I′m×n中最大的灰度值。
Step 5 解密是上述过程的逆过程。解密时要将 Logistic 混沌序列的初始值和系数,以及pmin和pmax作为密钥传给接收方,解密时再按式(4) 逆映射灰度值,接着进行小波变换和混沌解密反置乱,就可以还原4幅原始图像的低频数据。再把每个4幅原始图像低频分量之外的小波系数补0,再进行小波逆变换就能还原得到4幅原始图像。
$
{{{\tilde I'}}_{m \times n}}({i, j}) = ({p_{\max }} - {p_{\min }}) \times {{{\tilde I}}_{m \times n}}({i, j})/255 + {p_{\min }}, i = 1, 2 \cdot \cdot \cdot, k;j =\\ 1, 2, \cdot \cdot \cdot, l,
$
(4)
其中${{{\tilde I}}_{m \times n}}$是接收方读取的压缩解密图像,${{{\tilde I'}}_{m \times n}}$是经过映射得到调整值。
3 算法仿真与评价
为验证改进算法的有效性,通过以大小为256×256的幅测试图像为例,采用MATLAB7.4.0 (R2007a)进行仿真实验。Logistic 混沌系统中取u1=0.89;u2=0.89;x1=0.99;y1=0.02,此即为加密时的密钥。
3.1 主观效果
分别将加密压缩后的图像保存为BMP和JPG格式进行还原,其加密压缩效果如
图 2(Figure 2)
图 2 存储为JPG图像的加密压缩效果图
图 3(Figure 3)
图 3 存储为BMP图像的加密压缩效果图
从
3.2 置乱度
图像被置乱或加密的程度用置乱度(SM)用来评估,它能较为客观地反映图像的加密效果。目前,国内外许多研究者都给出了置乱度的定义,却又各不相同。引用文献[
$
{\rm{SM(}}{I, I'}{\rm{) = }}\frac{{\sum\limits_{i = 1}^M {\sum\limits_{j = 1}^N {{{({{I}_{ij}} - {{I'}_{ij}})}^2}} } }}{{\sum\limits_{i = 1}^M {\sum\limits_{j = 1}^N {{{({{I}_{ij}} - {R_{ij}})}^2}} } }},
$
(5)
其中,I={Iij}M×N表示原始图像,I′={I′ij}M×N表示置乱或加密图像,R={Rij}M×N表示与原始图像相同大小的均匀分布噪声图像。为了使得加密图像的置乱度具有可比性,通常采用同一幅均匀分布的噪声图像。将加密压缩后得到的图像与4幅原始图像进行比较,得到的实验结果如
表 1(Table 1)
表 1 加密后图像的置乱度
加密图像存储格式
置乱度SM
原始图像1
原始图像2
原始图像3
原始图像4
bmp
0.744 9
0.527 9
0.575 3
0.527 9
JPG(压缩因子为100)
0.745 2
0.528 0
0.575 5
0.528 0
表 1 加密后图像的置乱度
从
3.3 压缩率
压缩率作为图像压缩的一个评价指标,其计算式记为
$
压缩率 = \frac{{原始图象大小 - 压缩后图象大小}}{{原始图象大小}} \times 100\%,
$
(6)
在压缩率测试中,与传统加密压缩算法大都经历压缩编码不同,算法未经压缩编码就获得了压缩效果。采用尺寸均为256×256像素的4幅原始BMP图像(总的大小为4×65=260kbyte)进行测试,并将加密压缩后图像存储为JPG格式,进行压缩率的比较。经过加密压缩后得到压缩率如
表 2(Table 2)
表 2 压缩效率比较
处理方式
处理后图像大小(kbyte)
压缩率(%)
直接JPG压缩
99.8(jpg)
61.62
研究算法
79.2(jpg)
69.54
备注
JPG压缩时,压缩因子为100。
表 2 压缩效率比较
可以看出,由于算法借鉴“多路复用”的思想,其优势是在JPG压缩前已将4幅原始图像压缩到1幅图像中,实现了一次图像尺寸的压缩。同时,改进的算法不仅实现了图像加密,而且在加密的同时实现了图像的压缩,并且从
4 结语
改进的一种基于混沌和小波变换的图像加密压缩算法,实现了对加密和压缩同时进行处理。通过在小波变换域中使用混沌序列置乱加密,得到加密效果较好的加密压缩图像。算法借鉴“多路复用”的思想,达到较好的压缩效果,使得压缩率有较大提高。仿真实验结果,说明了加密和压缩同时处理的方法的性能良好。