CN104361550B - 一种基于2D BacterialGrowth迷宫的数字置乱方法 - Google Patents
一种基于2D BacterialGrowth迷宫的数字置乱方法 Download PDFInfo
- Publication number
- CN104361550B CN104361550B CN201410747724.2A CN201410747724A CN104361550B CN 104361550 B CN104361550 B CN 104361550B CN 201410747724 A CN201410747724 A CN 201410747724A CN 104361550 B CN104361550 B CN 104361550B
- Authority
- CN
- China
- Prior art keywords
- init
- image
- scramble
- labyrinth
- randomizer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明提供一种基于2D BacterialGrowth迷宫的数字置乱方法,预先对BacterialGrowth迷宫生成区域进行人为限定,从而可用于人为指定的任意2D封闭连通区域,同时按迷宫节点更新顺序对迷宫设定区域的每个节点赋予唯一编号,由此产生迷宫设定区域所有节点的排列,在此基础上构造了基于2D BacterialGrowth迷宫节点更新序列和节点更新序列复合的置乱方法,从而可将所有节点置乱。本发明所给出的置乱方法具有普适性和灵活性,在使用过程中不存在任何限制,不仅能用于传统置乱方法所针对的规则区域,例如正方形和矩形区域,也可用于任意选定的2D封闭连通不规则区域置乱。本发明也给出了用于像素矩阵,R、G、B通道矩阵和比特位面的图像置乱方法。
Description
技术领域
本发明主要涉及信息安全和数字信号处理等交叉研究领域,具体为基于BacterialGrowth迷宫生成策略的数字置乱方法,特别涉及一种基于2DBacterialGrowth迷宫的数字置乱方法。
背景技术
近年来,伴随着计算机和网络技术的发展,越来越多的图像在网络中传输,在给用户提供方便的同时,也带来了一系列的安全隐患。对图像的不当使用和恶意篡改,不仅涉及个人隐私问题,也会给社会带来严重的负面影响。保障图像的核心技术是数字图像加密。
在数字图像加密领域,研究最为广泛和灵活的一类图像加密方法,就是在同一空间内,对图像的重编码技术,即图像置乱技术。
随着计算机技术的飞速发展,数字图像置乱技术已成为数字安全传输和保密的主要手段。其基本思路就是把一幅图像经过一定的数学变换,转变成面目全非的另一幅图像,以起到对图像的安全保密作用。
数字图像置乱也是目前隐密术、数字水印、信息分存和可视密码技术中,一项关键预处理技术。已受到国内外学者的普遍重视,并取得丰硕的研究成果。
数字图像置乱最初来源于有线电视信号加密,早期的置乱在位置空间进行,用于对图像像素位置打乱,这些置乱方法包括行倒置置乱、行平移置乱、行置换置乱、行循环置乱、行分量切割置乱等。随着置乱技术的不断发展,目前已提出的置乱方法多种多样,既可用于位置置换,也可用于灰度替代。
当前已提出的置乱方法主要有:基于离散元素序列的置乱方法、基于扫描路线的置乱方法、基于遍历矩阵的置乱方法、基于迭代函数系统的置乱方法、基于离散混沌映射的置乱方法、基于中国拼图的置乱方法和基于矩阵变换的置乱方法等。
目前尽管已提出了多种置乱方法,但传统置乱方法大多只能用于规则区域置乱,例如正方形和长方形区域,而不能对图像选定的任意不规则区域进行置乱。
例如基于Fibonacci序列和Lucas序列的置乱方法将待置乱图像的宽、高拘泥为Fibonacci序列和Lucas序列元素;基于SCAN语言和Hilbert曲线的置乱方法将置换图像的大小约束为2n×2n的正方形图像;由于并非所有图像都存在骑士巡游路径,由此导致了基于骑士巡游的置乱方法只能用于图像宽、高在特定尺度上的图像;对于奇数阶幻方,其置乱图像边长为奇数,对于双偶阶幻方,其置乱图像边长为4的整数倍;由于任意阶的拉丁方并非都存在,基于拉丁方的置乱方法只能用于置乱图像边长为特定尺度的图像,例如边长为pn且p为素数的图像;对于离散Kolmogorov Flows Map和亚仿射变换,只能用于置乱正方形图像;传统的基于矩阵的图像置乱方法,其基本表示形式为X[i]=(AX[i-1])mod N,但由于只有一个尺度参数N,由此决定了基于矩阵的图像置乱方法只能用于置乱特定尺度的图像,例如正方形图像或对矩形图像的灰度进行置乱。
在文献二维非等长图像置乱变换(电子学报,2007,35(7):1290-1294),二维三角映射及其在图像置乱上的应用(Information Technology Journal,2008,7(1):40-47),二维双尺度矩形映射及其在图像置乱上的应用(计算机辅助设计与图形学报,2009,21(7):1026-1034)和多尺度三角映射及其在变尺度置乱上的应用(International Journal ofComputer Applications in Technology,2010,38(1-3):74-85),我们将X[i]=(AX[i-1])modN拓展为X[i]=(AX[i-1])modN,N为有限个尺度构成的尺度向量,提出了2维非等长变换存在性判据,2维双尺度矩形映射的特殊形式-2维三角映射,以及2维双尺度矩形映射一般性构造方法和多尺度三角映射。尽管X[i]=(AX[i-1])modN可用于任意矩形图像置乱,并可对图像位置和灰度同时置乱,但所提出的方法只能对规则区域进行置乱,不能用于对选定的任意不规则区域进行置乱。
传统的迷宫生成方法在人工智能和优化计算领域应用较广,一般用于动态复杂场景的模拟和仿真,在信息安全领域涉及较少,在文献基于迷宫置换和Logistic混沌映射的图像加密算法(计算机应用,2014,34(7):1902-1908),我们探讨了基于DFS迷宫节点入栈顺序和行优先扫描顺序高效产生置换的方法,将迷宫生成方法应用于任意矩形图像加密,但所提出的方法不能应用于图像的任意不规则连通封闭区域加密。
发明内容
本发明的目的在于克服现有技术缺陷,提供一种基于2D BacterialGrowth迷宫的数字置乱方法,该方法可用于2D任意连通封闭区域数据置乱。
为实现上述目的,本发明采用以下技术方案:
一种基于2D BacterialGrowth迷宫的数字置乱方法,包括以下步骤:
第1步:设定迷宫初始范围Sinit和迷宫有效区域Smaze=(si,j)m×n,对于若则初始si,j=-1,反之则标记si,j=0表示该节点未访问,若si,j>0表示该节点已访问,统计有效区域Smaze范围内的节点数量Nummaze=count(Smaze);
第2步:对于记si,j.d,d=0,1,2,3依次为节点si,j的下方、右方、上方和左方墙,初始化si,j.d=-1,d=0,1,2,3,即将Smaze范围内的所有节点以墙进行分隔,si,j.d=-1表示有墙,si,j.d=0表示无墙;
第3步:选择随机数发生器y=RG(x),设定随机数发生器初始值RG.init=seed,初始化已访问迷宫节点列表Aupdate=Φ,记当前已访问节点数量Numvisited,Numvisited=0;
第4步:随机选取标记将加入Aupdate,即Numvisited=Numvisited+1;
第5步:若Numvisited<Nummaze,则循环执行第6步~第9步;
第6步:初始化临时缓冲列表Atemp=Φ,将Atemp=Aupdate,按随机数发生器随机产生a,b∈[0,Atemp.length-1],并且满足gcd(a,Atemp.length)=1,即a和Atemp.length互素;
第7步:对于每个index=(a·i+b)modAtemp.length,i∈[0,Atemp.length-1],取索引位置的节点sx,y=Atemp.at(index);
第8步:若sx,y的周围相邻节点sx+1,y,sx,y+1,sx-1,y,sx,y-1存在未访问的节点,则按随机数发生器随机选择1个未访问的节点,记为sx′,y′;
第9步:将sx,y和sx′,y′之间的分割墙标记为0,标记sx′,y′=1,将sx′,y′加入Aupdate,即Aupdate=Aupdate.add(sx′,y′),Numvisited=Numvisited+1;
第10步:利用Aupdate构造Smaze=(si,j)m×n范围内所有节点间的映射关系,从而将Smaze=(si,j)m×n范围内的所有节点置乱。
作为本发明进一步优选方案,第10步中映射方法具体包括以下步骤:
第10.1步:选取整数作为映射偏移量ll,llmodAupdate.length≠0,将其按式(1)规范到(-Aupdate.length,Aupdate.length)范围内的整数,按式(2)计算index;
ll=llmodAupdate.length(1)
第10.2步:将Sinit复制为T=(ti,j)m×n;
第10.3步:对于按式(3)将si,j赋值给tx,y;
第10.4步:输出T=(ti,j)m×n。
作为本发明进一步优选方案,选取两个随机数发生器y=RG0(x),y=RG1(x),设定随机初始值RG0.init=seed0,RG1.init=seed1分别生成迷宫节点更新序列
第10步中映射方法具体包括以下步骤:
第10.1步:输入任意整数作为映射偏移量ll,并将其按式(4)规范到范围内的整数,按式(5)计算index;
第10.2步:将Sinit复制为T=(ti,j)m×n;
第10.3步:对于按式(6)将si,j赋值给tx,y;;
第10.4步:输出T=(ti,j)m×n。
作为本发明进一步优选方案,在进行图像置乱时,具体包括以下步骤:
第(1)步:读取待置乱图像像素矩阵P=(pi,j)m×n作为Sinit,在Sinit上选取特定区域作为Smaze;
第(2)步:选取作为迷宫的初始节点,选取随机数发生器y=RG(x),设定初始值RG.init=seed和映射偏移量ll;
第(3)步:输出置乱后的矩阵P′=(pi′,j)m×n,将其写为置乱后的图像。
作为本发明进一步优选方案,在进行图像置乱时,具体包括以下步骤:
第(1)步:读取待置乱图像像素矩阵P=(pi,j)m×n作为Sinit,在Sinit上选取特定区域作为Smaze;
第(2)步:选取作为迷宫的初始节点,选取随机数发生器y=RG0(x),y=RG1(x),设定初始值RG0.init=seed0,RG1.init=seed1和映射偏移量ll;
第(3)步:输出置乱后的矩阵P′=(pi′,j)m×n,将其写为置乱后的图像。
作为本发明进一步优选方案,在进行图像置乱时,具体包括以下步骤:
第(1)步:读取24位图像R、G、B通道矩阵P24.R=(ri,j)m×n、P24.G=(gi,j)m×n和P24.B=(bi,j)m×n,将其分别作为初始范围在选取特定区域作为有效区域
第(2)步:选取分别作为R、G、B通道的初始节点,选取随机数发生器y=RGR(x),y=RGG(x),y=RGB(x),设定初始值RGR.init=seedR,RGG.init=seedG,RGB.init=seedB和映射偏移量llR,llG,llB;
第(3)步:输出置乱后的矩阵R′,G′,B′写为置乱后的图像。
作为本发明进一步优选方案,在进行图像置乱时,具体包括以下步骤:
第(1)步:读取24位图像R、G、B通道矩阵P24.R=(ri,j)m×n、P24.G=(gi,j)m×n和P24.B=(bi,j)m×n,将其分别作为初始范围在选取特定区域作为有效区域
第(2)步:选取分别作为R、G、B通道迷宫的初始节点,选取随机数发生器设定初始值和映射偏移量llR,llG,llB;
第(3)步:依次输出置乱后的矩阵R′,G′,B′,将其写为置乱后的图像。
作为本发明进一步优选方案,在进行图像置乱时,具体包括以下步骤:
第(1)步:读取待置乱图像比特位面,对于8位图像P8,将图像位面依次作为初始范围对于24位图像P24,将图像位面依次作为初始范围在上选取特定区域作为有效区域
第(2)步:选取作为迷宫的初始节点,选取随机数发生器y=RGkk(x),设定初始值RGkk.init=seedkk和映射偏移量llkk;
第(3)步:依次输出置乱后的矩阵,对于8位图像P8,将置乱后的位面W′kk,kk=0,…,7写为置乱后的图像,对于24位图像P24,将置乱后的位面W′kk,kk=0,…,23写为置乱后的图像。
作为本发明进一步优选方案,在进行图像置乱时,具体包括以下步骤:
第(1)步:读取待置乱图像比特位面,对于8位图像P8,将图像位面依次作为初始范围对于24位图像P24,将图像位面依次作为初始范围在上选取特定区域作为有效区域
第(2)步:选取作为迷宫的初始节点,选取随机数发生器设定初始值和映射偏移量llkk;
第(3)步:依次输出置乱后的矩阵,对于8位图像P8,将置乱后的位面W′kk,kk=0,…,7写为置乱后的图像,对于24位图像P24,将置乱后的位面W′kk,kk=0,…,23写为置乱后的图像。
本发明同现有技术优点分析:
(1)传统的迷宫生成方法在人工智能和优化计算领域应用较广,一般用于动态复杂场景模拟和仿真,但在信息安全领域涉及较少,而传统的置乱方法一般将置乱空间局限在特定的尺度上,用于图像规则区域置乱,例如正方形图像和矩形图像以及适用于特定尺度图像的规则区域加密,方法不具有普适性,在实施过程中存在使用限制。本发明则将传统的迷宫生成方法引入到信息安全中的置乱处理方法中,在BacterialGrowth迷宫生成方法中添加了迷宫有效区域Smaze约束限制,使其仅在事先选定的2D任意封闭连通区域Smaze上产生迷宫,同时将BacterialGrowth迷宫节点更新顺序以节点更新序列Aupdate输出用于生成排列,利用该排列构造所有节点之间的映射关系,从而将所有节点置乱。
在此基础上本发明还给出了结合具体节点更新序列和节点更新序列复合的数字置乱方法。本发明所给出的置乱方法具有普适性和灵活性,在使用过程中不存在使用限制,不仅可以用于置乱传统置乱方法的规则区域,例如正方形和矩形区域,也可以用于任意选定的2D连通封闭区域。
(2)本发明所给出的置乱方法可单独使用,也可多次迭代,还可将不同方法联合使用,也可和现有的信息隐藏、数字水印、秘密共享和加密策略相结合,结合任意设定的随机数发生器对任意2D连通封闭区域数据提供不同安全级别的多重保护,具备较高的实际应用价值。
(3)同时本发明所针对的对象也不仅仅是图像,可以用于任意封闭连通区域数据的置乱和恢复。
附图说明
图1是本发明具体实施例:方法1一种基于2D BacterialGrowth迷宫的数字置乱方法流程图;
图2是本发明具体实施例:方法2结合具体映射方法的数字置乱方法流程图;
图3是本发明具体实施例:方法3结合另一种映射方法的数字置乱方法流程图;
图4是本发明实施例:测试图像(含24位真彩色人像照片和迷宫有效区域设定图像包括五边形、六边形、五角星、心形、闪电形、空心云状图和人像前景等单色图像,其中黑色为迷宫有效区域,所有图像分辨率均为80×60);
图5是传统的BacterialGrowth方法生成的80×60迷宫;
图6是本发明对传统的BacterialGrowth方法添加有效区域限制的BacterialGrowth方法生成的迷宫(以图4中的空心云状图和人像前景为迷宫有效区域);
图7是本发明实施例:由图4五边形设定区域按方法1中BacterialGrowth法产生的前30个元素排列;
图8是本发明实施例:以5×6迷宫为例验证方法2(原始矩阵、迷宫生成排列、正映射、逆映射、置乱矩阵和恢复矩阵);
图9是本发明实施例:以5×6迷宫为例验证方法3(原始矩阵、迷宫生成排列1、迷宫生成排列2、正映射、逆映射、置乱矩阵和恢复矩阵);
图10是本方法实施例:以图4测试例为基础对方法4的验证图样;
图11是本方法实施例:以图4测试例为基础对方法5的验证图样;
图12是本方法实施例:以图4测试例为基础对方法6的验证图样;
图13是本方法实施例:以图4测试例为基础对方法7的验证图样;
图14是本方法实施例:以图4测试例为基础对方法8的验证图样;
图15是本方法实施例:以图4测试例为基础对方法9的验证图样。
具体实施方式
以下结合附图具体实施例对本发明方法进行详细描述:
BacterialGrowth迷宫生成策略是一种典型的迷宫生成策略,来源于细菌增值模型,即每个生成的细菌都在不停地分裂和扩张,产生新的细菌个体。传统的BacterialGrowth迷宫是在m×n规模网格上的任意节点出发,产生一条连接所有网络节点且具有复杂迂回通道的迷宫。
经典BacterialGrowth迷宫生成方法在人工智能和优化计算领域应用较广,一般用于动态复杂场景的模拟和仿真,但在信息安全领域涉及较少。
经典BacterialGrowth迷宫容易产生长迂回通道,本发明预先对BacterialGrowth迷宫生成区域进行人为限定,同时对细菌的生成顺序进行随机扰动,则BacterialGrowth生成迷宫不光可以应用于规则区域,例如正方形区域和矩形区域等,同时也可应用于人为指定的任意区域,例如2D封闭连通区域,同时可按迷宫节点更新顺序对迷宫限定区域的每个节点赋予一个唯一的编号,由此可产生一个排列,利用该排列构造所有节点之间的映射关系,从而将所有节点置乱。
本发明一种基于2D BacterialGrowth的数字置乱方法(记为方法1)具体步骤如下:
第1步:设定迷宫初始范围为Sinit=()m×n和迷宫有效区域Smaze=(si,j)m×n,对于若则初始si,j=-1,反之则标记si,j=0表示该节点未访问,若si,j>0表示该节点已访问,统计有效区域范围内的节点数量Nummaze=count(Smaze);
第2步:对于记si,j.d,d=0,1,2,3依次为节点si,j的下方、右方、上方和左方墙,初始化si,j.d=-1,d=0,1,2,3,-1表示为有墙,0表示无墙;
第3步:选择特定的随机数发生器y=RG(x),设定随机数发生器初始值RG.init=seed,初始化已访问迷宫节点列表Aupdate=Φ,记当前已访问节点数量Numvisited,Numvisited=0;
第4步:随机选取标记将加入Aupdate,即Numvisited=Numvisited+1;
第5步:若Numvisited<Nummaze,则循环执行第6步~第9步;
第6步:初始化临时缓冲列表Atemp=Φ,将Atemp=Aupdate,按随机数发生器随机产生a,b∈[0,Atemp.length-1],并且满足gcd(a,Atemp.length)=1,即a和Atemp.length互素;
第7步:对于每个index=(a·i+b)modAtemp.length,i∈[0,Atemp.length-1],取索引位置的节点sx,y=Atemp.at(index);
第8步:若sx,y的周围相邻节点sx+1,y,sx,y+1,sx-1,y,sx,y-1存在Smaze范围内未访问节点,则按随机数发生器随机选择1个未访问的节点,记为sx′,y′;
第9步:将sx,y和sx′,y′之间的分割墙标记为0,标记sx′,y′=1,将sx′,y′加入Aupdate,即Aupdate=Aupdate.add(sx′,y′),Numvisited=Numvisited+1;
第10步:利用Aupdate构造Smaze=(si,j)m×n范围内的所有节点间的映射关系,从而将Smaze=(si,j)m×n范围内的所有节点置乱。
本发明方法1中的Aupdate(0)为序列中的第1个元素,为迷宫的初始节点,Aupdate.length等价为迷宫有效区域内的所有节点数量。对于同样的Smaze,输入不同的选定不同的y=RG(x)和RG.init,将产生不同的Aupdate。
结合上述方法和不同映射方法得到用于任意封闭连通区域的置乱方法,如方法2和方法3。
方法2基于2D BacterialGrowth迷宫排列生成的节点更新序列置乱方法:
第1步:设定Sinit=()m×n和Smaze=(si,j)m×n,对于若si,j∈Smaze,则初始si,j=0,反之则标记si,j=-1,将Sinit复制为T=(ti,j)m×n;
第2步:随机选取作为迷宫的初始节点,选取随机数发生器y=RG(x),设定初始值RG.init=seed按方法1生成Aupdate;
第3步:输入整数作为映射偏移量ll,llmodAupdate.length≠0,将其按式(1)规范到(-Aupdate.length,Aupdate.length)范围内的整数,按式(2)计算index;
ll=llmodAupdate.length(1)
第4步:对于按式(3)将tx,y=si,j(若将tx,y=si,j修改为si,j=tx,y,则对应为方法2的逆变换);
第5步:输出T=(ti,j)m×n。
方法2第3步若llmodAupdate.length=0,则对应为si,j=ti,j,为自身到自身的映射,不能用于置乱。
方法3为基于2D BacterialGrowth迷宫排列生成的节点更新序列复合置乱方法,包括以下步骤:
第1步:设定Sinit=()m×n和Smaze=(si,j)m×n,对于若si,j∈Smaze,则初始si,j=0,反之则标记si,j=-1,将Sinit复制为T=(ti,j)m×n;
第2步:随机选取作为迷宫的初始节点,选取随机数发生器y=RG0(x),y=RG1(x),设定随机初始值RG0.init=seed0,RG1.init=seed1按方法1分别生成迷宫节点更新序列
第3步:输入任意整数作为映射偏移量ll,并将其按式(4)规范到范围内的整数,按式(5)计算index;
第4步:对于按式(6)将tx,y=si,j(若将tx,y=si,j修改为si,j=tx,y,则对应为方法3的逆变换);
第5步:输出T=(ti,j)m×n。
若方法3第2步中输入相同的迷宫初始节点,选取同1个随机发生器,设定相同的初始值,则方法3退化为方法2。
传统的置乱研究,针对的对象一般为数字图像。数字图像是自然图像的离散采样化,记图像P的像素矩阵为P=(pi,j)m×n,记24位图像P24的R、G、B通道矩阵分别为P24.R=(ri,j)m×n、P24.G=(gi,j)m×n和P24.B=(bi,j)m×n;记8位和24位图像P8,P24的位面立方体分别为P8.W=(wi,j,k)m×n×8和P24.W=(wi,j,k)m×n×24;对于8位图像P8,其对应的位面可依次记为对于24位图像P24,其对应的位面可依次记为其中每个位面等价为单色图像的像素矩阵;记24位图像P24对应的RGB立方体为P24.C=(ci,j,k)m×n×3;记24位图像P24对应的RGB通道立方体分别为和
本发明结合方法2、方法3给出6种基于2D DFS迷宫更新序列和复合更新序列的图像置乱方法,提出6种图像置乱方法,如方法4~方法9所示。
方法4基于2D BacterialGrowth迷宫节点更新序列的图像置乱方法:
第1步:读取待置乱图像像素矩阵P=(pi,j)m×n作为Sinit,在Sinit上选取特定区域作为Smaze;
第2步:选取作为迷宫的初始节点,选取随机数发生器y=RG(x),设定初始值RG.init=seed和映射偏移量ll;
第3步:利用方法2输出置乱后的矩阵P′=(p′i,j)m×n,将其写为置乱后的图像(若将步骤3方法2修改为方法2逆变换,则对应为方法4的逆变换)。
方法5基于2D BacterialGrowth迷宫节点更新序列复合的图像置乱方法:
第1步:读取待置乱图像像素矩阵P=(pi,j)m×n作为Sinit,在Sinit上选取特定区域作为Smaze;
第2步:选取作为迷宫的初始节点,选取随机数发生器y=RG0(x),y=RG1(x),设定初始值RG0.init=seed0,RG1.init=seed1和映射偏移量ll;
第3步:利用方法3输出置乱后的矩阵P′=(p′i,j)m×n将其写为置乱后的图像(若将步骤3方法3修改为方法3逆变换,则对应为方法5的逆变换)。
方法6基于2D BacterialGrowth迷宫节点更新序列的图像R、G、B通道置乱方法:
第1步:读取24位图像R、G、B通道矩阵P24.R=(ri,j)m×n、P24.G=(gi,j)m×n和P24.B=(bi,j)m×n,将其分别作为在选取特定区域作为
第2步:选取分别作为R、G、B通道的初始节点,选取随机数发生器y=RGR(x),y=RGG(x),y=RGB(x),设定初始值RGR.init=seedR,RGG.init=seedG,RGB.init=seedB和映射偏移量llR,llG,llB;
第3步:利用方法2,依次输出置乱后的矩阵R′,G′,B′写为置乱后的图像(若将步骤3方法2修改为方法2逆变换,则对应为方法6的逆变换)。
方法7为基于2D BacterialGrowth迷宫节点更新序列复合的图像R、G、B通道置乱方法:
第1步:读取24位图像R、G、B通道矩阵P24.R=(ri,j)m×n、P24.G=(gi,j)m×n和P24.B=(bi,j)m×n,将其分别作为在选取特定区域作为
第2步:选取分别作为R、G、B通道迷宫的初始节点,选取随机数发生器设定初始值和映射偏移量llR,llG,llB;
第3步:利用方法3,依次输出置乱后的矩阵R′,G′,B′,将其写为置乱后的图像(若将步骤3方法3修改为方法3逆变换,则对应为方法7的逆变换)。
方法8为基于2D BacterialGrowth迷宫节点更新序列的图像比特位面置乱方法:
第1步:读取待置乱图像比特位面,对于8位图像P8,将依次作为对于24位图像P24,将依次作为在上选取特定区域作为
第2步:选取作为迷宫的初始节点,选取随机数发生器y=RGkk(x),设定初始值RGkk.init=seedkk和映射偏移量llkk;
第3步:利用方法2,依次输出置乱后的矩阵,对于8位图像P8,将W′kk,kk=0,…,7写为置乱后的图像,对于24位图像P24,将W′kk,kk=0,…,23写为置乱后的图像(若将步骤3方法2修改为方法2逆变换,则对应为方法8的逆变换)。
方法9为基于2D BacterialGrowth迷宫节点更新序列复合的图像比特位面置乱方法:
第1步:读取待置乱图像比特位面,对于8位图像P8,将依次作为对于24位图像P24,将依次作为在上选取特定区域作为
第2步:选取作为迷宫的初始节点,选取随机数发生器设定初始值和映射偏移量llkk;
第3步:利用方法3,依次输出置乱后的矩阵,对于8位图像P8,将W′kk,kk=0,…,7写为置乱后的图像,对于24位图像P24,将W′kk,kk=0,…,23写为置乱后的图像。(若将步骤3方法3修改为方法3逆变换,则对应为方法9的逆变换)。
以下结合附图具体实施例对本发明方法进行详细说明:
以Delphi XE5作为案例实施环境,结合附图对本发明实施方式进行详细说明,但不局限于本实施案例,其中图1是方法1流程图,图2是方法2流程图,图3是方法3流程图。
参考图1的过程如下:
第1步:假定迷宫的初始范围设置为Sinit=()3×3,迷宫的有效区域Smaze=(si,j)3×3设置为Sinit左上角2×2网格区域内,此时Smaze=(si,j)3×3范围内的有效节点数量为4,所以Nummaze=4:
第2步:对于初始化si,j.d=-1,d=0,1,2,3且由于s0,0,s0,1,s1,0,s1,1∈Smaze,所以(i,j)={(0,0),(0,1),(1,0),(1,1)},经过以上处理,初始迷宫等价为表1:
表1
第3步:选择y=RG(x),设定初始值RG.init=seed,这里以Delphi XE5线性同余发生器为例,线性同余发生器的随机初始值为randseed,可将其设置为不同的整数,不同的随机数发生器将导致生成不同的伪随机数,从而产生不同的迷宫,对应不同的迷宫排列,初始化Aupdate=Φ,Numvisited=0;
第4步:选取这里以s0,0为迷宫初始节点,则x=0,y=0,将(x,y)加入Aupdate,则Aupdate=〈(0,0)〉,此时Numvisited=1,则当前迷宫等价为表2:
表2
第5步:此时(Numvisited=1)<(Nummaze=4),因此循环执行第6步~第9步;
第6步:初始化临时缓冲列表Atemp=Φ,将Atemp=Aupdate,此时若Aupdate=〈(0,0)〉,则Atemp=〈(0,0)〉,因此Atemp.length=1,故按随机数发生器随机产生a,b∈[0,Atemp.length-1]只能为0,并且a=0和Atemp.length=1互素;
第7步:对于每个index=(a·i+b)modAtemp.length,i∈[0,Atemp.length-1],取索引位置的节点sx,y=Atemp.at(index),此时由于a,b=0,故index=0,所以sx,y=s0,0;
第8步:若sx,y的周围相邻节点sx+1,y,sx,y+1,sx-1,y,sx,y-1存在Smaze范围内未访问节点,则按随机数发生器随机选择1个未访问的节点,记为sx′,y′,此时s0,0周围未访问的Smaze范围内节点有s1,0和s0,1,若选择s1,0,则sx′,y′=s1,0;
第9步:将sx,y和sx′,y′之间的分割墙标记为0,标记sx′,y′=1,将sx′,y′加入Aupdate,此时Aupdate=<(0,0),(1,0)>,Numvisited=2,当前迷宫等价为表3:
表3
不断地执行第6步~第9步,直至第5步不被满足,此时可由Aupdate给出所有节点的排列,可在此基础上进一步构造节点之间的映射关系,从而用于置乱。
由于传统的BacterialGrowth迷宫生成方法往往不限制迷宫生成区域,产生的迷宫往往是规则区域迷宫如图5所示;图6是对传统的BacterialGrowth迷宫生成方法以图4的空心云状图和人像前景为迷宫有效区域产生的2D任意连通封闭区域迷宫;图7则是以图4五边形设定区域按方法1产生的排列对应的前30个元素。
参考图2的过程如下:
第1步:假设将Sinit设定为图8a对应的5×6矩阵,将Smaze设置为Sinit整个区域,则Smaze=(0)5×6,将Sinit复制为T=(ti,j)5×6,则T=(ti,j)5×6对应为图8a矩阵;
第2步:假定按方法1生成的Aupdate如图8b所示,图8b第0行是x坐标,第1行是y坐标,第2行是Aupdate中的节点序号;
第3步:假定输入ll=3,则按式(1)和式(2)可得ll=3mod 30=3,由于ll>0,故index=3;
第4步:由Aupdate和index=3,则式(3)构造的映射规则可描述为图8c,前两行对应为(x,y),后两行对应为(i,j),与之等价的逆映射可描述为图8d,前两行对应为(i,j),后两行对应为(x,y),则按式(3)可将图8a置乱为图8e,则按式(3)对应的逆映射可将图8e置乱为图8f,图8a和图8f等价,即置乱后的矩阵可完整恢复;
第5步:将映射后的结果T=(ti,j)5×6输出。
参考图3的过程如下:
第1步:假设将Sinit设定为图9a对应的5×6矩阵,将Smaze设置为Sinit整个区域,则Smaze=(0)5×6,将Sinit复制为T=(ti,j)5×6,则T=(ti,j)5×6对应为图9a矩阵;
第2步:假定按方法1生成的如图9b和9c所示,图9b和9c第0行是x坐标,第1行是y坐标,第2行分别是中的节点序号;
第3步:假定输入ll=3,则按式(4)和式(5)可得ll=3mod 30=3,由于ll>0,故index=3;
第4步:由和index=3,则式(6)构造的映射规则可描述为图9d,前两行对应为(x,y),后两行对应为(i,j),与之等价的逆映射可描述为图9e,前两行对应为(i,j),后两行对应为(x,y),则按式(6)可将图9a置乱为图9f,则按式(6)对应的逆映射可将图9f置乱为图9g,图9a和图9g等价,即置乱后的矩阵可完整恢复;
第5步:输出T=(ti,j)5×6。
方法4将待置乱图像P的像素矩阵P=(pi,j)m×n作为Sinit,在Sinit上选取特定区域作为Smaze,在此基础上应用方法2置乱的结果,图10a~10g是以图4b~4h为测试例对方法4验证的结果,图10h对应的是恢复结果。
方法5是将待置乱图像P的像素矩阵P=(pi,j)m×n作为Sinit,在Sinit上选取特定区域作为Smaze,在此基础上应用方法3置乱的结果,图11a~11g是以图4b~4h为测试例对方法5验证的结果,图11h对应的是恢复结果。
方法6是将24位图像R、G、B通道矩阵P24.R=(ri,j)m×n、P24.G=(gi,j)m×n和P24.B=(bi,j)m×n分别作为在选取特定区域作为在此基础上应用方法2置乱的结果,图12a~12g是以图4b~4h为测试例对方法6验证的结果,图12h对应的是恢复结果。
方法7是将24位图像R、G、B通道矩阵P24.R=(ri,j)m×n、P24.G=(gi,j)m×n和P24.B=(bi,j)m×n分别作为在选取特定区域作为在此基础上应用方法3置乱的结果,图13a~13g是以图4b~4h为测试例对方法7验证的结果,图13h对应的是恢复结果。
方法8是将待置乱图像比特位面依次作为在上选取特定区域作为在此基础上应用方法2置乱的结果,图14a~14g是以图4b~4h为测试例对方法8验证的结果,图14h对应的是恢复结果。
方法9是将待置乱图像比特位面依次作为在上选取特定区域作为在此基础上应用方法3置乱的结果,图15a~15g是以图4b~4h为测试例对方法9验证的结果,图15h对应的是恢复结果。
Claims (9)
1.一种基于2D BacterialGrowth迷宫的数字置乱方法,其特征在于包括以下步骤:
第1步:设定迷宫初始范围Sinit=()m×n和迷宫有效区域Smaze=(si,j)m×n,Smaze=(si,j)m×n为图像上的2D局部不规则封闭连通区域,对于若则初始si,j=-1,反之则标记si,j=0表示节点si,j未访问,若si,j>0表示节点si,j已访问,统计有效区域Smaze范围内的节点数量Nummaze=count(Smaze);
第2步:对于记si,j.d,d=0,1,2,3依次为节点si,j的下方墙、右方墙、上方墙和左方墙,初始化si,j.d=-1,d=0,1,2,3,即将Smaze范围内的所有节点以墙进行分隔,si,j.d=-1表示有墙,si,j.d=0表示无墙;
第3步:选择随机数发生器y=RG(x),设定随机数发生器初始值RG.init=seed,初始化已访问迷宫节点列表Aupdate=Φ,记当前已访问节点数量Numvisited,Numvisited=0;
第4步:随机选取标记将加入Aupdate,即Numvisited=Numvisited+1;
第5步:若Numvisited<Nummaze,则循环执行第6步~第9步;
第6步:初始化临时缓冲列表Atemp=Φ,将Atemp=Aupdate,按随机数发生器随机产生a,b∈[0,Atemp.length-1],并且满足gcd(a,Atemp.length)=1,即a和Atemp.length互素;
第7步:对于每个index=(a·i+b)modAtemp.length,i∈[0,Atemp.length-1],取索引位置的节点sx,y=Atemp.at(index);
第8步:若sx,y的周围相邻节点sx+1,y,sx,y+1,sx-1,y,sx,y-1存在未访问的节点,则按随机数发生器随机选择1个未访问的节点,记为sx′,y′;
第9步:将sx,y和sx′,y′之间的分割墙标记为0,标记sx′,y′=1,将sx′,y′加入Aupdate,即Aupdate=Aupdate.add(sx′,y′),Numvisited=Numvisited+1;
第10步:利用Aupdate构造Smaze=(si,j)m×n范围内所有节点间的节点位置映射关系,从而将图像上2D局部不规则封闭连通区域Smaze=(si,j)m×n范围内的所有节点进行整体置乱。
2.如权利要求1所述的基于2D BacterialGrowth迷宫的数字置乱方法,其特征在于第10步中映射方法具体包括以下步骤:
第10.1步:选取整数作为映射偏移量ll,llmodAupdate.length≠0,将其按式(1)规范到(-Aupdate.length,Aupdate.length)范围内的整数,按式(2)计算index′;
ll=llmodAupdate.length (1)
第10.2步:将Sinit复制为T=(ti,j)m×n;
第10.3步:对于按式(3)将Sinit上(i,j)位置节点赋值给tx,y;
第10.4步:将第10.3步得到的结果作为新T输出。
3.如权利要求1所述的基于2D BacterialGrowth迷宫的数字置乱方法,其特征在于:
选取随机数发生器y0=RG0(x)作为第3步中的随机数发生器y=RG(x),将seed0作为随机发生器RG的初始值RG.init;
从Smaze中选取一个节点作为第4步中的
将第10步对应的节点更新序列Aupdate作为
选取随机数发生器y1=RG1(x)作为第3步中的随机数发生器y=RG(x),将seed1作为随机发生器RG的初始值RG.init;
从Smaze中再选取一个节点作为第4步中的
将第10步对应的节点更新序列Aupdate作为
第10步中映射方法具体包括以下步骤:
第10.1步:输入任意整数作为映射偏移量ll,并将其按式(4)规范到范围内的整数,按式(5)计算index′;
第10.2步:将Sinit复制为T=(ti,j)m×n;
第10.3步:对于按式(6)将Sinit上(i,j)位置节点赋值给tx,y;
第10.4步:将第10.3步得到的结果作为新T输出。
4.如权利要求2所述的基于2D BacterialGrowth迷宫的数字置乱方法,其特征在于:
将待置乱图像的像素矩阵P=(pi,j)m×n作为第1步中的Sinit;
将第10.4步输出的T作为输出的置乱后矩阵P′=(p′i,j)m×n,将P′=(p′i,j)m×n写为置乱后的图像。
5.如权利要求3所述的基于2D BacterialGrowth迷宫的数字置乱方法,其特征在于:
将待置乱图像的像素矩阵P=(pi,j)m×n作为第1步中的Sinit;
将第10.4步输出的T作为输出的置乱后矩阵P′=(p′i,j)m×n,将P′=(p′i,j)m×n写为置乱后的图像。
6.如权利要求2所述的基于2D BacterialGrowth迷宫的数字置乱方法,其特征在于:
将24位图像中的R通道矩阵P24.R=(ri,j)m×n作为第1步中的Sinit,记为在上选取2维局部不规则封闭连通区域作为第1步中的Smaze;
选取随机数发生器yR=RGR(x)作为第3步中的随机数发生器y=RG(x),将seedR作为随机发生器RG的初始值RG.init;
将作为第4步的初始节点
将映射偏移量llR作为第10.1步中的偏移量ll;
将第10.4步输出的T作为输出的置乱后的R通道矩阵R′;
将24位图像中的G通道矩阵P24.G=(gi,j)m×n作为第1步中的Sinit,记为在上选取2维局部不规则封闭连通区域作为第1步中的Smaze;
选取随机数发生器yG=RGG(x)作为第3步中的随机数发生器y=RG(x),将seedG作为随机发生器RG的初始值RG.init;
将作为第4步的初始节点
将映射偏移量llG作为第10.1步中的偏移量ll;
将第10.4步输出的T作为输出的置乱后的G通道矩阵G′;
将24位图像中的B通道矩阵P24.B=(bi,j)m×n作为第1步中的Sinit,记为在上选取2维局部不规则封闭连通区域作为第1步中的Smaze;
选取随机数发生器yB=RGB(x)作为第3步中的随机数发生器y=RG(x),将seedB作为随机发生器RG的初始值RG.init;
将作为第4步的初始节点
将映射偏移量llB作为第10.1步中的偏移量ll;
将第10.4步输出的T作为输出的置乱后的B通道矩阵B′;
将R′,G′,B′写为置乱后的图像。
7.如权利要求3所述的基于2D BacterialGrowth迷宫的数字置乱方法,其特征在于:在进行图像置乱时,具体包括以下步骤:
将24位图像中的R通道矩阵P24.R=(ri,j)m×n作为第1步中的Sinit,记为在上选取2维局部不规则封闭连通区域作为第1步中的Smaze;
选取随机数发生器分别作为第3步中的随机数发生器y=RG(x),将分别作为随机发生器RG的初始值RG.init;
将分别作为第4步的初始节点
将映射偏移量llR作为第10.1步中的偏移量ll;
将第10.4步输出的T作为输出的置乱后的R通道矩阵R′;
将24位图像中的G通道矩阵P24.G=(gi,j)m×n作为第1步中的Sinit,记为在上选取2维局部不规则封闭连通区域作为第1步中的Smaze;
选取随机数发生器分别作为第3步中的随机数发生器y=RG(x),将分别作为随机发生器RG的初始值RG.init;
将分别作为第4步的初始节点
将映射偏移量llG作为第10.1步中的偏移量ll;
将第10.4步输出的T作为输出的置乱后的G通道矩阵G′;
将24位图像中的B通道矩阵P24.B=(bi,j)m×n作为第1步中的Sinit,记为在上选取2维局部不规则封闭连通区域作为第1步中的Smaze;
选取随机数发生器分别作为第3步中的随机数发生器y=RG(x),将分别作为随机发生器RG的初始值RG.init;
将分别作为第4步的初始节点
将映射偏移量llB作为第10.1步中的偏移量ll;
将第10.4步中输出的T作为输出的置乱后的B通道矩阵B′;
将R′,G′,B′写为置乱后的图像。
8.如权利要求2所述的基于2D BacterialGrowth迷宫的数字置乱方法,其特征在于:
对于8位图像P8,记图像位面为
将图像的第kk个位面作为第1步中的Sinit,记为在上选取2维局部不规则封闭连通区域
选取随机数发生器ykk=RGkk(x)作为第3步中的随机数发生器y=RG(x),将seedkk作为随机发生器RG的初始值RG.init;
选取作为第4步的初始节点
将映射偏移量llkk作为第10.1步中的偏移量ll;
将第10.4步中输出的T作为输出的置乱后的位面W′kk;
将W′kk,kk=0,1,…,7写为置乱后的图像;
对于24位图像P24,记图像位面为
将图像的第kk个位面作为第1步中的Sinit,记为在上选取2维局部不规则封闭连通区域
选取随机数发生器ykk=RGkk(x)作为第3步中的随机数发生器y=RG(x),将seedkk作为随机发生器RG的初始值RG.init;
选取作为第4步的初始节点
将映射偏移量llkk作为第10.1步中的偏移量ll;
将第10.4步中输出的T作为输出的置乱后的位面W′kk;
将W′kk,kk=0,1,…,23写为置乱后的图像。
9.如权利要求3所述的基于2D BacterialGrowth迷宫的数字置乱方法,其特征在于:在进行图像置乱时,具体包括以下步骤:
对于8位图像P8,记图像位面为
将图像的第kk个位面作为第1步中的Sinit,记为在上选取2维局部不规则封闭连通区域
选取随机数发生器分别作为第3步中的随机数发生器y=RG(x),将作为随机发生器RG的初始值RG.init;
选取分别作为第4步的初始节点
将映射偏移量llkk作为第10.1步中的偏移量ll;
将第10.4步中输出的T作为输出的置乱后的位面W′kk;
将W′kk,kk=0,1,…,7写为置乱后的图像;
对于24位图像P24,记图像位面为
将图像的第kk个位面作为第1步中的Sinit,记为在上选取2维局部不规则封闭连通区域
选取随机数发生器分别作为第3步中的随机数发生器y=RG(x),将作为随机发生器RG的初始值RG.init;
选取分别作为第4步的初始节点
将映射偏移量llkk作为第10.1步中的偏移量ll;
将第10.4步中输出的T作为输出的置乱后的位面W′kk;
将W′kk,kk=0,1,…,23写为置乱后的图像。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410747724.2A CN104361550B (zh) | 2014-12-08 | 2014-12-08 | 一种基于2D BacterialGrowth迷宫的数字置乱方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410747724.2A CN104361550B (zh) | 2014-12-08 | 2014-12-08 | 一种基于2D BacterialGrowth迷宫的数字置乱方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104361550A CN104361550A (zh) | 2015-02-18 |
CN104361550B true CN104361550B (zh) | 2019-05-03 |
Family
ID=52528808
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410747724.2A Active CN104361550B (zh) | 2014-12-08 | 2014-12-08 | 一种基于2D BacterialGrowth迷宫的数字置乱方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104361550B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114979404B (zh) * | 2022-07-27 | 2022-12-13 | 荣耀终端有限公司 | 图像加密方法及相关装置 |
CN117217399B (zh) * | 2023-11-08 | 2024-01-30 | 中国科学院空天信息创新研究院 | 基于微电极阵列的生物智能辅助迷宫路径规划装置和方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103606126A (zh) * | 2013-11-28 | 2014-02-26 | 辽宁大学 | 一种基于三维Logistic映射的图像双重置乱方法 |
-
2014
- 2014-12-08 CN CN201410747724.2A patent/CN104361550B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103606126A (zh) * | 2013-11-28 | 2014-02-26 | 辽宁大学 | 一种基于三维Logistic映射的图像双重置乱方法 |
Non-Patent Citations (2)
Title |
---|
maze Generation: Hunt-and-Kill algorithm;Jamis Buck;《http://weblog.jamisbuck.org/2011/1/24/maze-generation-hunt-and-kill-algorithm.html》;20110124;第1-9页 |
基于迷宫置换和Logistic混沌映射的图像加密算法;杨璐等;《计算机应用》;20140710;第34卷(第7期);第1902-1908页 |
Also Published As
Publication number | Publication date |
---|---|
CN104361550A (zh) | 2015-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Huang et al. | Implementation of gray image encryption with pixel shuffling and gray-level encryption by single chaotic system | |
CN104851070B (zh) | 一种基于前景和背景分离的图像加密和解密方法 | |
CN104766264B (zh) | 一种分块双层自适应扩散图像加密方法 | |
CN106301760B (zh) | 一种基于混沌映射的3d点云模型加密方法 | |
CN106228504B (zh) | 基于明文和密钥构造加密参数的数字图像加密方法 | |
CN107239708A (zh) | 一种基于量子混沌映射和分数域变换的图像加密方法 | |
CN107590394B (zh) | 一种基于混沌映射和比特重组的图像加密方法 | |
CN107896144A (zh) | 一种基于混沌映射的3d纹理模型加密方法 | |
CN106651735A (zh) | 一种基于混沌理论的数字图像并行加密方法 | |
CN107067359A (zh) | 基于布朗运动与DNA编码的Contourlet域图像共享方法 | |
CN104361550B (zh) | 一种基于2D BacterialGrowth迷宫的数字置乱方法 | |
CN114978466A (zh) | 类分形模型和希尔伯特同步置乱扩散的加密方法 | |
CN103559678A (zh) | 一种shp线面图层数据的置乱与还原方法 | |
CN105118017A (zh) | 一种基于二维Henon映射的灰度图像加密方法 | |
CN104469079B (zh) | 一种基于2D随机Prim迷宫的数字置乱方法 | |
CN104361549B (zh) | 一种基于3D BacterialGrowth迷宫的数字置乱方法 | |
CN104376527B (zh) | 一种基于3D随机Prim迷宫的数字置乱方法 | |
CN104394298B (zh) | 一种基于3D HuntKill迷宫的数字置乱方法 | |
CN104463771B (zh) | 一种基于3D Wilson迷宫的数字置乱方法 | |
CN104361551B (zh) | 一种基于2D Wilson迷宫的数字置乱方法 | |
CN104376528B (zh) | 一种基于2D Growing Tree迷宫的数字置乱方法 | |
CN104463770B (zh) | 一种基于2D HuntKill迷宫的数字置乱方法 | |
CN104463769B (zh) | 一种基于3d dfs迷宫的数字置乱方法 | |
CN104408683B (zh) | 一种基于3D Growing Tree迷宫的数字置乱方法 | |
CN104361552B (zh) | 一种基于2d dfs迷宫的数字置乱方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |