一种基于字节拆分的图像置乱方法与流程

文档序号:11135226阅读:361来源:国知局
一种基于字节拆分的图像置乱方法与制造工艺

技术领域

本发明涉及图像置乱技术领域,尤其涉及一种基于字节拆分的图像置乱方法。



背景技术:

人们在日常生活中接收的信息大部分来源于视觉,也就是图像信息。从中也可以看出人们对眼睛看到的景象的信赖程度之高,即对通过图像传递给我们的信息的需求很大。信息技术的快速发展,使数字媒体内容可以方便快捷地在互联网发布和传输,同时也带来了许多安全隐患。由于信息容易被非法访问、复制和传播,在多媒体应用中常需要对信息进行保护。对多媒体信息的保护主要采用两种技术:对内容进行加密;在数字媒体中嵌入水印。图像置乱属于第一种技术,它也可用于信息隐藏、数字水印等的预处理。

图像置乱是指将图像搅乱,消除位置或灰度相关性,从而使人类或计算机系统无法理解原始图像所表达的真实含义。

图像置乱算法可分为:空域置乱、频率域置乱以及空频域同时置乱。其中,空域图像置乱方法有两类,分别是基于位置变换的图像置乱方法和基于像素灰度变换的图像置乱方法。如唐振军等提出一种无需迭代计算的置乱方法,该方法将各像素的位分为奇偶两组,并在两个位组内分别执行高低位的交换;雷仲魁等提出了基于骑士巡游变换的改进置乱算法,该算法扩大了密钥库,增强了置乱效果;邵利平等构造了雪崩图像置乱变换,该置乱变换可通过逆变换对原始图像进行置乱,通过正变换对置乱图像进行恢复。

目前,基于位置变换的图像置乱研究居多,但现有的这种算法存在诸多不足,例如:存在变换周期性恢复的安全性问题、置乱对图像尺寸要求较高、置乱程度不甚理想、置乱不稳定、置乱效率较低等;而基于像素灰度变换的图像置乱研究相对较少,但这种算法较前者效果好。

2、典型的图像置乱算法介绍

为了便于给出图像置乱变换的定义,把图像看作为数学上的矩阵,其行数和列数分别看成图像高和宽的像素数,其元素值看成图像的像素颜色值。因此可以给出图像置乱变换的定义如下:

给定图像G=[g(i, j)]m×n,变换矩阵T=[t(i, j)]m×n是从1到m×n的一种排列,其中m是矩阵的行数,n是矩阵的列数。视G与T按照行列形成一一对应的关系,分别将G中对应位置k(1≤k<m×n)的像素的颜色值移到对应位置k+1,并将对应位置m×n的像素的颜色值移到对应位置1,这样就得到了一幅新的图像N了。即图像G经T置乱变换后得到了图像N。

2.1基于位置变换的图像置乱算法

图像的位置置乱算法即通过改变图像像素的位置来将图像原有信息打乱,也就是改变图像的纹理特征,使得图像无法辨认。这种算法的特点是简单且有效,典型的算法有Arnold置乱变换、Fibonacci变换、幻方变换、仿射变换、正交拉丁方变换、骑士巡游变换等。下面分别以Arnold置乱变换和Fibonacci变换为例来介绍基于位置变换的图像置乱方法。

(1)Arnold变换是由Arnold在遍历理论的研究中所提出,它可以抽象为在平面单位正方形内绘制一个猫脸图像,通过变换,猫脸图像由清晰变模糊。数字图像的Arnold变换如式(1)所示:

(1)

其中,x, y{0, 1, 2, …, m-1}表示Arnold变换前像素的横纵坐标,x', y'表示Arnold变换后像素的横纵坐标,m是图像矩阵的阶数,mod是模运算,模运算的目的是确保x', y'仍然在{0, 1, 2, …, m-1}之内。

(2) Fibonacci数列是一种经典的递推关系,它的应用非常广泛。Fibonacci数列可定义如下:令F0=1, F1=1,则Fn=F(n-1)+F(n-2)(n≥2),我们称数列{Fn}为Fibonacci数列。对于给定的自然数m≥2,Fibonacci变换如式(2)所示:

(2)

其中,x, y{0, 1, 2, …, m-1}表示Fibonacci变换前像素的横纵坐标,x', y'表示Fibonacci变换后像素的横纵坐标,m是图像矩阵的阶数。

2.2基于像素灰度变换的图像置乱算法

灰度值置乱算法是针对图像像素点的灰度值进行变换,以达到置乱的目的,这种算法相对而言安全性较高,但由于常涉及数学运算等而导致效率低,而且该算法在研究上相对位置置乱具有一定的难度,所以此类算法研究较少,典型的有Gray码变换、位平面变换、异或变换等。下面以Gray码变换为例来介绍基于像素灰度变换的图像置乱方法。

对于任意一个非负整数u,记其二进制码为u=(up-1up-2…u1u0)2,可定义

gp-1=up-1, gi=ui⊕ui+1 (3)

其中i=0, 1, 2, …, p-2,“⊕”为模2加法运算,那么可得到一个二进制表示的整数g(u)= (gp-1gp-2…g1g0)2,式(3)称为Gray变换,g(u)称为u的Gray码[14]。Gray变换可用如下形式进行表示:

基于位置变换和基于像素灰度变换的图像置乱方法是常用的图像置乱方法,但这两种置乱方法置乱效果不理想。



技术实现要素:

为解决现有技术和实际情况中存在的上述问题,本发明提出一种基于分组计算的图像置乱算法。该算法首先对字节进行分组并实施位置交换,然后通过对三个分组进行线性计算实现字节值变换,该方法具有较好的置乱效果。

本发明提供了一种基于字节拆分的图像置乱方法,包括置乱算法和逆置乱算法;

所述置乱算法包括以下步骤:

1)读入图像,将存储图像的每个字节A进行分组,左边的两位为第一组,中间的三位为第二组,右边的三位为第三组;

2)对每个字节A的第三组进行检查,如果某个字节的第三组为"100",则将其修改为"101";

3)进行相关行列交换或移动;

4)对于每一个分组交换后的字节,其字节值计算方法如下:令该字节A的三个分组所对应的十进制数分别为a、b、c,则计算该字节的字节值g的公式为:

g=a×100+b×10+c

5)若通过步骤4计算得到的字节值g小于或等于255,则最终字节值g1=g,

若通过步骤4)计算得到的字节值g大于255,则重新计算,最终字节值 g1=g-255;

6)通过对每个字节进行字节值转换,得到置乱图像;

所述逆置乱算法包括以下步骤:

1)对置乱图像中的每个字节进行字节值逆转换;

2)对图像中的所有分组,执行与置乱算法中行列交换或移动过程相反的操作,即可恢复原图像。

优选地,所述逆置乱算法中对置乱图像中的每个字节进行字节值逆转换的方法为:

1)当A的第三组的值不是"100"时,A的字节值的百位、十位、个位所对应的数字分别为h、t、u,则将h、t、u分别转换成两位、三位、三位的二进制数,然后从左到右连接起来组合成一个八位的二进制数,这个八位的二进制数即为A的逆计算后的字节值。

2)当A的第三组的值为"100"时,逆计算分为三个步骤:

(1)若A的最高位为0,则将A的第三组修改为"010";若A的最高位为1,则将A的第三组修改为"110";

(2)使A的字节值加上255;

(3)执行一次1)中的计算方法,便得到了A的逆计算后的字节值。

优选地,权利要求1步骤5)中重新计算时,需要将最终的字节值g1所对应的二进制数的第三组修改为"100",为了尽可能地减小失真,在将第三组修改为"100"前,可做如下处理:若第三组的值小于"100",则将字节A的最高位修改为0;否则,将字节A的最高位修改为1。

有益效果:

本发明方法结合位置变换和灰度变换,提出一种基于分组计算的图像置乱算法。算法分为两个步骤:第一,通过对字节进行拆分,然后进行位置的交换;第二,通过线性计算进行字节值变换。从实验结果以及图像失真分析可知,本发明基于字节拆分的图像置乱方法在视觉效果、置乱程度等方面取得了较好的结果。

附图说明

图1是本发明一种基于字节拆分的图像置乱方法的字节分组的实例图。

图2是本发明一种基于字节拆分的图像置乱方法的效果图。

具体实施方式

本发明公开了一种基于字节拆分的图像置乱方法,包括置乱算法和逆置乱算法,

所述置乱算法包括以下步骤:

1)读入图像,将存储图像的每个字节A进行分组,左边的两位为第一组,中间的三位为第二组,右边的三位为第三组;

2)对每个字节A的第三组进行检查。如果某个字节的第三组为"100",则将其修改为"101";

3)进行相关行列交换或移动;

4)对于每一个分组交换后的字节,其字节值计算方法如下:令该字节A的三个分组所对应的十进制数分别为a、b、c,则计算该字节的字节值g的公式为:

g=a×100+b×10+c

5)若通过步骤4计算得到的字节值g小于或等于255,则最终字节值g1=g,

若通过步骤4)计算得到的字节值g大于255,则重新计算,最终字节值 g1=g-255;

6)通过对每个字节进行字节值转换,得到置乱图像;

所述逆置乱算法包括以下步骤:

1)对置乱图像中的每个字节进行字节值逆转换;

2)对图像中的所有分组,执行与置乱算法中行列交换或移动过程相反的操作,即可恢复原图像。

所述逆置乱算法中对置乱图像中的每个字节进行字节值逆转换的方法为:

1)当A的第三组的值不是"100"时,A的字节值的百位、十位、个位所对应的数字分别为h、t、u,则将h、t、u分别转换成两位、三位、三位的二进制数,然后从左到右连接起来组合成一个八位的二进制数,这个八位的二进制数即为A的逆计算后的字节值。。

2)当A的第三组的值为"100"时。逆计算分为三个步骤:

(1)若A的最高位为0,则将A的第三组修改为"010";若A的最高位为1,则将A的第三组修改为"110";

(2)使A的字节值加上255;

(3)执行一次1)中的计算方法,便得到了A的逆计算后的字节值。

权利要求1步骤5)中重新计算时,需要将最终的字节值g1所对应的二进制数的第三组修改为"100",为了尽可能地减小失真,在将第三组修改为"100"前,可做如下处理:若第三组的值小于"100",则将字节A的最高位修改为0;否则,将字节A的最高位修改为1。

基于位置变换和基于像素灰度变换的图像置乱方法是常用的图像置乱方法,本发明提出一种基于分组计算的图像置乱算法。该算法首先对字节进行分组并实施位置交换,然后通过对三个分组进行线性计算实现字节值变换。

本发明所处理的图像为位图图像,常见的位图图像有24位的彩色图像和8位的灰度图像。众所周知,彩色图像中的每一个像素需要3个字节来表示,而灰度图像中的每一个像素只需要1个字节来表示。为了更加有效地实现图像置乱,本发明将每一个字节分为3组。

如图1所示,这里以(10011010)2为例,左边的两位"10"为第一组,中间的三位"011"为第二组,右边的三位"010"为第三组。

为了后续字节值的线性计算,需要对每个字节的第三组进行检查。如果某个字节的第三组为"100",则将其修改为"101"。

本发明所交换或移动的对象是各分组。即对于两个字节A和B,是将A的第一组和B的第一组进行交换,或将A的第二组和B的第二组进行交换,或将A的第三组和B的第三组进行交换。

例如,字节A的二进制表示为(10101001)2,则第一组为"10",第二组为"101",第三组为"001",这三个分组所对应的十进制数分别为2、5、1,则其字节值g=2×100+5×10+1=251。很明显,通过式(5)计算得到的字节值的范围为[0,377],而一个字节的存储范围是[0,255]。因此,对于字节A的字节值计算方法,可分为如下两种情况:

(1)若通过式(5)计算得到的字节值g小于或等于255,这是不需要重新计算的。特殊情况下,当g所对应的二进制数的第三组为"100"时,则强制将第三组置为"101"。

(2)若通过式(5)计算得到的字节值g大于255,这是需要重新计算的。计算的方法如下:

g1=g-255 (6)

通过式(6)重新计算后得到的字节值的范围则为[1,122],此时已符合一个字节的存储要求了,且该字节A的最高位必定为0。为了能够正确地恢复置乱图像,当重新计算时,需要将最终的字节值g所对应的二进制数的第三组修改为"100"。为了尽可能地减小失真,在将第三组修改为"100"前,可做如下处理:若第三组的值小于"100",则将字节A的最高位修改为0;否则,将字节A的最高位修改为1。

对于置乱图像中的任何一个字节A的字节值的逆计算方法如下:

(1)当A的第三组的值不是"100"时。假设A的字节值的百位、十位、个位所对应的数字分别为h、t、u,则将h、t、u分别转换成两位、三位、三位的二进制数,然后从左到右连接起来组合成一个八位的二进制数,这个八位的二进制数即为A的逆计算后的字节值。例如,若A的字节值为136,则其百位、十位、个位所对应的数字分别为1、3、6,这三个数字转换成二进制后分别为"01"、"011"、"110",由此组合而成的二进制数则为(01011110)2,它就是A的逆计算后的字节值。

(2)当A的第三组的值为"100"时。逆计算分为三个步骤:第一,若A的最高位为0,则将A的第三组修改为"010";若A的最高位为1,则将A的第三组修改为"110"。第二,使A的字节值加上255。第三,执行一次(1)中的计算方法,便得到了A的逆计算后的字节值。

为了验证提出算法的有效性,对大量图像进行了实验,结果表明,该算法具有较好的置乱效果。

实验例1

图2(a)是一幅大小为256×256(单位:像素,下同)的Lena彩色图像。用本发明置乱算法对图2(a)进行置乱后,得到置乱图像如图2(b)所示。容易看出,置乱图像图2(b)中的像素呈均匀分布,已不能分辨出图2(a)中的信息。用本发明逆置乱算法对图2(b)进行恢复后,得到恢复图像如图2(c)所示。很明显,肉眼已无法区分图2(c)与原图2(a)。

本发明提出了一种基于分组计算的图像置乱算法,该算法能较好地置乱图像,从实验结果可知,肉眼已完全感觉不到恢复图像的失真情况。对于发明算法中的恢复图像的失真情况可以分析如下:

(1)在分组与行列交换中,将第三组为"100"的字节,修改其第三组为"101"。该步骤的失真为1,每个字节发生这种失真的概率为1/8。

(2)对于字节值的计算中的第(1)种情况,将第三组为"100"的字节,修改其第三组为"101"。该步骤的失真为1,每个字节发生这种失真的概率约为1/8。对于字节值的计算中的第(2)种情况,若第三组为"010"或者"110"时,不存在失真;若第三组为"001"、"011"、"101"或者"111"时,失真为1;若第三组为"000"或者"100"时,失真为2。即字节值的计算中的第(2)种情况的平均失真为1。

因此,本发明算法对每个字节的平均失真约为0.5。

若想获得无失真的恢复图像,可以通过增加一块与原图像同样大小的空间,用于存储每个字节的失真值。这样便能使本文算法实现无失真的图像置乱,其缺点是使置乱图像的尺寸变大了1倍。

最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1