一种基于2D DFS 迷宫的数字置乱方法技术

技术编号:11049023 阅读:86 留言:0更新日期:2015-02-18 14:19
本发明专利技术提供一种基于2D DFS迷宫的数字置乱方法,预先对DFS迷宫生成区域进行人为限定,从而可用于人为指定的任意2D封闭连通区域,同时按迷宫节点更新顺序对迷宫设定区域的每个节点赋予唯一编号,由此产生迷宫设定区域所有节点的排列,在此基础上构造了基于2D DFS迷宫节点更新序列和节点更新序列复合的置乱方法,从而可将所有节点置乱。本发明专利技术所给出的置乱方法具有普适性和灵活性,在使用过程中不存在任何限制,不仅能用于传统置乱方法所针对的规则区域,例如正方形和矩形区域,也可用于任意选定的2D封闭连通不规则区域置乱。本发明专利技术也给出了用于像素矩阵,R、G、B通道矩阵和比特位面的图像置乱方法。

【技术实现步骤摘要】

本专利技术涉及信息安全和数字信号处理等交叉研究领域,具体为基于DFS迷宫生成策略的数字置乱方法,特别涉及一种基于2D DFS迷宫的数字置乱方法。
技术介绍
近年来,伴随着计算机和网络技术的发展,越来越多的图像在网络中传输,在给用户提供方便的同时,也带来了一系列的安全隐患。对图像的不当使用和恶意篡改,不仅涉及个人隐私问题,也会给社会带来严重的负面影响。保障图像的核心技术是数字图像加密。在数字图像加密领域,研究最为广泛和灵活的一类图像加密方法,就是在同一空间内,对图像的重编码技术,即图像置乱技术。随着计算机技术的飞速发展,数字图像置乱技术已成为数字安全传输和保密的主要手段。其基本思路就是把一幅图像经过一定的数学变换,转变成面目全非的另一幅图像,以起到对图像的安全保密作用。数字图像置乱也是目前隐密术、数字水印、信息分存和可视密码技术中,一项关键预处理技术。已受到国内外学者的普遍重视,并取得丰硕的研究成果。数字图像置乱最初来源于有线电视信号加密,早期的置乱在位置空间进行,用于对图像像素位置打乱,这些置乱方法包括行倒置置乱、行平移置乱、行置换置乱、行循环置乱、行分量切割置乱等。随着置乱技术的不断发展,目前已提出的置乱方法多种多样,既可用于位置置换,也可用于灰度替代。当前已提出的置乱方法主要有:基于离散元素序列的置乱方法、基于扫描路线的置乱方法、基于遍历矩阵的置乱方法、基于迭代函数系统的置乱方法、r>基于离散混沌映射的置乱方法、基于中国拼图的置乱方法和基于矩阵变换的置乱方法等。目前尽管已提出了多种置乱方法,但传统置乱方法大多只能用于规则区域置乱,例如正方形和长方形区域,而不能对图像选定的任意不规则区域进行置乱。例如基于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 of Computer 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迷宫节点入栈顺序和行优先扫描顺序高效产生置换的方法,将迷宫生成方法应用于任意矩形图像加密,但所提出的方法不能应用于图像的任意不规则连通封闭区域加密。
技术实现思路
本专利技术的目的在于克服现有技术缺陷,提供一种基于2D DFS迷宫的数字置乱方法,该方法可用于2D任意连通封闭区域数据置乱。为实现上述目的,本专利技术采用以下技术方案:一种基于2D DFS迷宫的数字置乱方法,包括以下步骤:第1步:设定迷宫初始范围Sinit=()m×n和迷宫有效区域Smaze=(si,j)m×n,对于∀si,j,i=0,···,m-1,j=0,···,n-1,]]>若si,j∉Smaze,]]>则标记si,j=-1,反之则标记si,j=0表示该节点未访问,若si,j>0表示该节点已访问;第2步:对于∀si,j∈Smaze,i=0,···,m-1,j=0,···,n-1,]]>记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=Φ;第4步:随机选取标记sx,y=1,将sx,y的坐标(x,y)加入节点更新序列Aupdate=Aupdate.add((x,y));第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的周本文档来自技高网...

【技术保护点】
一种基于2D DFS迷宫的数字置乱方法,其特征在于包括以下步骤:第1步:设定迷宫初始范围Sinit=()m×n和迷宫有效区域Smaze=(si,j)m×n,对于∀si,j,i=0,...,m-1,j=0,...,n-1,]]>若si,j∉Smaze,]]>则标记si,j=‑1,反之则标记si,j=0表示该节点未访问,若si,j>0表示该节点已访问;第2步:对于∀si,j∈Smaze,i=0,...,m-1,j=0,...,n-1,]]>记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=Φ;第4步:随机选取标记sx,y=1,将sx,y的坐标(x,y)加入节点更新序列Aupdate=Aupdate.add((x,y));第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范围内的所有节点置乱。...

【技术特征摘要】
1.一种基于2D DFS迷宫的数字置乱方法,其特征在于包括以下步骤:
第1步:设定迷宫初始范围Sinit=()m×n和迷宫有效区域Smaze=(si,j)m×n,对于
∀si,j,i=0,...,m-1,j=0,...,n-1,]]>若si,j∉Smaze,]]>则标记si,j=-1,反之则标记
si,j=0表示该节点未访问,若si,j>0表示该节点已访问;
第2步:对于∀si,j∈Smaze,i=0,...,m-1,j=0,...,n-1,]]>记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=Φ;
第4步:随机选取标记sx,y=1,将sx,y的坐标(x,y)加
入节点更新序列Aupdate=Aupdate.add((x,y));
第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范围内的所有节点置乱。
2.如权利要求1所述的基于2D DFS迷宫的数字置乱方法,其特征在于第
8步中映射方法具体包括以下步骤:
第8.1步:选取整数作为映射偏移量ll,llmodAupdate.length≠0,将其按式(1)
规范到(-Aupdate.length,Aupdate.length)范围内的整数,按式(2)计算index;
ll=llmodAupdate.length              (1)
index=(ll+Aupdate.length)modAupdate.lengthll<0llll>0---(2)]]>第8.2步:将Sinit复制为T=(ti,j)m×n;
第8.3步:对于按式(3)将si,j赋值给tx,y;
(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。
3.如权利要求1所述的基于2D DFS迷宫的数字置乱方法,其特征在于:
选取两个随机数发生器y=RG0(x),y=RG1(x),设定随机初始值
RG0.init=seed0,RG1.init=seed1分别生成迷宫节点更新序列第8步中映射方法具体包括以下步骤:
第8.1步:输入任意整数作为映射偏移量ll,并将其按式(4)规范到
范围内的整数,按式(5)计算index;
ll=llmodAupdate0.length---(4)]]>index=(ll+Aupdate0.length)modAupdate0.lengthll<0llll>0---(5)]]>第8.2步:将Sinit复制为T=(ti,j)m×n;
第8.3步:对于按式(6)将si,j赋值给tx,y;
(i,j)=Aupdate0(ii),ii=0,...,Aupdate0.length-1]]>(x,y)=Aupdate1(kk),kk=0,...,Aupdate1.length-1---(6)]]>kk=(ii+index)modAupdate1.length]]>第8.4步:输出T=(ti,j)m×n。
4.如权利要求2所述的基于2D DFS迷宫的数字置乱方法,其特征在于:

\t在进行图像置乱时,具体包括以下步骤:
第(1)步:读取待置乱图像像素矩阵P=(pi,j)m×n作为Sinit,在Sinit上选取特
定区域作为Smaze;
第(2)步:选取作为迷宫的初始节点,选取随机数发生器<...

【专利技术属性】
技术研发人员:邵利平祝莹杨璐
申请(专利权)人:陕西师范大学
类型:发明
国别省市:陕西;61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1