CN104361552B - 一种基于2d dfs迷宫的数字置乱方法 - Google Patents
一种基于2d dfs迷宫的数字置乱方法 Download PDFInfo
- Publication number
- CN104361552B CN104361552B CN201410748365.2A CN201410748365A CN104361552B CN 104361552 B CN104361552 B CN 104361552B CN 201410748365 A CN201410748365 A CN 201410748365A CN 104361552 B CN104361552 B CN 104361552B
- Authority
- CN
- China
- Prior art keywords
- maze
- image
- node
- update
- scrambling
- 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
Images
Landscapes
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明提供一种基于2D DFS迷宫的数字置乱方法,预先对DFS迷宫生成区域进行人为限定,从而可用于人为指定的任意2D封闭连通区域,同时按迷宫节点更新顺序对迷宫设定区域的每个节点赋予唯一编号,由此产生迷宫设定区域所有节点的排列,在此基础上构造了基于2D DFS迷宫节点更新序列和节点更新序列复合的置乱方法,从而可将所有节点置乱。本发明所给出的置乱方法具有普适性和灵活性,在使用过程中不存在任何限制,不仅能用于传统置乱方法所针对的规则区域,例如正方形和矩形区域,也可用于任意选定的2D封闭连通不规则区域置乱。本发明也给出了用于像素矩阵,R、G、B通道矩阵和比特位面的图像置乱方法。
Description
技术领域
本发明涉及信息安全和数字信号处理等交叉研究领域,具体为基于DFS迷宫生成策略的数字置乱方法,特别涉及一种基于2D DFS迷宫的数字置乱方法。
背景技术
近年来,伴随着计算机和网络技术的发展,越来越多的图像在网络中传输,在给用户提供方便的同时,也带来了一系列的安全隐患。对图像的不当使用和恶意篡改,不仅涉及个人隐私问题,也会给社会带来严重的负面影响。保障图像的核心技术是数字图像加密。
在数字图像加密领域,研究最为广泛和灵活的一类图像加密方法,就是在同一空间内,对图像的重编码技术,即图像置乱技术。
随着计算机技术的飞速发展,数字图像置乱技术已成为数字安全传输和保密的主要手段。其基本思路就是把一幅图像经过一定的数学变换,转变成面目全非的另一幅图像,以起到对图像的安全保密作用。
数字图像置乱也是目前隐密术、数字水印、信息分存和可视密码技术中,一项关键预处理技术。已受到国内外学者的普遍重视,并取得丰硕的研究成果。
数字图像置乱最初来源于有线电视信号加密,早期的置乱在位置空间进行,用于对图像像素位置打乱,这些置乱方法包括行倒置置乱、行平移置乱、行置换置乱、行循环置乱、行分量切割置乱等。随着置乱技术的不断发展,目前已提出的置乱方法多种多样,既可用于位置置换,也可用于灰度替代。
当前已提出的置乱方法主要有:基于离散元素序列的置乱方法、基于扫描路线的置乱方法、基于遍历矩阵的置乱方法、基于迭代函数系统的置乱方法、基于离散混沌映射的置乱方法、基于中国拼图的置乱方法和基于矩阵变换的置乱方法等。
目前尽管已提出了多种置乱方法,但传统置乱方法大多只能用于规则区域置乱,例如正方形和长方形区域,而不能对图像选定的任意不规则区域进行置乱。
例如基于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 DFS迷宫的数字置乱方法,该方法可用于2D任意连通封闭区域数据置乱。
为实现上述目的,本发明采用以下技术方案:
一种基于2D DFS迷宫的数字置乱方法,包括以下步骤:
第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,初始化堆栈Stack=Φ,置节点更新序列Aupdate=Φ;
第5步:若sx,y的周围相邻节点sx+1,y,sx,y+1,sx-1,y,sx,y-1存在Smaze范围内未访问的节点,则随机选择1个未访问的节点,记为sx′,y′,将sx,y和sx′,y′之间的分割墙标记为0,将sx,y入栈push(Stack,sx,y),更新x=x′,y=y′,标记sx,y=1,将(x,y)加入节点更新序列Aupdate=Aupdate.add((x,y));
第6步:若sx,y的周围相邻节点sx+1,y,sx,y+1,sx-1,y,sx,y-1不存在Smaze范围内未访问的节点,则将栈顶元素出栈作为当前节点,即sx,y=pop(Stack);
第7步:反复执行第5~6步,直至Stack=Φ;
第8步:利用Aupdate构造Smaze=(si,j)m×n范围内所有节点间的映射关系,从而将Smaze=(si,j)m×n范围内的所有节点置乱。
作为本发明进一步优选方案,第8步中映射方法具体包括以下步骤:
第8.1步:选取整数作为映射偏移量ll,llmodAupdate.length≠0,将其按式(1)规范到(-Aupdate.length,Aupdate.length)范围内的整数,按式(2)计算index;
ll=llmodAupdate.length (1)
第8.2步:将Sinit复制为T=(ti,j)m×n;
(i,j)=Aupdate(ii),ii=0,…,Aupdate.length-1
(x,y)=Aupdate(kk),kk=0,…,Aupdate.length-1 (3)
kk=(ii+index)modAupdate.length
第8.4步:输出T=(ti,j)m×n。
第8步中映射方法具体包括以下步骤:
第8.2步:将Sinit复制为T=(ti,j)m×n;
第8.4步:输出T=(ti,j)m×n。
作为本发明进一步优选方案,在进行图像置乱时,具体包括以下步骤:
第(1)步:读取待置乱图像像素矩阵P=(pi,j)m×n作为Sinit,在Sinit上选取特定区域作为Smaze;
第(3)步:输出置乱后的矩阵P′=(p′i,j)m×n,将其写为置乱后的图像。
作为本发明进一步优选方案,在进行图像置乱时,具体包括以下步骤:
第(1)步:读取待置乱图像像素矩阵P=(pi,j)m×n作为Sinit,在Sinit上选取特定区域作为Smaze;
第(3)步:输出置乱后的矩阵P′=(p′i,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′,将其写为置乱后的图像。
作为本发明进一步优选方案,在进行图像置乱时,具体包括以下步骤:
第(3)步:依次输出置乱后的矩阵R′,G′,B′,将其写为置乱后的图像。
作为本发明进一步优选方案,在进行图像置乱时,具体包括以下步骤:
第(3)步:依次输出置乱后的矩阵,对于8位图像P8,将置乱后的位面W′kk,kk=0,…,7写为置乱后的图像,对于24位图像P24,将置乱后的位面W′kk,kk=0,…,23写为置乱后的图像。
作为本发明进一步优选方案,在进行图像置乱时,具体包括以下步骤:
第(3)步:依次输出置乱后的矩阵,对于8位图像P8,将置乱后的位面W′kk,kk=0,…,7写为置乱后的图像,对于24位图像P24,将置乱后的位面W′kk,kk=0,…,23写为置乱后的图像。
本发明同现有技术优点分析
(1)传统的迷宫生成方法在人工智能和优化计算领域应用较广,一般用于动态复杂场景的模拟和仿真,但在信息安全领域涉及较少,而传统的置乱方法一般将置乱空间局限在特定的尺度上,用于图像规则区域置乱,例如正方形图像和矩形图像以及仅适用于特定尺度图像的规则区域加密,方法不具有普适性,在实施过程中存在使用限制。本发明则将传统的迷宫生成方法引入到信息安全中的置乱处理方法中,在DFS迷宫生成方法中添加了迷宫有效区域Smaze约束限制,使其仅在事先选定的2D任意封闭连通区域Smaze上产生迷宫,同时将DFS迷宫节点更新顺序以节点更新序列Aupdate输出用于生成排列,利用该排列构造所有节点之间的映射关系,从而将所有节点置乱。
在此基础上本发明还给出了结合节点更新序列和节点更新序列复合的数字置乱方法。同现有方法相比,本发明所给出的置乱方法具有普适性和灵活性,在使用过程中不存在使用限制,不仅可以用于置乱传统置乱方法的规则区域,例如正方形和矩形区域,也可以用于任意选定的2D连通封闭区域。
(2)本发明所给出的置乱方法可单独使用,也可多次迭代,还可将不同方法联合使用,也可和现有的信息隐藏、数字水印、秘密共享和加密策略相结合,结合任意设定的随机数发生器对任意选定2D连通封闭区域数据提供不同安全级别的多重保护,具备较高的实际应用价值。
(3)同时本发明所针对的对象也不仅仅是图像,可以用于任意封闭连通区域数据的置乱和恢复。
附图说明
图1是本发明具体实施例:方法1一种基于2D DFS迷宫的数字置乱方法流程图;
图2是本发明具体实施例:方法2结合具体映射方法的数字置乱方法流程图;
图3是本发明具体实施例:方法3结合另一种映射方法的数字置乱方法流程图;
图4是本发明实施例:测试图像(含24位真彩色人像照片和迷宫有效区域设定图像包括五边形、六边形、五角星、心形、闪电形、空心云状图和人像前景等单色图像,其中黑色为迷宫有效区域,所有图像分辨率均为80×60);
图5是传统的DFS迷宫方法生成的80×60迷宫;
图6是本发明对传统的DFS迷宫方法添加有效区域限制的产生的迷宫(以图4中的空心云状图和人像前景为迷宫有效区域);
图7是本发明实施例:由图4五边形设定区域按方法1中DFS迷宫法产生的前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的验证图样。
具体实施方式
以下结合附图具体实施例对本发明方法进行详细描述:
DFS迷宫生成策略是一种典型的迷宫生成策略,传统的DFS迷宫是在m×n规模网格上的任意节点出发,产生一条连接所有网络节点且具有复杂迂回通道的迷宫。
经典DFS迷宫生成方法在人工智能和优化计算领域应用较广,一般用于动态复杂场景的模拟和仿真,但在信息安全领域涉及较少。
本发明预先对DFS迷宫生成区域进行人为限定,则DFS生成迷宫不光可以应用于规则区域,例如正方形区域和矩形区域等,同时也可应用于人为指定的任意区域,例如2D封闭连通区域,同时可按迷宫节点更新顺序对迷宫限定区域的每个节点赋予一个唯一的编号,由此可产生一个排列,利用该排列构造所有节点之间的映射关系,从而将所有节点置乱。
本发明一种基于2D DFS迷宫的数字置乱方法(记为方法1)具体步骤如下:
第2步:对于记si,j.d,d=0,1,2,3依次
为节点si,j的下方、右方、上方和左方墙,初始化si,j.d=-1,d=0,1,2,3,即将Smaze范围内的
所有节点以墙进行分隔,-1表示有墙,0表示无墙;
第3步:选择特定的随机数发生器y=RG(x),设定随机数发生器初始值RG.init=seed,初始化堆栈Stack=Φ,置节点更新序列Aupdate=Φ;
第5步:若sx,y的周围相邻节点sx+1,y,sx,y+1,sx-1,y,sx,y-1存在Smaze范围内未访问的节点,则随机选择1个未访问的节点,记为sx′,y′,将sx,y和sx′,y′之间的分割墙标记为0,将sx,y入栈push(Stack,sx,y),更新x=x′,y=y′,标记sx,y=1,将(x,y)加入节点更新序列Aupdate=Aupdate.add((x,y));
第6步:若sx,y的周围相邻节点sx+1,y,sx,y+1,sx-1,y,sx,y-1不存在Smaze范围内未访问的节点,则将栈顶元素出栈作为当前节点,即sx,y=pop(Stack)
第7步:反复执行第5~6步,直至Stack=Φ,输出Aupdate。
第8步:利用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 DFS迷宫排列生成的节点更新序列置乱方法:
第3步:输入整数作为映射偏移量ll,llmodAupdate.length≠0,将其按式(1)规范到(-Aupdate.length,Aupdate.length)范围内的整数,按式(2)计算index;
ll=llmodAupdate.length (1)
(i,j)=Aupdate(ii),ii=0,…,Aupdate.length-1
(x,y)=Aupdate(kk),kk=0,…,Aupdate.length-1 (3)
kk=(ii+index)modAupdate.length
第5步:输出T=(ti,j)m×n。
方法2第3步若llmodAupdate.length=0,则对应为si,j=ti,j,为自身到自身的映射,不能用于置乱。
方法3基于2D DFS迷宫排列生成的节点更新序列复合置乱方法,包括以下步骤:
第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 DFS迷宫节点更新序列的图像置乱方法:
第1步:读取待置乱图像像素矩阵P=(pi,j)m×n作为Sinit,在Sinit上选取特定区域作为Smaze;
第3步:利用方法2输出置乱后的矩阵P′=(p′i,j)m×n,将其写为置乱后的图像(若将步骤3方法2修改为方法2逆变换,则对应为方法4的逆变换)。
方法5基于2D DFS迷宫节点更新序列复合的图像置乱方法:
第1步:读取待置乱图像像素矩阵P=(pi,j)m×n作为Sinit,在Sinit上选取特定区域作为Smaze;
第3步:利用方法3输出置乱后的矩阵P′=(p′i,j)m×n将其写为置乱后的图像(若将步骤3方法3修改为方法3逆变换,则对应为方法5的逆变换)。
方法6基于2D DFS迷宫节点更新序列的图像R、G、B通道置乱方法:
第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 DFS迷宫节点更新序列复合的图像R、G、B通道置乱方法:
第3步:利用方法3,依次输出置乱后的矩阵R′,G′,B′写为置乱后的图像(若将步骤3方法3修改为方法3逆变换,则对应为方法7的逆变换)。
方法8基于2D DFS迷宫节点更新序列的图像比特位面置乱方法:
第3步:利用方法2,依次输出置乱后的矩阵,对于8位图像P8,将W′kk,kk=0,…,7写为置乱后的图像,对于24位图像P24,将W′kk,kk=0,…,23写为置乱后的图像(若将步骤3方法2修改为方法2逆变换,则对应为方法8的逆变换)。
方法9基于2D DFS迷宫节点更新序列复合的图像比特位面置乱方法:
第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网格区域内,则
第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,可将其设置为不同的整数,不同的随机数发生器将导致生成不同的伪随机数,从而产生不同的迷宫,对应不同的迷宫排列;
表2:
第5步:若sx,y的周围相邻节点sx+1,y,sx,y+1,sx-1,y,sx,y-1存在Smaze范围内未访问的节点,则从按随机数发生器随机选择1个未访问的节点sx′,y′,这里s0,0的邻近节点为s1,0,s0,1且s1,0=0和s0,1=0,若选择s1,0,则x′=1,y′=0,将sx,y和sx′,y′之间的分割墙标记为0,将sx,y入栈push(Stack,sx,y),更新x=x′,y=y′,标记sx,y=1,将(x,y)加入节点更新序列Aupdate=Aupdate.add((x,y)),这里删除s0,0和s1,0之间的分隔墙,标记s1,0=1,将s0,0入栈,则Stack=[s0,0,Aupdate=〈(0,0)〉,则当前迷宫等价为表3:
表3
第6步:若sx,y的周围相邻节点sx+1,y,sx,y+1,sx-1,y,sx,y-1不存在Smaze范围内未访问的节点,则将栈顶元素出栈作为当前节点,假设Stack=[s0,0,s1,0,此时s1,0为栈顶元素,则将s1,0出栈作为sx,y,此时Stack=[s0,0
第7步:反复执行第5~6步,直至Stack=Φ,输出Aupdate,由此可将Smaze=(si,j)m×n所有节点按更新顺序产生排列,可在此基础上进一步构造节点之间的映射关系,从而用于置乱。
由于传统的DFS迷宫生成方法往往不限制迷宫生成区域,产生的迷宫往往是规则区域迷宫如图5所示;图6是对传统的DFS迷宫生成方法以图4的空心云状图和人像前景为迷宫有效区域产生的2D任意连通封闭区域迷宫;图7则是以图4五边形设定区域按方法1产生的排列对应的前30个元素。
参考图2,基于2D DFS迷宫排列生成的节点更新序列置乱方法过程如下:
第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=3mod30=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,基于2D DFS迷宫排列生成的节点更新序列复合置乱方法的过程如下:
第1步:假设将Sinit设定为图9a对应的5×6矩阵,将Smaze设置为Sinit整个区域,则Smaze=(0)5×6,将Sinit复制为T=(ti,j)5×6,则T=(ti,j)5×6对应为图9a矩阵;
第3步:假定输入ll=3,则按式(4)和式(5)可得ll=3mod30=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=(pi,j)m×n作为Sinit,在Sinit上选取特定区域作为Smaze,在此基础上应用方法2置乱的结果,图10a~10g是以图4b~4h为测试例对方法4验证的结果,图10h对应的是恢复结果。
方法5是将待置乱图像像素矩阵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对应的是恢复结果。
Claims (2)
1.一种基于2D DFS迷宫的数字置乱方法,其特征在于,包括以下步骤:
第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已访问;
第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,初始化堆栈Stack=Φ,置节点更新序列Aupdate=Φ,不同的随机数发生器将导致生成不同的随机数,从而产生不同的迷宫,对应不同的迷宫排列;
第5步:若sx,y的周围相邻节点sx+1,y,sx,y+1,sx-1,y,sx,y-1存在Smaze范围内未访问的节点,则随机选择1个未访问节点,记为sx′,y′,将sx,y和sx′,y′之间的分割墙标记为0,将sx,y入栈push(Stack,sx,y),更新x=x′,y=y′,标记sx,y=1,将(x,y)加入节点更新序列Aupdate=Aupdate.add((x,y));
第6步:若sx,y的周围相邻节点sx+1,y,sx,y+1,sx-1,y,sx,y-1不存在Smaze范围内未访问的节点,则将栈顶元素出栈作为当前节点,即sx,y=pop(Stack);
第7步:反复执行第5~6步,直至Stack=Φ,输出Aupdate;
第8步:利用步骤7最终得到的Aupdate,由此可将Smaze=(si,j)m×n所有节点按更新顺序产生排列,在此基础上进一步构造Smaze=(si,j)m×n范围内所有节点间的节点位置映射关系,用于改变图像上的2D局部不规则区域Smaze=(si,j)m×n范围内的像素位置;从而将图像上2D局部不规则封闭连通区域Smaze=(si,j)m×n范围内的所有节点进行整体置乱;Aupdate(0)为序列中的第1个元素,为迷宫的初始节点,Aupdate.length等价为迷宫有效区域内的所有节点数量;对于同样的Smaze,输入不同的选定不同的y=RG(x)和RG.init,将产生不同的Aupdate;
第8步中映射方法具体包括以下步骤:
第8.1步:选取整数作为映射偏移量ll,llmod Aupdate.length≠0,将其按式(1)规范到(-Aupdate.length,Aupdate.length)范围内的整数,按式(2)计算index;
ll=llmod Aupdate.length (1)
第8.2步:将Sinit复制为T=(ti,j)m×n;
第8.4步:输出T=(ti,j)m×n;且置乱后的矩阵可完整恢复;
在进行图像置乱时,具体包括以下步骤:
第(1)步:读取待置乱图像像素矩阵P=(pi,j)m×n作为Sinit,在Sinit上选取特定区域作为Smaze;
第(3)步:输出置乱后的矩阵P′=(p′i,j)m×n,将其写为置乱后的图像;
或者,在进行图像置乱时,具体包括以下步骤:
第(2)步:选取分别作为R、G、B通道的初始节点,选取随机数发生器y=RGR(x),y=RGG(x),y=RGB(x)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′,将其写为置乱后的图像;
或者,在进行图像置乱时,具体包括以下步骤:
第(3)步:依次输出置乱后的矩阵,对于8位图像P8,将置乱后的位面W′kk,kk=0,…,7写为置乱后的图像,对于24位图像P24,将置乱后的位面W′kk,kk=0,…,23写为置乱后的图像。
2.一种基于2D DFS迷宫的数字置乱方法,其特征在于,包括以下步骤:
第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已访问;
第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,初始化堆栈Stack=Φ,置节点更新序列Aupdate=Φ,不同的随机数发生器将导致生成不同的随机数,从而产生不同的迷宫,对应不同的迷宫排列;
第5步:若sx,y的周围相邻节点sx+1,y,sx,y+1,sx-1,y,sx,y-1存在Smaze范围内未访问的节点,则随机选择1个未访问节点,记为sx′,y′,将sx,y和sx′,y′之间的分割墙标记为0,将sx,y入栈push(Stack,sx,y),更新x=x′,y=y′,标记sx,y=1,将(x,y)加入节点更新序列Aupdate=Aupdate.add((x,y));
第6步:若sx,y的周围相邻节点sx+1,y,sx,y+1,sx-1,y,sx,y-1不存在Smaze范围内未访问的节点,则将栈顶元素出栈作为当前节点,即sx,y=pop(Stack);
第7步:反复执行第5~6步,直至Stack=Φ,输出Aupdate;
第8步:利用步骤7最终得到的Aupdate,由此可将Smaze=(si,j)m×n所有节点按更新顺序产生排列,在此基础上进一步构造Smaze=(si,j)m×n范围内所有节点间的节点位置映射关系,用于改变图像上的2D局部不规则区域Smaze=(si,j)m×n范围内的像素位置;从而将图像上2D局部不规则封闭连通区域Smaze=(si,j)m×n范围内的所有节点进行整体置乱;Aupdate(0)为序列中的第1个元素,为迷宫的初始节点,Aupdate.length等价为迷宫有效区域内的所有节点数量;对于同样的Smaze,输入不同的选定不同的y=RG(x)和RG.init,将产生不同的Aupdate;
第8步中映射方法具体包括以下步骤:
第8.2步:将Sinit复制为T=(ti,j)m×n;
第8.4步:输出T=(ti,j)m×n;且置乱后的矩阵可完整恢复;
在进行图像置乱时,具体包括以下步骤:
第(1)步:读取待置乱图像像素矩阵P=(pi,j)m×n作为Sinit,在Sinit上选取特定区域作为Smaze;
第(3)步:输出置乱后的矩阵P′=(p′i,j)m×n将其写为置乱后的图像;
或者,在进行图像置乱时,具体包括以下步骤:
第(3)步:依次输出置乱后的矩阵R′,G′,B′,将其写为置乱后的图像;
或者,在进行图像置乱时,具体包括以下步骤:
第(3)步:依次输出置乱后的矩阵,对于8位图像P8,将置乱后的位面W′kk,kk=0,…,7写为置乱后的图像,对于24位图像P24,将置乱后的位面W′kk,kk=0,…,23写为置乱后的图像。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410748365.2A CN104361552B (zh) | 2014-12-08 | 2014-12-08 | 一种基于2d dfs迷宫的数字置乱方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410748365.2A CN104361552B (zh) | 2014-12-08 | 2014-12-08 | 一种基于2d dfs迷宫的数字置乱方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104361552A CN104361552A (zh) | 2015-02-18 |
CN104361552B true CN104361552B (zh) | 2020-11-17 |
Family
ID=52528810
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410748365.2A Active CN104361552B (zh) | 2014-12-08 | 2014-12-08 | 一种基于2d dfs迷宫的数字置乱方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104361552B (zh) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6064738A (en) * | 1996-12-10 | 2000-05-16 | The Research Foundation Of State University Of New York | Method for encrypting and decrypting data using chaotic maps |
CN101414258B (zh) * | 2008-12-03 | 2011-01-26 | 腾讯科技(深圳)有限公司 | 一种对皮肤图片进行变色的方法及装置 |
-
2014
- 2014-12-08 CN CN201410748365.2A patent/CN104361552B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN104361552A (zh) | 2015-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Sivakumar et al. | A New Image Encryption Method Based on Knight's Travel Path and True Random Number. | |
Kandar et al. | Visual cryptography scheme for color image using random number with enveloping by digital watermarking | |
Alhassan et al. | Enhancement of the Security of a Digital Image using the Moduli Set | |
CN110148189A (zh) | 一种基于dna序列和混沌系统的光场图像加密方法 | |
Gao et al. | An authenticatable (2, 3) secret sharing scheme using meaningful share images based on hybrid fractal matrix | |
Song et al. | A secure image encryption algorithm based on multiple one-dimensional chaotic systems | |
CN104361550B (zh) | 一种基于2D BacterialGrowth迷宫的数字置乱方法 | |
CN104361552B (zh) | 一种基于2d dfs迷宫的数字置乱方法 | |
Hamza et al. | Encrypt 3d model using transposition, substitution, folding, and shifting (tsfs) | |
Wang et al. | A novel (n, n) secret image sharing scheme based on Sudoku | |
CN104469079B (zh) | 一种基于2D随机Prim迷宫的数字置乱方法 | |
CN112184841B (zh) | 块替换生成式信息隐藏及恢复方法、设备及介质 | |
CN104376527B (zh) | 一种基于3D随机Prim迷宫的数字置乱方法 | |
Liping et al. | Image scrambling algorithm based on random shuffling strategy | |
CN104361549B (zh) | 一种基于3D BacterialGrowth迷宫的数字置乱方法 | |
CN104463771B (zh) | 一种基于3D Wilson迷宫的数字置乱方法 | |
Avci | A novel meaningful secret image sharing method based on Arabic letters | |
CN104394298B (zh) | 一种基于3D HuntKill迷宫的数字置乱方法 | |
CN104376528B (zh) | 一种基于2D Growing Tree迷宫的数字置乱方法 | |
CN104463769B (zh) | 一种基于3d dfs迷宫的数字置乱方法 | |
Singar et al. | Image encryption based on cell shuffling and scanning techniques | |
CN104361551B (zh) | 一种基于2D Wilson迷宫的数字置乱方法 | |
CN104408683B (zh) | 一种基于3D Growing Tree迷宫的数字置乱方法 | |
CN104463770B (zh) | 一种基于2D HuntKill迷宫的数字置乱方法 | |
Bawaneh | A Preferential Virtual Gray Scale Image Steganography Using Intelligent Water Drop |
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 |