一種基于3D Growing Tree迷宮的數字置亂方法
【專利摘要】本發明提供一種基于3D Growing Tree迷宮的數字置亂方法,預先對Growing Tree迷宮生成區域進行人為限定,從而可用于人為指定的任意3D封閉連通區域,同時按迷宮節點更新順序對迷宮設定區域的每個節點賦予唯一的編號,由此產生迷宮設定區域所有節點的排列,在此基礎上構造了基于3D Growing Tree迷宮節點更新序列和節點更新序列復合的置亂方法,從而可將所有節點置亂。本發明所給出的置亂方法具有普適性和靈活性,在使用過程中不存在任何限制,不僅能應用于傳統置亂方法所針對的規則區域,例如正方形和矩形區域,也可用于任意選定的3D封閉連通不規則區域置亂。本發明也給出了用于圖像位面立方體,RGB立方體和RGB通道立方體的圖像置亂方法。
【專利說明】-種基于3D Growing Tree迷宮的數字置亂方法
【技術領域】
[0001] 本發明主要涉及信息安全和數字信號處理等交叉研究領域,具體為基于Growing Tree迷宮生成策略的數字置亂方法,特別涉及基于3D Growing Tree迷宮的數字置亂方法。
【背景技術】
[0002] 近年來,伴隨著計算機和網絡技術的發展,越來越多的圖像在網絡中傳輸,在給用 戶提供方便的同時,也帶來了一系列的安全隱患。對圖像的不當使用和惡意篡改,不僅涉及 個人隱私,也會給社會帶來嚴重負面影響。保障圖像的核心技術是數字圖像加密。
[0003] 在數字圖像加密領域,研究最為廣泛和靈活的一類圖像加密方法,就是在同一空 間內,對圖像的重編碼技術,即圖像置亂技術。
[0004] 隨著計算機技術的飛速發展,數字圖像置亂技術已成為數字安全傳輸和保密的主 要手段。其基本思路就是把一幅圖像經過一定的數學變換,轉變成面目全非的另一幅圖像, 以起到對圖像的安全保密作用。
[0005] 數字圖像置亂也是目前隱密術、數字水印、信息分存和可視密碼技術中一項關鍵 預處理技術。已受到了國內外學者的普遍重視,并取得了豐碩的研究成果。
[0006] 數字圖像置亂最初來源于有線電視信號加密,早期的置亂在位置空間進行,用于 對圖像像素位置打亂,這些置亂方法包括行倒置置亂、行平移置亂、行置換置亂、行循環置 舌U行分量切割置亂等。隨著置亂技術的不斷發展,目前已提出的置亂方法多種多樣,既可 用于位置置換,也可用于灰度替代。
[0007] 當前已提出的置亂方法主要有:基于離散元素序列的置亂方法、基于掃描路線的 置亂方法、基于遍歷矩陣的置亂方法、基于迭代函數系統的置亂方法、基于離散混沌映射的 置亂方法、基于中國拼圖的置亂方法和基于矩陣變換的置亂方法等。
[0008] 目前盡管已提出了多種置亂方法,但傳統置亂方法大多只能用于規則區域置亂, 例如正方形和長方形區域,而不能對圖像選定的任意不規則區域進行置亂。
[0009] 例如基于Fibonacci序列和Lucas序列的置亂方法將置亂圖像的寬、高拘泥為 Fibonacci序列和Lucas序列元素;基于SCAN語言和Hilbert曲線的置亂方法將置換圖像 的大小約束為2nX2n的正方形圖像;由于并非所有圖像都存在騎士巡游路徑,由此導致了 基于騎士巡游的置亂方法只能用于圖像寬、高在特定尺度上的圖像;對于奇數階幻方,其置 亂圖像邊長為奇數,對于雙偶階幻方,其置亂圖像邊長為4的整數倍;由于任意階的拉丁方 并非都存在,基于拉丁方的置亂方法只能用于置亂圖像邊長為特定尺度的圖像,例如邊長 為Pn且P為素數的圖像;對于離散Kolmogorov Flows Map和亞仿射變換,只能用于置亂正 方形圖像;傳統的基于矩陣的圖像置亂方法,其基本表示形式為X[i] = (AX[H])mod N,但由 于只有一個尺度參數N,由此決定了基于矩陣的圖像置亂方法只能用于置亂特定尺度的圖 像,例如正方形圖像和對矩形圖像的灰度進行置亂。
[0010] 在文獻二維非等長圖像置亂變換(電子學報,2007, 35 (7) : 1290-1294), 二維三角映射及其在圖像置亂上的應用(Information Technology Journal,2008, 7 (I) :40-47),二維雙尺度矩形映射及其在圖像置亂上的應用(計 算機輔助設計與圖形學報,2009, 21 (7) : 1026-1034)和多尺度三角映射及其在 變尺度置舌L 上的應用(International Journal of Computer Applications in Technology,2010,38(l-3):74-85),我們將 X[i] = (AX[卜 1])mod N 拓展為 X[i] = (AX[卜1]) modN,N為有限個尺度構成的尺度向量,提出了 2維非等長變換存在性判據,2維雙尺度矩形 映射的特殊形式-2維三角映射,以及2維雙尺度矩形映射一般性構造方法和多尺度三角映 射。盡管X[i]= (AX[H])modN可用于任意矩形圖像置亂,并可對圖像位置和灰度同時置亂, 但所提出的方法只能對規則區域進行置亂,不能用于對選定的任意不規則區域進行置亂。 [0011] 傳統的迷宮生成方法在人工智能和優化計算領域應用較廣,一般用于動態復雜場 景的模擬和仿真,在信息安全領域涉及較少,在文獻基于迷宮置換和Logistic混沌映射的 圖像加密算法(計算機應用,2014, 34 (7) : 1902-1908),我們探討了基于DFS迷宮節點入棧 順序和行優先掃描順序高效產生置換的方法,將迷宮生成方法應用于任意矩形圖像加密, 但所提出的方法不能應用于圖像的任意連通不規則封閉區域加密。
【發明內容】
[0012] 本發明的目的在于克服現有技術缺陷,提供一種基于3D Growing Tree迷宮的數 字置亂方法,該方法可用于3D任意連通封閉區域數據置亂。
[0013] 為實現上述目的,本發明采用以下技術方案:
[0014] -種基于3D Growing Tree迷宮的數字置亂方法,包括以下步驟:
[0015] 第1步:設定迷宮初始范圍 Sinit - OmXnXl 和迷宮有效區域Smaze= (Si,^nixnxl,對 于 i = 〇, ...,m_1,j = 〇,…,n_1,k = 〇,…,1_1,若在*^縦,則標記 Si,j,k = _1, 反之則標記si;j,k = 0表示該節點未訪問,若SukX)表示該節點已訪問;
[0016] 第 2 步:對于 eS,亂_e,i = 〇,…,m-i,j = 〇,…,n-i,k = 0,…,1-1,記 SiJk. d,d = 0, 1,2, 3, 4, 5依次為節點Si,」,k的下方、右方、上方、左方、底部和頂部墻,初始化Suk. d = -1,d = 0, 1,2, 3, 4, 5, -1表示為有墻,0表示無墻;
[0017] 第3步:選擇隨機數發生器y = RG(X),設定隨機數發生器初始值RG. init = seed, 初始化迷宮節點列表Amazej = ,節點更新序列Aupdatej = ,按隨機數發生器隨機產生2個 概率 Praent, Pt5ldestG [0, 1);
[0018] 第 4 步:選取釀,X = X。,y = y。,z = z。,將 sx,y,z*別加到 Amaze^ Aupdate, 艮P Amaze Amaze. £idd (Sx,y,z) AUpdate AUpdate. £idd (Sx,y,z);
[0019] 第5步:若Amaze尹O,則循環執行第6步?第8步
[0020] 第6步:產生1個隨機數P G [0, 1),若P G [0, U,則取Amaze尾部元素作為 當前節點Sw,反之若P G [P_ent,Preeent^ldest],則取Amaze頭部元素作為當前節點s w, 反之則從Amaze中隨機取一個元素作為當前節點sx,y,z, sx,y,z = Amaze. at (index), index = random(Amaze. length);
[0021] 第7步:若sx y,z周圍的鄰近節點中 Sx+l,y,z, Sx,y+i,z, Sx-i,y,z, Sx,y-i,z, Sx,y,z-I, Sx,y,Z+1存在未訪問的有效節點Sx,e Smaze,則將sx,,z,加入到Amaze,即A maze = Amaze. add (Sx',y/,z' ),A1^pdate - ^update, add (Sx',y/,z');
[0022] 第8步:若sx,y周圍的鄰近節點中 Sx+l,y,Z, SX,y+l,Z, Sx- 1,y,z, SX,y- 1,z, SX,y,z -I, SX,y,z + l 不存 在未訪問的有效節點Sx,,y,,z,G Sniazej,則刪除Aniazej索引位置為Index位置的元素,即Aniazej. delete (index);
[0023] 第9步:利用Aupdate構造 Sm_ = (Si^k)mxnxl范圍內所有節點間的映射關系,從而 ^寸 Smaze (Si,j,k) mXnX 1 范圍內的所有節點置亂。
[0024] 作為本發明進一步優選方案,第9步中映射方法具體包括以下步驟:
[0025] 第9. 1步選整數作為映射偏移量11,11 mod Aupdate. length關0,將其按式⑴規 范到(-Aupdate. length, Aupdate. length)范圍內的整數,按式⑵計算index ;
[0026] 11 = IlmodAupdate. length (I)
【權利要求】
1?一種基于3DGrowingTree迷宮的數字置亂方法,其特征在于包括以下步驟: 第1步:設定迷宮初始范圍Sinit = 〇mXnX1和迷宮有效區域 Smaze ^i, j, mXnX 1?對于
則標記Si,j,k= -1,反之 則標記si;j,k = 0表示該節點未訪問,若SukX)表示該節點已訪問; 第2步:對于
,記Si,j,k.d,d =0, 1,2, 3, 4, 5依次為節點Si,」,k的下方、右方、上方、左方、底部和頂部墻,初始化Si,」,k.d=-1,d= 0, 1,2, 3, 4, 5, -1表示為有墻,0表示無墻; 第3步:選擇隨機數發生器y=RG(x),設定隨機數發生器初始值RG.init=seed,初 始化迷宮節點列表Amaze; = 〇,節點更新序列Aupdate; = 〇,由隨機數發生器隨機產生2個概 Precent,P〇ldest G [〇, 1); 第4步:選取
,將分別加到A_e和Aupdate,即A_e Anaze. add (Sx,y,z) AUpdate AUpdate. £idd (Sx,y,z); 第5步:若A_e尹〇,則循環執行第6步?第8步; 第6步:產生1個隨機數PG[〇, 1),若PG[〇,P_mt],則取Am_尾部元素作為當前節 點,反之若Pe[P_nt,P_nt+U,則取A_頭部元素作為當前節點sw,反之則從 Amaze 中隨機取一個元素作為當前節點sx,y,z,sx,y,z =Amaze.at(index),index=random(Amaze. length); 第7步:若sx,y,z周圍的鄰近節點中Sx+l,y,z, Sx,y+i,z, Sx-i,y,z, Sx,y-i,zj Sx,y,z-1, Sx,y,z+i存在未訪 問的有效節點Sx,,y,,z,GSMze,則將sx,,y,,z,加入到AMze,BpA-e=AMze.add(sx,,y,,z,), ^update - AUpdate. add (Sx,,y,,z,); 第8步:若sx,y,z周圍的鄰近節點中Sx+l,y,Z,SX,y+l,Z,Sx- 1,y,z, Sx,y- 1,z,SX,y,z -1,SX,y,z + l不存在 未訪問的有效節點Sx,,ywG,則刪除索引位置為Index位置的元素,即AMze;. delete(index); 第9步:利用Aupdate構造Smaze = (si;j,k)mXnX1范圍內所有節點間的映射關系,從而將Smaze =(Si,j,k)mXnX1范圍內的所有節點置亂。 2?如權利要求1所述的基于3DGrowingTree迷宮的數字置亂方法,其特征在于第9 步中映射方法具體包括以下步驟: 第9. 1步選整數作為映射偏移量11,llmodAupdate.length尹0,將其按式⑴規范到 (_AUpdate.length,Aupdate.length)范圍內的整數,按式⑵計算index; 11 =llmodAupdate.length (1)
弟 9. 2 步:將Sinit 復制為T= (tm^xnxi; 第9. 3步:對于
,按式⑶將su』賦值給tx,y,z; (i,j,k) =Aupdate(ii),ii= 0, ...,Aupdate.length-1 (x,y,z) =Aupdate (kk),kk= 0, ...,Aupdate.length-1 (3) kk= (ii+index)modAupdate.length 第 9. 4 步:輸出T=(tykLxnxi。 3?如權利要求1所述的基于3DGrowingTree迷宮的數字置亂方法,其特征在于: 選取兩個隨機初始值RGQ.init=seed。,RGpinit=seedi分別生成迷宮節點更新序列
第9步中映射方法具體包括以下步驟: 第9. 1步:輸入任意整數作為映射偏移量11,并將其按式⑷規范到
范圍內的整數,按式(5)計算index;
弟 9. 2 步:將Sinit 復制為T= (tm^xnxi; 第9. 3 :對于
,按式(6)將Suk賦值給tx,y,z ;
第 9. 4 步:輸出T= (tm^xnxi。 4?如權利要求2所述的基于3DGrowingTree迷宮的數字置亂方法,其特征在于,在進 行圖像置亂時,具體包括以下步驟: 第⑴步:讀取待置亂圖像的位面立方體,對于8位圖像P8,將P8.W= 作為 Sinit,對于24位圖像,將P24.W= 作為Sinit,在Sinit上選取特定區域作為S_e ; 第(2)步:選取
作為迷宮的初始節點,選取隨機數發生器y=RG(x),設 定初始值RG.init=seed和映射偏移量11 ; 第⑶步:輸出置亂后的位面立方體,對于8位圖像,將(w'uk)mXnX8寫為置亂后的 圖像,對于24位圖像,將(w' 寫為置亂后的圖像。 5?如權利要求3所述的基于3DGrowingTree迷宮的數字置亂方法,其特征在于,在進 行圖像置亂時,具體包括以下步驟: 第⑴步:讀取待置亂圖像的位面立方體,對于8位圖像P8,將P8.W= 作為 Sinit,對于24位圖像,將P24.W= 作為Sinit,在Sinit上選取特定區域作為S_e ; 第⑵步:選取
作為迷宮的初始節點,選取隨機數發生器y= RG〇(x),y=RGi(x),設定初始值RGQ.init=seed。,RGpinit=seedi和映射偏移量 11 ; 第⑶步:輸出置亂后的位面立方體,對于8位圖像,將(w'uk)mXnX8寫為置亂后的 圖像,對于24位圖像,將(w' 寫為置亂后的圖像。 6?如權利要求2所述的基于3DGrowingTree迷宮的數字置亂方法,其特征在于,在進 行圖像置亂時,具體包括以下步驟: 第⑴步:讀取待置亂24位圖像P24的RGB立方體P24.C= (Ci,j,k)mXnX3作為Sinit,在Sinit上選取特定區域作為S_e ; 第(2)步:選取
作為迷宮的初始節點,選取隨機數發生器y=RG(x),設 定初始值RG.init=seed和映射偏移量11 ; 第⑶步:輸出置亂后的RGB立方體(c' ,將其寫為置亂后的圖像。 7?如權利要求3所述的基于3DGrowingTree迷宮的數字置亂方法,其特征在于,在進 行圖像置亂時,具體包括以下步驟: 第⑴步:讀取待置亂24位圖像P24的RGB立方體P24.C= (Ci,j,k)mXnX3作為Sinit,在Sinit上選取特定區域作為S_e ; 第⑵步:選取£乂_作為迷宮的初始節點,選取隨機數發生器y=RG〇(x),y=RGi(x),設定初始值RGQ.init=seed。,RGpinit=seedi和映射偏移量 11 ; 第⑶步:輸出置亂后的RGB立方體(c' ,將其寫為置亂后的圖像。 8?如權利要求2所述的基于3DGrowingTree迷宮的數字置亂方法,其特征在于,在進 行圖像置亂時,具體包括以下步驟: 第⑴步:讀取待置亂24位圖像P24的RGB通道立方體
將其分別作為初始范圍
,在
選取特定區域作為有效區域
第⑵步:選取
作為迷宮的初始節點,選取隨 機數發生器y=RGK(x),y=RGg(x),y=RGB(x),設定初始值RGK.init=seedK,RGg.init=seedG,RGB.init=seedB 和映射偏移量 11K, 11G, 11B ; 第(3)步:輸出置亂后的R、G、B通道立方體
和
,將其寫為置亂后的圖像。 9?如權利要求3所述的基于3DGrowingTree迷宮的數字置亂方法,其特征在于,在進 行圖像置亂時,具體包括以下步驟: 第⑴步:讀取待置亂24位圖像P24的RGB通道立方體
、
將其分別作為初始范圍
,在
選取特定區域作為有效區域
第(2)步:選取
作為迷宮的初始節點,選取隨機數發生器
,設定初 始 值
和映射偏移量11K,11s,11B; 第(3)步:輸出置亂后的R、G、B通道立方體
和
將其寫為置亂后的圖像。
【文檔編號】G06T1/00GK104408683SQ201410745921
【公開日】2015年3月11日 申請日期:2014年12月8日 優先權日:2014年12月8日
【發明者】邵利平 申請人:陜西師范大學