基于小波变换的数字图像双重随机置乱加密首先对图像进行小波分解:再对分解结果进行第一次随机置乱。这一置乱有两种方案:第一种是直接对每一分量图像分别进行置乱,第二种是对由所有分量图像拼接而成的图像进行置乱,置乱后再分割成与原分量位置与大小一致的分量图像;然后对这些分量图像进行小波重构,并对重构结果再次进行随机置乱,得双重随机置乱加密图像。
一、数字图像的多分辨率小波分解和重构
小波变换的结果是将图像从高尺度向低尺度进行了多分辨率分解。对图像的二级小波分解示意图见图1。小波分解的结果是将图像分解成了子图像的集合。在第一级小波分解时,原始图像被分解为一个低频子图像LL1(对应原图像在低分辨率上的一个近似)和三个高频子图像HL1,LHi和HHi(分别对应水平方向、垂直方向和对角方向的细节)的集合。在第二级小波分解时,低频子图像LL1被继续分解为更低分辨率的一个低频子图像LL2和三个高频子图像HL2,LH2和HH2的集合,而原来第一级分解得到的三个高频子图像不变。
上述分解过程可以如式(1)那样继续下去,式中的“→"代表小波分解,即第f级分解的低频子图像LLi可以进行第i+1级分解得到更低尺度的四个子图像LLi+1,HLi+1,LHi+1和HHi+1,这样就得到越来越多的低尺度子图像。
图像的小波重构正好是式(1)和图1的相反方向,即用低尺度的子图像,逐级通过小波逆变换重构出一幅高尺度的图像,直至得到与原图像大小相同的重构图像。
二、随机置乱和去乱
1、图像随机置乱
随机置乱就是在图像中通过随机选出的两个像素进行交换,经过一定数量的交换后,达到置乱的目的。首先将表示大小为MxN的数字图像的二维数组X按列扫描转换为一维向量n这样就将图像中的二维位置转变为一维数组中的下标,交换图像中的两个像素就变成了交换一维向量y中的两个元数。为了实现一维向量y的随机置乱,需用一具有均匀分布的随机自然数产生器选择一对不同的种予来生成两组与I,等长(长度为Mxt0的随机数组Rs和RD,并由它们的元素值来决定I,中的哪两个位置的元素相互交换。由于Rs和RD都是均匀分布的随机序列,且两组序列是由不同的种子得到的,相关性很小,因此置乱后的,必定具有随机特性和均匀分布特性,从而获得较为理想的置乱效果。
2、图像随机去乱
由于交换规则是可逆的,因此只要去乱与置乱时的随机序列Rs和RD保持相同,再次置乱就能达到去乱的目的。
三、双重置乱和去乱
1、第一次置乱
图像经小波变换后,在小波域对小波变换系数矩阵(即子图像)进行随机置乱,是属于第一次置乱。本次置乱有2种方案:
方案1:对如图1和式(1)所示的所有分解子图像分别选择一对不同的种子进行随机置乱。
方案2:先象式(l)和图1所排列的那样逐级将四幅低尺度子图像直接拼接(而不是逆变换)为一幅高尺度子图像,直至与原始图像大小~样的图像W,然后再选择一对不同的种子对这幅图像进行随机置乱。然后,将经置乱后的图像再按拼接时的反方向分割为各低尺度子图像。
小波重构后的图像视觉效果主要取决于低频子图像。由于方案1是低频子图像的内部置乱,其平均亮度和灰度直方图没有改变,因此小波重构后图像的平均亮度和灰度直方图与原始图像比较差别不大。方案2是将所有高、低频子图像拼接在~起整体置乱后再分割的。置乱后分割得到的低频子图像与原先图像已大大不同了,由于其中混入了许多低亮度的高频系数,使其亮度大大降低,灰度直方图也完全改变。因此,小波重构后图像的平均亮度和灰度直方图与原始图像比较差别很大,置乱效果更好。
2、第二次置乱
为了提高算法的效率,图像在小波域只进行一次随机置乱,经逆变换后图像的灰度分布可能会不够均匀,因此有必要对其再进行一次空间域的随机置乱。这样置乱后图像的灰度分布就显得很均匀了。这一次置乱属于第二次置乱。
3、置乱的安全性
由于置乱和去乱中的随机数产生时用到种子,故本方法是一个基于密钥的加密方法。由于种子选择可以是任意值,因此从理论上讲,由几对不同种子组成的密钥空间为无穷大(具体实现时只受制于伪随机序列产生的模型和这些参数所选用的数据类型的字节长度),可见算法的安全性非常高。
4、随机置乱和去乱步骤
置乱步骤
Step 1给定产生随机序列的种子和小波分解级数N;
Step 2按图l和式(1)对原始灰度图像进行N级小波分解,并选择小波域置乱方案;
Step 3若选方案1,转Step7;
Step 4按式(1)和图l的排列将4幅低尺度子图像直接拼接为一幅高尺度子图像,直至一幅与原图像大小相同的大图像W;
Step 5按2.1节的方法对w进行随机置乱;
Step 6按拼接时的逆向将置乱后的w分割为各低尺度子图像;转Step10;
Step 7j=1;
Step 8按前面的方法对第j级小波分解的每一子图像(当j=N时,子图像有4幅,其余均为3幅)分别进行随机置乱;
Step 9j→j+1;若j≤N,转到Step 8;
Step 10按式(l)和图1的逆向对各级子图像进行小波重构,直至重构出一幅与原图像大小相同的图像;
Step 11按前面的方法对小波重构图像进行随机置乱,得双重置乱后的加密图像。
去乱步骤
Step 1给定与置乱步骤相同的产生随机序列的种子和小波分解级数N;
Step 2按前面的方法对加密图像进行随机置乱;
Step 3按图1和式(1)对Step 2所得图像进行N级小波分解,并选择与置乱算法相同的小波域置乱方案;
Step 4若选方案1,转Step8;
Step 5按式(l)和图1的排列将四幅低尺度子图像直接拼接为~幅高尺度予图像,直至一幅与原图像大小相同的大图像W;
Step 6按上节的方法对w进行随机置乱;
Step 7按拼接时的逆向将置乱后的形分割为各低尺度子图像;转Step 11;
Step 8j=2N;
Step 9按前面的方法对第j级小波分解的每一子图像(当j=N时,子图像有4幅,其余均为3幅)分别进行随机置乱;
Step 10j→i-1;若j>0,转至Step 9;
Step 11按式(1)和图1的逆向对各级子图像进行小波重构,得到去乱后的图像。
四、实验结果分析与比较
实验时用MATLAB编程仿真,选用上述两种方案对如图2(a)所示的Cameraman图像进行双重随机置乱加密处理,结果如图2(f)和2(i)所示。图2(b)是图2(a)的一级小波分解结果:图2(d)是方案1的第一次置乱,结果由小波逆变换重构出图2(e);图2 (f)是方案1对图2(e)的第二次置乱结果。图2(g)是方案2的第一次置乱,结果由小波逆变换重构出图2 (h),图2(i)是方案2对图2(h)的第二次置乱结果。显然,两种方案的置乱效果均具均匀特性,视觉效果比较理想。但方案1的置乱结果的平均亮度更接近原图像,而方案2的置乱结果的平均亮度则明显比原图像暗,更不具原图像的特征,置乱效果更佳。图2(c)则是本方法去乱后的结果,与图2 (a)原始图像比较没有损失任何信息。
图像的置乱效果可以在一定程度上用其灰度直方图来反映:灰度直方图变化越大,置乱效果就越好。对图2 (a)、2(D和2(i)分别进行灰度直方图统计,得如图3的3个直方图。显然,方案1的直方图更像原图像;而方案2的直方图则与原图像完全不同,且均匀性较好,可见后者的置乱效果更好。实验结果印证了前述的理论分析。
图像的置乱程度还可以通过置乱度来定量评价。根据置乱度评价方法,一幅数字图像,被置乱变换T变到另一幅图像的置乱度被定义为:
其中H和H(k)分别为整个图像的信息熵和第七个分块图像的信息熵,μ(k)为第忌个分块中互为相邻像素差值的平均值。显然,用式(2)评价的置乱度越大效果越好,其理想值为1。
用式(2)分别对方案2在不同级数小波分解情况下的1次(只选小波域置乱)和2次置乱结果进行置乱度计算,结果如表1所示:当小波分解级数相同时,进行2次置乱的置乱度明显比只进行1次置乱要好;当小波分解的级数不大于4时,1次和2次置乱的置乱度都是递增的,当小波分解级数再增大时,尽管1次置乱的置乱度还在缓慢增大,但2次置乱的置乱度却开始缓慢减小,可见方案2的最佳置乱结果出现在小波分解级数为4时。
实践证明,本算法的两种方案均能取得较好的视觉置乱效果。方案2将小波域的高低频分量随机打乱了,因此小波重构后的图像具有较好的灰度值改变,灰度直方图与原图像相比产生了根本性的变化,且灰度分布较均匀,因此方案2的置乱效果更佳。方案2在小波分解级数为4时,置乱效果达到最佳。本加密算法只需执行1次就能达到较理想的置乱效果,效率和安全性较高,且算法简单,易于实现。
小知识之置乱
所谓“置乱”,就是将图像的信息次序打乱,将a像素移动到b像素的位置上,b像素移动到c像素的位置上……使其变换成杂乱无章难以辨认的图像。