CN104361549B - 一种基于3D BacterialGrowth迷宫的数字置乱方法 - Google Patents
一种基于3D BacterialGrowth迷宫的数字置乱方法 Download PDFInfo
- Publication number
- CN104361549B CN104361549B CN201410747723.8A CN201410747723A CN104361549B CN 104361549 B CN104361549 B CN 104361549B CN 201410747723 A CN201410747723 A CN 201410747723A CN 104361549 B CN104361549 B CN 104361549B
- Authority
- CN
- China
- Prior art keywords
- labyrinth
- init
- scramble
- image
- node
- 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
- Image Processing (AREA)
Abstract
本发明提供一种基于3D BackterialGrowth迷宫的数字置乱方法,预先对BackterialGrowth迷宫生成区域进行人为限定,从而可用于人为指定的任意3D封闭连通区域,同时按迷宫节点更新顺序对迷宫设定区域的每个节点赋予唯一的编号,由此产生迷宫设定区域所有节点的排列,在此基础上构造了基于3D BackterialGrowth迷宫节点更新序列和节点更新序列复合的置乱方法,从而可将所有节点置乱。本发明所给出的置乱方法具有普适性和灵活性,在使用过程中不存在任何限制,不仅能应用于传统置乱方法所针对的规则区域,例如正方形和矩形区域,也可用于任意选定的3D封闭连通不规则区域置乱。本发明也给出了用于图像位面立方体,RGB立方体和RGB通道立方体的图像置乱方法。
Description
技术领域
本发明主要涉及信息安全和数字信号处理等交叉研究领域,具体为基于BacterialGrowth迷宫生成策略的数字置乱方法,特别涉及一种基于3D BacterialGrowth迷宫的数字置乱方法。
背景技术
近年来,伴随着计算机和网络技术的发展,越来越多的图像在网络中传输,在给用户提供方便的同时,也带来了一系列的安全隐患。对图像的不当使用和恶意篡改,不仅涉及个人隐私,也会给社会带来严重负面影响。保障图像的核心技术是数字图像加密。
在数字图像加密领域,研究最为广泛和灵活的一类图像加密方法,就是在同一空间内,对图像的重编码技术,即图像置乱技术。
随着计算机技术的飞速发展,数字图像置乱技术已成为数字安全传输和保密的主要手段。其基本思路就是把一幅图像经过一定的数学变换,转变成面目全非的另一幅图像,以起到对图像的安全保密作用。
数字图像置乱也是目前隐密术、数字水印、信息分存和可视密码技术中,一项关键预处理技术。已受到国内外学者的普遍重视,并取得丰硕的研究成果。
数字图像置乱最初来源于有线电视信号加密,早期的置乱在位置空间进行,用于对图像像素位置打乱,这些置乱方法包括行倒置置乱、行平移置乱、行置换置乱、行循环置乱、行分量切割置乱等。随着置乱技术的不断发展,目前已提出的置乱方法多种多样,既可用于位置置换,也可用于灰度替代。
当前已提出的置乱方法主要有:基于离散元素序列的置乱方法、基于扫描路线的置乱方法、基于遍历矩阵的置乱方法、基于迭代函数系统的置乱方法、基于离散混沌映射的置乱方法、基于中国拼图的置乱方法和基于矩阵变换的置乱方法等。
目前尽管已提出了多种置乱方法,但传统置乱方法大多只能用于规则区域置乱,例如正方形和长方形区域,而不能对图像选定的任意不规则区域进行置乱。
例如基于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])mod N拓展为X[i]=(AX[i-1])modN,N为有限个尺度构成的尺度向量,提出了2维非等长变换存在性判据,2维双尺度矩形映射的特殊形式-2维三角映射,以及2维双尺度矩形映射一般性构造方法和多尺度三角映射。尽管X[i]=(AX[i-1])modN可用于任意矩形图像置乱,并可对图像位置和灰度同时置乱,但所提出的方法只能对规则区域进行置乱,不能用于任意选定的不规则区域置乱。
传统的迷宫生成方法在人工智能和优化计算领域应用较广,一般用于动态复杂场景的模拟和仿真,在信息安全领域涉及较少,在文献基于迷宫置换和Logistic混沌映射的图像加密算法(计算机应用,2014,34(7):1902-1908),我们探讨了基于DFS迷宫节点入栈顺序和行优先扫描顺序高效产生置换的方法,将迷宫生成方法应用于任意矩形图像加密,但所提出的方法不能应用于图像的任意连通不规则封闭区域加密。
发明内容
本发明的目的在于克服现有技术缺陷,提供一种基于3D BacterialGrowth迷宫的数字置乱方法,该方法可用于3D任意连通封闭区域数据置乱。
为实现上述目的,本发明采用以下技术方案:
一种基于3D BacterialGrowth迷宫的数字置乱方法,包括以下步骤:
第1步:设定迷宫初始范围为Sinit=()m×n×l和迷宫有效区域Smaze=(si,j,k)m×n×l为图像上的局部任意3D封闭连通区域,对于若则初始si,j,k=-1,反之则标记si,j,k=0表示该节点未访问,若si,j,k>0表示该节点已访问,统计有效区域范围内的节点数量Nummaze=count(Smaze);
第2步:对于记si,j,k.d,d=0,1,2,3,4,5依次为节点si,j,k的下方墙、右方墙、上方墙、左方墙、底部墙和顶部墙,初始化si,j,k.d=-1,d=0,1,2,3,4,5,-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,z=Atemp.at(index);
第8步:若sx,y,z的周围相邻节点sx+1,y,z,sx,y+1,z,sx-1,y,z,sx,y-1,z,sx,y,z-1,sx,y,z+1存在Smaze范围内未访问节点,则按随机数发生器随机选择1个未访问的节点,记为sx′,y′,z′;
第9步:将sx,y,z和sx′,y′,z′之间的分割墙标记为0,标记sx′,y′,z′=1,将sx′,y′,z′加入Aupdate,即Aupdate=Aupdate.add(sx′,y′,z′),Numvisited=Numvisited+1;
第10步:利用Aupdate构造Smaze=(si,j,k)m×n×l范围内所有节点间的节点位置映射关系,从而将图像上任意3D封闭连通区域Smaze=(si,j,k)m×n×l范围内所有节点整体置乱
作为本发明进一步优选方案,第10步中映射方法具体包括以下步骤:
第10.1步:选取整数作为映射偏移量ll,llmodAupdate.length≠0,将其按式(1)规范到(-Aupdate.length,Aupdate.length)范围内的整数,按式(2)计算index′;
ll=llmodAupdate.length (1)
第10.2步:将Sinit复制为T=(ti,j,k)m×n×l;
第10.3步:对于按式(3)将si,j,k赋值给tx,y,z;
第10.4步:输出T=(ti,j,k)m×n×l。
作为本发明进一步优选方案,选取两个随机数发生器y0=RG0(x),y1=RG1(x),设定随机初始值RG0.init=seed0,RG1.init=seed1分别生成迷宫节点更新序列
第10步中映射方法具体包括以下步骤:
第10.1步:输入任意整数作为映射偏移量ll,并将其按式(4)规范到范围内的整数,按式(5)计算index′;
第10.2步:将Sinit复制为T=(ti,j,k)m×n×l;
第10.3步:对于按式(6)将si,j,k赋值给tx,y,z;
第10.4步:输出T=(ti,j,k)m×n×l。
作为本发明进一步优选方案,在进行图像置乱时,具体包括以下步骤:
第(1)步:读取待置乱图像的位面立方体,对于8位图像P8,将P8.W=(wi,j,k)m×n×8作为Sinit,对于24位图像,将P24.W=(wi,j,k)m×n×24作为Sinit,在Sinit上选取特定区域作为Smaze;
第(2)步:选取作为迷宫的初始节点,选取随机数发生器y=RG(x),设定初始值RG.init=seed和映射偏移量ll;
第(3)步:输出置乱后的位面立方体,对于8位图像,将(w′i,j,k)m×n×8写为置乱后的图像,对于24位图像,将(w′i,j,k)m×n×24写为置乱后的图像。
作为本发明进一步优选方案,在进行图像置乱时,具体包括以下步骤:
第(1)步:读取待置乱图像的位面立方体,对于8位图像P8,将P8.W=(wi,j,k)m×n×8作为Sinit,对于24位图像,将P24.W=(wi,j,k)m×n×24作为Sinit,在Sinit上选取特定区域作为Smaze;
第(2)步:选取作为迷宫的初始节点,选取随机数发生器y0=RG0(x),y1=RG1(x),设定初始值RG0.init=seed0,RG1.init=seed1和映射偏移量ll;
第(3)步:输出置乱后的位面立方体,对于8位图像,将(w′i,j,k)m×n×8写为置乱后的图像,对于24位图像,将(w′i,j,k)m×n×24写为置乱后的图像。
作为本发明进一步优选方案,在进行图像置乱时,具体包括以下步骤:
第(1)步:读取待置乱24位图像P24的RGB立方体P24.C=(ci,j,k)m×n×3作为Sinit,在Sinit上选取特定区域作为Smaze;
第(2)步:选取作为迷宫的初始节点,选取随机数发生器y=RG(x),设定初始值RG.init=seed和映射偏移量ll;
第(3)步:输出置乱后的RGB立方体(c′i,j,k)m×n×3,将其写为置乱后的图像。
作为本发明进一步优选方案,在进行图像置乱时,具体包括以下步骤:
第(1)步:读取待置乱24位图像P24的RGB立方体P24.C=(ci,j,k)m×n×3作为Sinit,在Sinit上选取特定区域作为Smaze;
第(2)步:选取作为迷宫的初始节点,选取随机数发生器y0=RG0(x),y1=RG1(x),设定初始值RG0.init=seed0,RG1.init=seed1和映射偏移量ll;
第(3)步:输出置乱后的RGB立方体(c′i,j,k)m×n×3,将其写为置乱后的图像。
作为本发明进一步优选方案,在进行图像置乱时,具体包括以下步骤:
第(1)步:读取待置乱24位图像P24的RGB通道立方体 和将其分别作为初始范围在选取特定区域作为有效区域
第(2)步:选取作为迷宫的初始节点,选取随机数发生器yR=RGR(x),yG=RGG(x),yB=RGB(x),设定初始值RGR.init=seedR,RGG.init=seedG,RGB.init=seedB和映射偏移量llR,llG,llB;
第(3)步:输出置乱后的R、G、B通道立方体和将其写为置乱后的图像。
作为本发明进一步优选方案,在进行图像置乱时,具体包括以下步骤:
第(1)步:读取待置乱24位图像P24的RGB通道立方体 和将其分别作为初始范围在选取特定区域作为有效区域
第(2)步:选取作为迷宫的初始节点,选取随机数发生器设定初始值 和映射偏移量llR,llG,llB;
第(3)步:输出置乱后的R、G、B通道立方体和将其写为置乱后的图像。
本发明同现有技术优点分析:
(1)传统的迷宫生成方法在人工智能和优化计算领域应用较广,一般用于动态复杂场景的模拟和仿真,但在信息安全领域涉及较少,而传统的置乱方法一般将置乱空间局限在特定的尺度上,用于图像规则区域置乱,例如正方形图像和矩形图像以及仅适用于特定尺度图像的规则区域加密,方法不具有普适性,在实施过程中存在使用限制。本发明则将传统的迷宫生成方法引入到信息安全中的置乱处理方法中,在BacterialGrowth迷宫生成方法中添加了迷宫有效区域Smaze约束限制,使其仅在事先选定的3D任意封闭连通区域Smaze上产生迷宫,同时将BacterialGrowth迷宫节点更新顺序以节点更新序列Aupdate输出用于生成排列,利用该排列构造所有节点之间的映射关系,从而将所有节点置乱。
在此基础上本发明还给出了结合具体节点更新序列和节点更新序列复合的数字置乱方法。本发明所给出的置乱方法具有普适性和灵活性,在使用过程中不存在使用限制,不仅可以用于置乱传统置乱方法的规则区域,例如正方形和矩形区域,也可以用于任意选定的3D封闭连通区域。
(2)本发明所给出的置乱方法可单独使用,也可多次迭代,还可将不同方法联合使用,也可和现有的信息隐藏、数字水印、秘密共享和加密策略相结合,结合任意设定的随机数发生器对任意选定的3D连通封闭区域数据提供不同安全级别的多重保护,具备较高的实际应用价值。
(3)同时本发明所针对的对象也不仅仅是图像,可以用于任意封闭连通区域数据的置乱和恢复。
附图说明
图1是本发明具体实施例:方法1一种基于3D BacterialGrowth迷宫的数字置乱方法流程图;
图2是本发明具体实施例:方法2结合具体映射方法的数字置乱方法流程图;
图3是本发明具体实施例:方法3结合另一种映射方法的数字置乱方法流程图;
图4本发明实施例:测试图像(含24位真彩色人像照片和迷宫有效区域设定图像包括五边形、六边形、五角星、心形、闪电形、空心云状图和人像前景等单色图像,其中黑色为迷宫有效区域,所有图像分辨率均为80×60);
图5是传统的BacterialGrowth方法生成80×60迷宫;
图6是本发明对传统的BacterialGrowth方法添加有效区域限制的BacterialGrowth方法生成的迷宫(以图4中的人像前景区域为设定区域,3D迷宫的第3维设定为2);
图7本发明实施例:由图4五边形设定区域产生的排列按方法1中BacterialGrowth法产生的前30个元素排列;
图8本发明实施例:以5×2×3迷宫为例验证方法2(原始矩阵、迷宫生成排列、正映射、逆映射、置乱矩阵和恢复矩阵);
图9本发明实施例:以5×2×3迷宫为例验证方法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生成迷宫不光可以应用于规则区域,例如正方形区域和矩形区域等,同时也可应用于人为指定的任意区域,例如3D封闭连通区域,同时可按迷宫节点更新顺序对迷宫限定区域的每个节点赋予一个唯一的编号,由此可产生一个排列,利用该排列构造所有节点之间的映射关系,从而将所有节点置乱。
本发明一种基于3D BacterialGrowth迷宫的数字置乱方法(记为方法1)具体步骤如下:
第1步:设定迷宫初始范围为Sinit=()m×n×l和迷宫有效区域Smaze=(si,j,k)m×n×l为图像上的局部任意3D封闭连通区域,对于若则初始si,j,k=-1,反之则标记si,j,k=0表示该节点未访问,若si,j,k>0表示该节点已访问,统计有效区域范围内的节点数量Nummaze=count(Smaze);
第2步:对于记si,j,k.d,d=0,1,2,3,4,5依次为节点si,j,k的下方墙、右方墙、上方墙、左方墙、底部墙和顶部墙,初始化si,j,k.d=-1,d=0,1,2,3,4,5,si,j,k.d=-1表示有墙,si,j,k.d=0表示无墙;
第3步:选择特定的随机数发生器y=RG(x),设定随机数发生器初始值RG.init=seed,初始化已访问迷宫节点列表Aupdate=Φ,记当前已访问节点数量Numvisited,Numvisited=0;
第4步:随机选取标记将加入Aupdate,即Aupdate=Aupdate.add(sx0,y0,z0),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,z=Atemp.at(index);
第8步:若sx,y,z的周围相邻节点sx+1,y,z,sx,y+1,z,sx-1,y,z,sx,y-1,z,sx,y,z-1,sx,y,z+1存在Smaze范围内未访问节点,则按随机数发生器随机选择1个未访问的节点,记为sx′,y′,z′;
第9步:将sx,y,z和sx′,y′,z′之间的分割墙标记为0,标记sx′,y′,z′=1,将sx′,y′,z′加入Aupdate,即Aupdate=Aupdate.add(sx′,y′,z′),Numvisited=Numvisited+1;
第10步:利用Aupdate构造Smaze=(si,j,k)m×n×l范围内的所有节点间的节点位置映射关系,从而将图像上3D封闭连通区域Smaze=(si,j,k)m×n×l范围内的所有节点进行整体置乱。
本发明方法1中的Aupdate(0)为序列中的第1个元素,为迷宫的初始节点,Aupdate.length等价为迷宫有效区域内的所有节点数量。对于同样的Smaze,输入不同的sx0,y0,z0∈Smaze,选定不同的y=RG(x)和RG.init,将产生不同的Aupdate。
结合上述方法和不同映射方法得到用于任意封闭连通区域的置乱方法,如方法2和方法3。
方法2基于3D BacterialGrowth迷宫节点更新序列的置乱方法,包括以下步骤:
第1步:设定Sinit=()m×n×l和Smaze=(si,j,k)m×n×l,对于若si,j,k∈Smaze,则初始si,j,k=0,反之则标记si,j,k=-1,将Sinit复制为T=(ti,j,k)m×n×l;
第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,z=si,j,k(若将tx,y,z=si,j,k修改为si,j,k=tx,y,z,则对应为方法2的逆变换);
第5步:输出T=(ti,j,k)m×n×l。
方法2第3步若llmodAupdate.length=0,则对应为si,j,k=ti,j,k,为自身到自身的映射,不能用于置乱。
方法3基于3D BacterialGrowth迷宫节点更新序列复合的置乱方法,包括以下步骤:
第1步:设定Sinit=()m×n×l和Smaze=(si,j,k)m×n×l,对于若si,j,k∈Smaze,则初始si,j,k=0,反之则标记si,j,k=-1,将Sinit复制为T=(ti,j,k)m×n×l;
第2步:随机选取作为迷宫的初始节点,选取随机数发生器y0=RG0(x),y1=RG1(x),设定随机初始值RG0.init=seed0,RG1.init=seed1按方法1分别生成迷宫节点更新序列
第3步:输入任意整数作为映射偏移量ll,并将其按式(4)规范到范围内的整数,按式(5)计算index′;
第4步:对于按式(6)将tx,y,z=si,j,k(若将tx,y,z=si,j,k修改为si,j,k=tx,y,z,则对应为方法3的逆变换);
第5步:输出T=(ti,j,k)m×n×l。
若方法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基于3D BacterialGrowth迷宫更新序列和复合更新序列的数字置乱方法,提出6种图像置乱方法,如方法4~方法9所示。
方法4基于3D BacterialGrowth迷宫更新序列的图像位面立方体置乱方法:
第1步:读取待置乱图像的位面立方体,对于8位图像P8,将P8.W=(wi,j,k)m×n×8作为Sinit,对于24位图像,将P24.W=(wi,j,k)m×n×24作为Sinit,在Sinit上选取特定区域作为Smaze;
第2步:选取作为迷宫的初始节点,选取随机数发生器y=RG(x),设定初始值RG.init=seed和映射偏移量ll;
第3步:利用方法2输出置乱后的位面立方体,对于8位图像,将(w′i,j,k)m×n×8写为置乱后的图像,对于24位图像,将(w′i,j,k)m×n×24写为置乱后的图像(若将步骤3方法2修改为方法2逆变换,则对应为方法4的逆变换)。
方法5基于3D BacterialGrowth迷宫更新序列复合的图像位面立方体置乱方法:
第1步:读取待置乱图像的位面立方体,对于8位图像P8,将P8.W=(wi,j,k)m×n×8作为Sinit,对于24位图像,将P24.W=(wi,j,k)m×n×24作为Sinit,在Sinit上选取特定区域作为Smaze;
第2步:选取作为迷宫的初始节点,选取随机数发生器y0=RG0(x),y1=RG1(x),设定初始值RG0.init=seed0,RG1.init=seed1和映射偏移量ll;
第3步:利用方法3输出置乱后的位面立方体,对于8位图像,将(w′i,j,k)m×n×8写为置乱后的图像,对于24位图像,将(w′i,j,k)m×n×24写为置乱后的图像(若将步骤3方法3修改为方法3逆变换,则对应为方法5的逆变换)。
方法6基于3D BacterialGrowth迷宫更新序列的图像RGB立方体置乱方法:
第1步:读取待置乱24位图像P24的RGB立方体P24.C=(ci,j,k)m×n×3作为Sinit,在Sinit上选取特定区域作为Smaze;
第2步:选取作为迷宫的初始节点,选取随机数发生器y=RG(x),设定初始值RG.init=seed和映射偏移量ll;
第3步:利用方法2输出置乱后的RGB立方体(c′i,j,k)m×n×3,将其写为置乱后的图像(若将步骤3方法2修改为方法2逆变换,则对应为方法6的逆变换)。
方法7基于3D BacterialGrowth迷宫更新序列复合的图像RGB立方体置乱方法,包括以下步骤:
第1步:读取待置乱24位图像P24的RGB立方体P24.C=(ci,j,k)m×n×3作为Sinit,在Sinit上选取特定区域作为Smaze;
第2步:选取作为迷宫的初始节点,选取随机数发生器y0=RG0(x),y1=RG1(x),设定初始值RG0.init=seed0,RG1.init=seed1和映射偏移量ll;
第3步:利用方法3输出置乱后的RGB立方体(c′i,j,k)m×n×3,将其写为置乱后的图像(若将步骤3方法3修改为方法3逆变换,则对应为方法7的逆变换)。
方法8基于3D BacterialGrowth迷宫更新序列的图像R、G、B通道立方体置乱方法:
第1步:读取待置乱24位图像P24的RGB通道立方体 和将其分别作为在选取特定区域作为
第2步:选取作为迷宫的初始节点,选取随机数发生器yR=RGR(x),yG=RGG(x),yB=RGB(x),设定初始值RGR.init=seedR,RGG.init=seedG,RGB.init=seedB和映射偏移量llR,llG,llB;
第3步:利用方法2输出置乱后的R、G、B通道立方体 和将其写为置乱后的图像(若将步骤3方法2修改为方法2逆变换,则对应为方法8的逆变换)。
方法9基于3D BacterialGrowth迷宫更新序列复合的图像R、G、B通道立方体置乱方法:
第1步:读取待置乱24位图像P24的RGB通道立方体 和将其分别作为在选取特定区域作为
第2步:选取作为迷宫的初始节点,选取随机数发生器设定初始值 和映射偏移量llR,llG,llB;
第3步:利用方法3输出置乱后的R、G、B通道立方体 和将其写为置乱后的图像(若将步骤3方法3修改为方法3逆变换,则对应为方法9的逆变换)。
以下结合附图具体实施例对本发明方法进行详细说明:
以Delphi XE5为案例实施环境,结合附图对本发明实施方式进行详细说明,但不局限于本实施案例,其中图1是方法1流程图,图2是方法2流程图,图3是方法3流程图。
参考图1的过程如下:
第1步:假定迷宫的初始范围设置为Sinit=()3×3×2,迷宫的有效区域Smaze=(si,j,k)3×3×2设置为Sinit左上角2×2×2网格区域内,此时Smaze=(si,j,k)3×3×2范围内的有效节点数量为8,所以Nummaze=8:
其中,Smaze(k=0)代表k=0时迷宫设定区域,Smaze(k=1)代表k=1时的迷宫设定区域;
第2步:对于初始化si,j,k.d=-1,d=0,1,2,3,4,5且由于s0,0,0,s0,1,0,s1,0,0,s1,1,0,s0,0,1,s0,1,1,s1,0,1,s1,1,1∈Smaze,所以(i,j,k)={(0,0,0),(0,1,0),(1,0,0),(1,1,0),(0,0,1),(0,1,1),(1,0,1),(1,1,1)},经过以上处理,初始迷宫等价为表1(主对角线方向虚线代表4方向墙,斜对角线方向虚线代表5方向墙):
表1
第3步:选择y=RG(x),设定初始值RG.init=seed,这里以Delphi XE5线性同余发生器为例,线性同余发生器的随机初始值为randseed,可将其设置为不同的整数,不同的随机数发生器将导致生成不同的伪随机数,从而产生不同的迷宫,对应不同的迷宫排列,初始化Aupdate=Φ,Numvisited=0
第4步:选取这里以s0,0,0为迷宫初始节点,则x=0,y=0,z=0,将(x,y,z)加入Aupdate,则Aupdate=<(0,0,0)>,此时Numvisited=1,则当前迷宫等价为表2:
表2
第5步:此时(Numvisited=1)<(Nummaze=8),因此循环执行第6步~第9步;
第6步:初始化临时缓冲列表Atemp=Φ,将Atemp=Aupdate,此时若Aupdate=<(0,0,0)>,则Atemp=<(0,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,z=Atemp.at(index),此时由于a,b=0,故index=0,所以sx,y,z=s0,0,0;
第8步:若sx,y,z的周围相邻节点sx+1,y,z,sx,y+1,z,sx-1,y,z,sx,y-1,z,sx,y,z-1,sx,y,z+1存在Smaze范围内未访问节点,则按随机数发生器随机选择1个未访问的节点,记为sx′,y′,z′,此时s0,0,0周围未访问的Smaze范围内节点有s1,0,0,s0,1,0和s0,0,1,若选择s1,0,0,则sx′,y′,z′=s1,0,0;
第9步:将sx,y,z和sx′,y′,z′之间的分割墙标记为0,标记sx′,y′,z′=1,将sx′,y′,z′加入Aupdate,此时Aupdate=<(0,0,0),(1,0,0)>,Numvisited=2,当前迷宫等价为表3:
表3
不断地执行第6步~第9步,直至第5步不被满足,此时可由Aupdate给出所有节点的排列,可在此基础上进一步构造节点之间的映射关系,从而用于置乱。
由于传统的BacterialGrowth迷宫生成方法往往不限制迷宫生成区域,产生的迷宫往往是规则区域迷宫如图5所示;图6是对传统的BacterialGrowth迷宫生成方法以图4的人像前景为设定区域产生的3D连通封闭区域迷宫,第3维l取2(由于图像本身是2D图像,因此在本发明中没有用复杂的3D验证实例,仅简单将第3维l设置为2,其中灰色方块表明顶部或底部只有一面墙,黑色方块表明底部和顶部都有墙,白色表明无墙,黑色线段表明有墙);图7则是以图4五边形设定区域(l取8)按方法1产生的排列对应的前30个元素。
参考图2的过程如下:
第1步:假设将Sinit设定为图8a对应的5×2×3矩阵(第0行为x坐标,第1行为y坐标,第2行为z坐标,第3行为矩阵元素值),将Smaze设置为Sinit整个区域,则Smaze=(0)5×2×3,将Sinit复制为T=(ti,j,k)5×2×3,则T=(ti,j,k)5×2×3对应为图8a矩阵;
第2步:假定按方法1生成的Aupdate如图8b所示,图8b第0行是x坐标,第1行是y坐标,第2行是z坐标,第3行是Aupdate中的节点序号;
第3步:假定输入ll=3,则按式(1)和式(2)得ll=3mod 30=3,由于ll>0,故index′=3;
第4步:由Aupdate和index′=3,则式(3)构造的映射规则可描述为图8c,前3行对应为(x,y,z),后3行对应为(i,j,k),与之等价的逆映射可描述为图8d,前3行对应为(i,j,k),后3行对应为(x,y,z),则按式(3)可将图8a置乱为图8e,则按式(3)对应的逆映射可将图8e置乱为图8f,图8a和图8f等价,即置乱后的矩阵可完整恢复;
第5步:将映射后的结果T=(ti,j,k)5×2×3输出。
参考图3的过程如下:
第1步:假设将Sinit设定为图9a对应的5×2×3矩阵,将Smaze设置为Sinit整个区域,则Smaze=(0)5×2×3,将Sinit复制为T=(ti,j,k)5×2×3,则T=(ti,j,k)5×2×3对应为图9a矩阵;
第2步:假定按方法1生成的如图9b和9c所示,图9b和9c第0行是x坐标,第1行是y坐标,第2行是z坐标,第3行分别是中的节点序号;
第3步:假定输入ll=3,则按式(4)和式(5)得ll=3mod 30=3,由于ll>0,故index′=3;
第4步:由和index′=3,则式(6)构造的映射规则可描述为图9d,前3行对应为(x,y,z),后3行对应为(i,j,k),与之等价的逆映射可描述为图9e,前3行对应为(i,j,k),后3行对应为(x,y,z),则按式(6)可将图9a置乱为图9f,则按式(6)对应的逆映射可将图9f置乱为图9g,图9a和图9g等价,即置乱后的矩阵可完整恢复;
第5步:将映射后的结果T=(ti,j,k)5×2×3输出。
方法4是将待置乱图像的位面立方体作为Sinit,在Sinit上选取特定区域作为Smaze,在此基础上应用方法2置乱的结果,图10a~10g是以图4b~4h为测试例对方法4验证的结果,图10h对应的是恢复结果。
方法5是将待置乱图像的位面立方体作为Sinit,在Sinit上选取特定区域作为Smaze,在此基础上应用方法3置乱的结果,图11a~11g是以图4b~4h为测试例对方法5验证的结果,图11h对应的是恢复结果。
方法6是将待置乱24位图像P24的RGB立方体P24.C=(ci,j,k)m×n×3作为Sinit,在Sinit上选取特定区域作为Smaze,在此基础上应用方法2置乱的结果,图12a~12g是以图4b~4h为测试例对方法6验证的结果,图12h对应的是恢复结果。
方法7是将待置乱24位图像P24的RGB立方体P24.C=(ci,j,k)m×n×3作为Sinit,在Sinit上选取特定区域作为Smaze,在此基础上应用方法3置乱的结果,图13a~13g是以图4b~4h为测试例对方法7验证的结果,图13h对应的是恢复结果。
方法8是将待置乱24位图像P24的RGB通道立方体 和分别作为在选取特定区域作为在此基础上应用方法2置乱的结果,图14a~14g是以图4b~4h为测试例对方法8验证的结果,图14h对应的是恢复结果。
方法9是将待置乱24位图像P24的RGB通道立方体 和分别作为在选取特定区域作为在此基础上应用方法3置乱的结果,图15a~15g是以图4b~4h为测试例对方法9验证的结果,图15h对应的是恢复结果。
Claims (9)
1.一种基于3D BacterialGrowth迷宫的数字置乱方法,其特征在于包括以下步骤:
第1步:设定迷宫初始范围为Sinit=()m×n×l和迷宫有效区域Smaze=(si,j,k)m×n×l为图像上的局部任意3D封闭连通区域,对于若则初始si,j,k=-1,反之则标记si,j,k=0表示该节点未访问,若si,j,k>0表示该节点已访问,统计有效区域范围内的节点数量Nummaze=count(Smaze);
第2步:对于记si,j,k.d,d=0,1,2,3,4,5依次为节点si,j,k的下方墙、右方墙、上方墙、左方墙、底部墙和顶部墙,初始化si,j,k.d=-1,d=0,1,2,3,4,5,si,j,k.d=-1表示为有墙,si,j,k.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,z=Atemp.at(index);
第8步:若sx,y,z的周围相邻节点sx+1,y,z,sx,y+1,z,sx-1,y,z,sx,y-1,z,sx,y,z-1,sx,y,z+1存在Smaze范围内未访问节点,则按随机数发生器随机选择1个未访问的节点,记为sx′,y′,z′;
第9步:将sx,y,z和sx′,y′,z′之间的分割墙标记为0,标记sx′,y′,z′=1,将sx′,y′,z′加入Aupdate,即Aupdate=Aupdate.add(sx′,y′,z′),Numvisited=Numvisited+1;
第10步:利用Aupdate构造Smaze=(si,j,k)m×n×l范围内所有节点间的节点位置映射关系,从而将图像上3D封闭连通区域Smaze=(si,j,k)m×n×l范围内所有节点进行整体置乱。
2.如权利要求1所述的基于3D 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,k)m×n×l;
第10.3步:对于按式(3)将si,j,k赋值给tx,y,z;
第10.4步:输出T=(ti,j,k)m×n×l。
3.如权利要求1所述的基于3D BacterialGrowth迷宫的数字置乱方法,其特征在于:选取两个随机数发生器y0=RG0(x),y1=RG1(x),设定随机初始值RG0.init=seed0,RG1.init=seed1分别生成迷宫节点更新序列
第10步中映射方法具体包括以下步骤:
第10.1步:输入任意整数作为映射偏移量ll,并将其按式(4)规范到范围内的整数,按式(5)计算index′;
第10.2步:将Sinit复制为T=(ti,j,k)m×n×l;
第10.3步:对于按式(6)将si,j,k赋值给tx,y,z;
第10.4步:输出T=(ti,j,k)m×n×l。
4.如权利要求2所述的基于3D BacterialGrowth迷宫的数字置乱方法,其特征在于,在进行图像置乱时,具体包括以下步骤:
第(1)步:读取待置乱图像的位面立方体,对于8位图像P8,将P8.W=(wi,j,k)m×n×8作为Sinit,对于24位图像,将P24.W=(wi,j,k)m×n×24作为Sinit,在Sinit上选取特定区域作为Smaze;
第(2)步:选取作为迷宫的初始节点,选取随机数发生器y=RG(x),设定初始值RG.init=seed和映射偏移量ll;
第(3)步:输出置乱后的位面立方体,对于8位图像,将(w′i,j,k)m×n×8写为置乱后的图像,对于24位图像,将(w′i,j,k)m×n×24写为置乱后的图像。
5.如权利要求3所述的基于3D BacterialGrowth迷宫的数字置乱方法,其特征在于,在进行图像置乱时,具体包括以下步骤:
第(1)步:读取待置乱图像的位面立方体,对于8位图像P8,将P8.W=(wi,j,k)m×n×8作为Sinit,对于24位图像,将P24.W=(wi,j,k)m×n×24作为Sinit,在Sinit上选取特定区域作为Smaze;
第(2)步:选取作为迷宫的初始节点,选取随机数发生器y0=RG0(x),y1=RG1(x),设定初始值RG0.init=seed0,RG1.init=seed1和映射偏移量ll;
第(3)步:输出置乱后的位面立方体,对于8位图像,将(w′i,j,k)m×n×8写为置乱后的图像,对于24位图像,将(w′i,j,k)m×n×24写为置乱后的图像。
6.如权利要求2所述的基于3D BacterialGrowth迷宫的数字置乱方法,其特征在于,在进行图像置乱时,具体包括以下步骤:
第(1)步:读取待置乱24位图像P24的RGB立方体P24.C=(ci,j,k)m×n×3作为Sinit,在Sinit上选取特定区域作为Smaze;
第(2)步:选取作为迷宫的初始节点,选取随机数发生器y=RG(x),设定初始值RG.init=seed和映射偏移量ll;
第(3)步:输出置乱后的RGB立方体(c′i,j,k)m×n×3,将其写为置乱后的图像。
7.如权利要求3所述的基于3D BacterialGrowth迷宫的数字置乱方法,其特征在于,在进行图像置乱时,具体包括以下步骤:
第(1)步:读取待置乱24位图像P24的RGB立方体P24.C=(ci,j,k)m×n×3作为Sinit,在Sinit上选取特定区域作为Smaze;
第(2)步:选取作为迷宫的初始节点,选取随机数发生器y0=RG0(x),y1=RG1(x),设定初始值RG0.init=seed0,RG1.init=seed1和映射偏移量ll;
第(3)步:输出置乱后的RGB立方体(c′i,j,k)m×n×3,将其写为置乱后的图像。
8.如权利要求2所述的基于3D BacterialGrowth迷宫的数字置乱方法,其特征在于,在进行图像置乱时,具体包括以下步骤:
第(1)步:读取待置乱24位图像P24的RGB通道立方体 和将其分别作为初始范围在选取特定区域作为有效区域
第(2)步:选取作为迷宫的初始节点,选取随机数发生器yR=RGR(x),yG=RGG(x),yB=RGB(x),设定初始值RGR.init=seedR,RGG.init=seedG,RGB.init=seedB和映射偏移量llR,llG,llB;
第(3)步:输出置乱后的R、G、B通道立方体和将其写为置乱后的图像。
9.如权利要求3所述的基于3D BacterialGrowth迷宫的数字置乱方法,其特征在于,在进行图像置乱时,具体包括以下步骤:
第(1)步:读取待置乱24位图像P24的RGB通道立方体 和将其分别作为初始范围在选取特定区域作为有效区域
第(2)步:选取作为迷宫的初始节点,选取随机数发生器设定初始值 和映射偏移量llR,llG,llB;
第(3)步:输出置乱后的R、G、B通道立方体和将其写为置乱后的图像。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410747723.8A CN104361549B (zh) | 2014-12-08 | 2014-12-08 | 一种基于3D BacterialGrowth迷宫的数字置乱方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410747723.8A CN104361549B (zh) | 2014-12-08 | 2014-12-08 | 一种基于3D BacterialGrowth迷宫的数字置乱方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104361549A CN104361549A (zh) | 2015-02-18 |
CN104361549B true CN104361549B (zh) | 2019-03-05 |
Family
ID=52528807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410747723.8A Active CN104361549B (zh) | 2014-12-08 | 2014-12-08 | 一种基于3D BacterialGrowth迷宫的数字置乱方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104361549B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109164802A (zh) * | 2018-08-23 | 2019-01-08 | 厦门理工学院 | 一种机器人迷宫行走方法、装置及机器人 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1641683A (zh) * | 2004-01-16 | 2005-07-20 | 微软公司 | 通过m阵列解码和快速图像匹配的笔划定位 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7581171B2 (en) * | 2004-01-06 | 2009-08-25 | Microsoft Corporation | Positionally encoded document image analysis and labeling |
-
2014
- 2014-12-08 CN CN201410747723.8A patent/CN104361549B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1641683A (zh) * | 2004-01-16 | 2005-07-20 | 微软公司 | 通过m阵列解码和快速图像匹配的笔划定位 |
Non-Patent Citations (3)
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页 |
"三大迷宫生成算法";白蓝紫;《http://bbs.9ria.com/thread-156150-1-1.html》;20121025;第1-5页 |
"基于迷宫置换和Logistic混沌映射的图像加密算法";杨璐等;《计算机应用》;20140710;第34卷(第7期);第1902-1908页第1-4节 |
Also Published As
Publication number | Publication date |
---|---|
CN104361549A (zh) | 2015-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhang et al. | Image encryption based on three-dimensional bit matrix permutation | |
Huang et al. | Implementation of gray image encryption with pixel shuffling and gray-level encryption by single chaotic system | |
CN104766264B (zh) | 一种分块双层自适应扩散图像加密方法 | |
CN104851070B (zh) | 一种基于前景和背景分离的图像加密和解密方法 | |
CN106301760B (zh) | 一种基于混沌映射的3d点云模型加密方法 | |
CN106228504B (zh) | 基于明文和密钥构造加密参数的数字图像加密方法 | |
Jolfaei et al. | A 3D object encryption scheme which maintains dimensional and spatial stability | |
CN107896144A (zh) | 一种基于混沌映射的3d纹理模型加密方法 | |
CN107067359A (zh) | 基于布朗运动与DNA编码的Contourlet域图像共享方法 | |
CN104361550B (zh) | 一种基于2D BacterialGrowth迷宫的数字置乱方法 | |
CN106373082A (zh) | 基于细胞自动机和混沌映射的数字图像加密及其解密方法 | |
CN103559678A (zh) | 一种shp线面图层数据的置乱与还原方法 | |
CN104361549B (zh) | 一种基于3D BacterialGrowth迷宫的数字置乱方法 | |
CN105118017A (zh) | 一种基于二维Henon映射的灰度图像加密方法 | |
CN104469079B (zh) | 一种基于2D随机Prim迷宫的数字置乱方法 | |
CN104394298B (zh) | 一种基于3D HuntKill迷宫的数字置乱方法 | |
CN104376527B (zh) | 一种基于3D随机Prim迷宫的数字置乱方法 | |
CN104463771B (zh) | 一种基于3D Wilson迷宫的数字置乱方法 | |
CN104463769B (zh) | 一种基于3d dfs迷宫的数字置乱方法 | |
CN104361551B (zh) | 一种基于2D Wilson迷宫的数字置乱方法 | |
CN104408683B (zh) | 一种基于3D Growing Tree迷宫的数字置乱方法 | |
Mathews et al. | Image encryption based on inter pixel displacement of RGB values inside custom slices | |
CN104463770B (zh) | 一种基于2D HuntKill迷宫的数字置乱方法 | |
CN104376528B (zh) | 一种基于2D Growing Tree迷宫的数字置乱方法 | |
CN114978466A (zh) | 类分形模型和希尔伯特同步置乱扩散的加密方法 |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230802 Address after: No. 88 Jiulong Avenue, Jiulongkou Town, Jianhu County, Yancheng City, Jiangsu Province, 224700 Patentee after: Jiangsu Hanyang Jinggong Technology Co.,Ltd. Address before: 710062 Shaanxi Normal University, Chang'an District, Xi'an City, Shaanxi Province Patentee before: Shaanxi Normal University |