本發(fā)明屬于圖像信息安全和數(shù)字圖像信號處理交叉領(lǐng)域,涉及一種圖像密寫嵌入和提取方法,特別涉及一種基于無權(quán)值向量的改進(jìn)EMD圖像密寫嵌入和提取方法。
背景技術(shù):
近年來,伴隨著計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的發(fā)展,越來越多的圖像在網(wǎng)絡(luò)中傳輸,在給用戶提供方便的同時,也帶來了一系列的安全隱患。對圖像的不當(dāng)使用和惡意篡改,不僅會涉及個人隱私,也會給社會帶來嚴(yán)重的負(fù)面影響。
針對數(shù)字圖像信息安全,人們已提出了多種方法,如:①將明文圖像轉(zhuǎn)換為密文圖像的數(shù)字圖像加密技術(shù);②將秘密信息隱藏于非相關(guān)載體中的數(shù)字圖像隱寫技術(shù);③給圖像添加版權(quán)認(rèn)證標(biāo)識,對圖像的真實(shí)性和完整性,來源者和使用者進(jìn)行認(rèn)證的數(shù)字圖像水印技術(shù);④結(jié)合現(xiàn)有技術(shù)特點(diǎn)對圖像的真實(shí)性和完整性進(jìn)行甄別的數(shù)字圖像盲取證技術(shù)以及⑤將機(jī)密圖像拆分為影子圖像,利用部分分發(fā)影子圖像重構(gòu)秘密圖像的數(shù)字圖像信息分存技術(shù)。
其中,數(shù)字圖像隱寫技術(shù)是利用數(shù)字圖像的冗余和人類視覺的掩蔽特性,來將秘密信息隱藏于非相關(guān)的圖像載體中,從而進(jìn)行隱蔽通信,使得非法攻擊者難以從海量的公開傳輸圖像中提取出隱蔽的秘密信息信息,從而最大程度地保障傳輸中的機(jī)密信息的安全。
針對數(shù)字圖像隱寫,人們已經(jīng)提出了多種數(shù)字圖像密寫嵌入方法。例如致力于提升秘密信息嵌入容量的BPCS方法(E,Eason RO.Principle and applications of BPCS-Steganography[C]//Proceedings of SPIE-The International Society for Optical Engineering,1999:464-473)和PVD方法(Wu D C,Tsai W H.A steganographic method for images by pixel-value differencing[J].Pattern Recognition Letters,2003,24(9–10):1613-1626.)以及致力于提高圖像視覺質(zhì)量的EALSBMR方法等。
現(xiàn)有的圖像密寫方法通常分為2類,空域密寫方法和變換域密寫方法。比較典型的變換域密寫方法主要有F3密寫,F(xiàn)4密寫和F5密寫方法等,它們都是載體圖像DCT變換后,在量化后的非零DCT系數(shù)上嵌密,但由于量化后的DCT系數(shù)中零值較多,因此秘密信息嵌入量極低。相對于變換域密寫方法,空域密寫方法不僅能提供較大的嵌入容量,也能較大地保持嵌密圖像的視覺質(zhì)量。
最早期的空域密寫方法為LSB密寫嵌入方法(Li C C,Lie W N.Data hiding in images with adaptive numbers of least significant bits based on the human visual system[C]//IEEE International Conference on Image Processing,1999:286-290.)即用秘密信息替換載體圖像的最低比特位,由于載體圖像最低比特位全部攜帶秘密信息,而圖像的最低比特位對圖像視覺質(zhì)量影響極小,因此LSB密寫秘密信息的嵌入量大,密寫圖像視覺質(zhì)量高,但秘密信息易改變低位信息比特的統(tǒng)計(jì)特性,因此安全性不高。對LSB密寫方法的改進(jìn),引入了LSBM方法(Ker AD.Improved Detection of LSB Steganography in Grayscale Images[C]//International Conference on Information Hiding,2004:97-115),即LSB匹配方法,相對于LSB密寫方法,LSB匹配方法的策略是,當(dāng)秘密信息和載體圖像的最低比特位相同時不做改變,否則隨機(jī)的對載體圖像像素值加減1,由于像素值整體增加或減少的概率相等,因此可抵抗簡單LSB密寫分析方法,但其秘密信息的嵌入容量相比于LSB密寫并未實(shí)質(zhì)地提高。為減輕對載體的影響,后續(xù)又提出了LSBMR密寫方法(Mielikainen J.IEEE Signal Processing Letters[J].2006,13(5):285-287),即即LSB匹配重訪方法,其原理是在兩個連續(xù)的像素中最多只對其中一個加減1從而嵌入2比特秘密信息,由于LSBMR方法不是直接用秘密信息替換載體圖像的最低比特位,且明顯降低了對載體圖像的修改率,因此,LSBMR方法在提高密寫圖像質(zhì)量的基礎(chǔ)上提高了其安全性。為了進(jìn)一步提高圖像的嵌入質(zhì)量,EALSBMR方法(Luo W Q,Huang F J,Huang J W.IEEE Transactions on Information Forensics and Security,Edge Adaptive Image Steganography Based on LSB Matching Revisited[J].2010,5(2):201-214.)被提出,即邊緣自適應(yīng)LSB匹配重訪方法,可根據(jù)秘密信息長度和載體圖像自身平滑程度自適應(yīng)的嵌入秘密信息,優(yōu)先選擇圖像較粗糙區(qū)域進(jìn)行嵌入,避免了對載體圖像平滑區(qū)域的修改,因此EALSBMR密寫方法下的密寫圖像圖像質(zhì)量較之LSBMR更好。
LSBMR方法最獨(dú)特的地方是對兩個載體數(shù)據(jù)中至多改變一個便可嵌入兩比特秘密信息。這也為后面進(jìn)行更大容量嵌入的EMD方法提供了很多借鑒。EMD方法,即全方向擴(kuò)展方法,是對載體進(jìn)行微小修改以進(jìn)行大容量嵌入的一種有效的嵌入方法(Zhang X P,Wang S Z.Efficient steganographic embedding by exploiting modification direction.IEEE Communication Letter,2006,10(11):781-783),通過對n個載體數(shù)據(jù)最多加減1來嵌入一個2n+1進(jìn)制的數(shù)。為進(jìn)一步提高嵌入容量,文獻(xiàn)Kim H J,Kim C,Choi Y,Wang S Z,Zhang X P.Improved modification direction methods[J],2010,60(2):319-325給出了EMD-2方法和2-EMD方法,EMD-2方法允許對n個載體數(shù)據(jù)最多進(jìn)行2個加減1而嵌入一個更大進(jìn)制的數(shù),2-EMD方法即連續(xù)用兩次EMD方法可嵌入一個(2n+1)2進(jìn)制的數(shù),相比于EMD方法,EMD-2方法和2-EMD方法更大程度的提高了秘密信息嵌入容量。在EMD方法的基礎(chǔ)上也能實(shí)現(xiàn)對載體數(shù)據(jù)的全方位改變,即EMD-n方法(Niu X J,Ma M,Tang R,Yi Z X,2015.Image Steganography via Fully Exploiting Modification Direction[J],2015,9(5):243-254),即在n個載體數(shù)據(jù)都可改變的基礎(chǔ)上嵌入一個3n進(jìn)制的數(shù),帶來更大的嵌入容量。
但現(xiàn)有的EMD嵌入方法還存在著很多問題,還有很多提升空間,主要表現(xiàn)在:
1)傳統(tǒng)的EMD方法通常采用特定的權(quán)值向量,以n個載體數(shù)據(jù)進(jìn)行調(diào)整嵌入的EMD方法為例,對于簡單EMD方法,其嵌入的權(quán)值向量為(1,2,…,n);對于EMD-2方法,當(dāng)n=2時,其嵌入的權(quán)值向量設(shè)定為(1,3),當(dāng)n>2時,其嵌入的基向量設(shè)定為(1,2,…,6+5(n-3));對于EMD-n方法,其嵌入的權(quán)值向量被設(shè)定為3的冪次。而特定的嵌入策略降低了密寫的安全性,若知道對應(yīng)的密寫方法和獲取對應(yīng)的密寫載體,則可從中容易地提取嵌入的秘密信息。
2)傳統(tǒng)的EMD嵌入方法通常只能利用權(quán)值向量進(jìn)行組合形成的1為起始的連續(xù)組合數(shù)進(jìn)行±1調(diào)整以及0即不進(jìn)行調(diào)整來作為秘密信息的表達(dá)范圍,這使得權(quán)值向量不能進(jìn)行充分有效的組合,從而限制了秘密信息的表達(dá)范圍,使得嵌入容量十分有限。對于EMD-2方法,其嵌入的容量通常達(dá)不到其嵌入的理論值。
對于傳統(tǒng)的簡單EMD方法和EMD-n方法,盡管能達(dá)到該調(diào)整范圍內(nèi)的最大的嵌入容量,但傳統(tǒng)的EMD方法僅能提供有限的幾種調(diào)整方案,例如對n個載體數(shù)據(jù)僅調(diào)整1個的簡單EMD方法,對n個載體數(shù)據(jù)僅調(diào)整2個的EMD-2方法和對n個載體數(shù)據(jù)調(diào)整n個載體數(shù)據(jù)的EMD-n方法,由此嚴(yán)重制約EMD方法的適用面,使得EMD方法不能在圖像視覺嵌入質(zhì)量和嵌入容量上進(jìn)行較好地折中。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于克服現(xiàn)有技術(shù)缺陷,提供一種基于無權(quán)值向量的改進(jìn)EMD圖像密寫嵌入和提取方法,在保持同樣的嵌入視覺質(zhì)量前提下,采用無權(quán)值向量避免了權(quán)值向量設(shè)置的有限性所導(dǎo)致的容量受限并通過與載體和密鑰相關(guān)的嵌入提取環(huán)節(jié)來進(jìn)一步增強(qiáng)嵌入信息的安全性。
為實(shí)現(xiàn)上述目的,本發(fā)明采用以下技術(shù)方案:
一種基于無權(quán)值向量的改進(jìn)EMD圖像密寫嵌入方法,包括以下步驟:
第1步:記分辨率為M×N的p比特載體圖像為C=(ci,j)M×N,ci,j∈{0,1,…,2p-1},記秘密信息對應(yīng)為長度為l的2進(jìn)制比特位串序列為B,記剩余秘密信息序列為Blast,初始化Blast=B,將C掃描為1維載體元素序列S=(si)MN,記S的剩余序列為Slast,初始化Slast=S,記Sembedded為已嵌入秘密信息的載體元素序列,初始化Sembedded=Φ;
第2步:由用戶給定的系統(tǒng)參數(shù)μ∈[3.57,4]和初始值x0∈(0,1)迭代生成隨機(jī)數(shù),為消除暫態(tài)效應(yīng),將迭代產(chǎn)生的前IT,IT>0個隨機(jī)數(shù)拋棄;
第3步:由連續(xù)生成的4個隨機(jī)數(shù)分別為xt,xt+1,xt+2,xt+3,t≥IT和由用戶給定嵌密元素?cái)?shù)量n的最大值nmax,nmax>0,生成截取的嵌密元素?cái)?shù)量n∈{1,2,…,nmax}和嵌密元素中最多改變的元素?cái)?shù)m∈{1,2,…,n};
第4步:計(jì)算n個嵌密元素最多改變m個嵌密元素所能嵌入的秘密信息組合數(shù)Vkind;
第5步:由xt,xt+1,xt+2,xt+3,t≥IT生成Vkind×n維嵌密元素調(diào)整表
第6步:記其中l(wèi)last為剩余秘密信息序列的長度,確定當(dāng)前截取的2進(jìn)制位串序列的長度lcurrent,從Blast中截取長度為lcurrent的比特位串Bcurrent,并對Blast進(jìn)行更新;
第7步:將取出的lcurrent個2進(jìn)制位串序列轉(zhuǎn)換為對應(yīng)的10進(jìn)制數(shù)d作為待嵌入的秘密信息;
第8步:記其中l(wèi)′last為剩余S的長度,從Slast中取前n個元素作為Scurrent并更新Slast;
第9步:記T′adjust第d行為記載體元素序列Scurrent=(si)n,對Scurrent依據(jù)調(diào)整為S′current=(s′i);
第10步:將S′current添加到Sembedded中;
第11步:反復(fù)執(zhí)行第3步到第10步,直至llast=0,由Sembeded重構(gòu)秘密圖像C′=(c′i,j)M×N并輸出。
進(jìn)一步,在第1步中將C掃描為1維載體元素序列S=(si)MN的具體方法為式(1):
siN+j=ci,j,i=0,1,…,M-1,j=0,1,…,N-1 (1);
在第2步中由用戶給定的系統(tǒng)參數(shù)μ∈[3.57,4]和初始值x0∈(0,1)迭代生成隨機(jī)數(shù)的具體方法為將μ,x0代入式(2)迭代生成隨機(jī)數(shù):
xi+1=μxi(1-xi) (2);
在第3步中由連續(xù)生成的4個隨機(jī)數(shù)分別為xt,xt+1,xt+2,xt+3,t≥IT,和由用戶給定嵌密元素?cái)?shù)量n的最大值nmax,nmax>0,生成截取的嵌密元素?cái)?shù)量n∈{1,2,…,nmax}和嵌密元素中最多改變的元素?cái)?shù)m∈{1,2,…,n}的具體方法為將xt按式(3)映射為參數(shù)n,并由xt+1和n按式(4)確定參數(shù)m:
式(3)和式(4)中,為向下取整函數(shù);
在第4步:計(jì)算n個嵌密元素最多改變m個嵌密元素所能嵌入的秘密信息組合數(shù)Vkind的具體方法為:
式(5)中,表示n個嵌密元素僅改變i個元素所對應(yīng)的組合數(shù),2i表示被改變的i個元素進(jìn)行±1調(diào)整的全部情況。
進(jìn)一步,在第5步中由xt,xt+1,xt+2,xt+3,t≥IT生成Vkind×n維嵌密元素調(diào)整表的具體方法為在于包括以下步驟:
第5.1步:初始化全0的Vkind×n維嵌密元素調(diào)整表
第5.2步:初始化計(jì)數(shù)變量j=0,k=0;
第5.3步:將j按3進(jìn)制數(shù)進(jìn)行表示,并用長度為n的1維向量V=(vi)n進(jìn)行存儲,其中vi∈{0,1,2},i=0,1,…n-1對應(yīng)為j的第i位3進(jìn)制位,將V映射為V′=(v′i)n,v′i∈{-1,0,1},j=j(luò)+1;
第5.4步:統(tǒng)計(jì)V′中的非零元素?cái)?shù)量nnz,若nnz≤m,則將V′嵌入到Tadjust的第k行,置k=k+1;
第5.5步:反復(fù)執(zhí)行第5.3步和第5.4步,直至k=Vkind
第5.6步:將Tadjust置亂為T′adjust。
進(jìn)一步,在第5.3步中將V映射為V′=(v′i)n,v′∈{-1,0,1}的具體方法為式(6):
在第5.6步中,將Tadjust置亂為T′adjust的具體方法為將Tadjust按式(7)行置亂為T′adjust;
T′adjust=scramblerow(Tadjust,a,b) (7);
式(7)中,a,b為同余置亂參數(shù)分別由xt+2,xt+3映射得到,函數(shù)scramblerow()執(zhí)行的功能如式(8)所示,即將Tadjust第i行作為T′adjust第i′行;
i'=(ai+b)mod Vkind;i=0,1,…,Vkind-1 (8);
式(7)中同余參數(shù)a的具體生成規(guī)則為將xt+2,xt+3按式(9)映射為x′t+2∈[3.57,4],將xt+2,xt+3按式(10)映射為x′t+3,將x′t+2和x′t+3分別作為式(2)的系統(tǒng)參數(shù)和初始值,將式(2)產(chǎn)生的隨機(jī)數(shù)R,按式(11)量化R′,反復(fù)執(zhí)行式(2)直至R′和Vkind互質(zhì),將R′作為a,為消除暫態(tài)效應(yīng),將迭代產(chǎn)生的前IT,IT>0個隨機(jī)數(shù)拋棄;
x′t+3=0.5(xt+2+xt+3) (10);
式(7)中同余參數(shù)b的具體生成規(guī)則如式(12)所示:
進(jìn)一步,在第6步中確定當(dāng)前截取的2進(jìn)制位串序列的長度lcurrent的具體方法為式(13)
在第6步中從Blast中截取長度為lcurrent的比特位串Bcurrent的具體方法為式(14):
Bcurrent=truncate(Blast,0,lcurrent-1) (14);
式(14)中,函數(shù)truncate()表示截取函數(shù),即從索引0位置開始到lcurrent-1結(jié)束截取Blast中對應(yīng)的2進(jìn)制位串;
在第6步中對Blast進(jìn)行更新的具體方法為式(15):
Blast=truncate(Blast,lcurrent,llast-1) (15)。
進(jìn)一步,在第7步中將取出的lcurrent個2進(jìn)制位串序列轉(zhuǎn)換為對應(yīng)的10進(jìn)制數(shù)d的具體方法為式(16):
式(16)中,bi表示lcurrent個2進(jìn)制位串中的第i個比特;
在第8步中從Slast中取前n個元素作為Scurrent的具體方法為式(17):
Scurrent=truncate(Slast,0,n-1) (17)
在第8步中更新Slast的具體方法為:
Slast=truncate(Slast,n,l′last-1) (18);
在第9步中,對Scurrent依據(jù)調(diào)整為S′current=(s′i)的具體方法為式(19):
式(19)中,overflow()為溢出避免函數(shù),用于避免s′i<0|s′i>255,overflow(v)具體執(zhí)行的功能如式(20)所示:
在第10步中,將S′current添加到Sembedded中的具體方法為式(21):
Sembedded=Sembedded||S′current (21);
在第11步中由Sembeded重構(gòu)秘密圖像C′=(c′i,j)M×N的具體方法為式(22):
c′i,j=esiN+j,i=0,1,…,M-1,j=0,1,…,N-1 (22)。
一種基于無權(quán)值向量的改進(jìn)EMD圖像密寫提取方法,包括以下步驟:
第1步:輸入原始的載體圖像C=(ci,j)M×N,ci,j∈{0,1,…,2p-1}和載密圖像C′=(c′i,j)M×N,ci,j∈{0,1,…,2p-1},由用戶給定系統(tǒng)參數(shù)μ∈[3.57,4],初始值x0∈(0,1)和消除暫態(tài)效應(yīng)的迭代次數(shù)參數(shù)IT,IT>0以及嵌密元素?cái)?shù)量n的最大值nmax,nmax>0,記Bfetched為已提取的秘密信息序列,初始化Bfetched=Φ,將C和C′掃描為1維元素序列S=(sk)MN和S′=(s′k)MN,記S和S′的剩余序列分別為Slast和S′last,初始化Slast=S,S′last=S′,由μ,x0生成隨機(jī)數(shù),拋棄前IT個隨機(jī)數(shù);
第2步:由連續(xù)生成的4個隨機(jī)數(shù)xt,xt+1,xt+2,xt+3,t≥IT和nmax,計(jì)算嵌密元素?cái)?shù)量n和嵌密向量中最多改變的元素?cái)?shù)m,計(jì)算n個嵌密元素最多改變m個嵌密元素所能嵌入的秘密信息組合數(shù)Vkind,并生成Vkind×n維嵌密元素調(diào)整表Slast;
第3步:分別從Slast和S′last中提取前n個元素作為Scurrent和S′current,并更新Slast和S′last;
第4步:由Scurrent=(s′i)n,Scurrent=(si)n計(jì)算
第5步:從T′adjust中搜索出對應(yīng)的行號d并轉(zhuǎn)換為對應(yīng)的2進(jìn)制序列bi∈{0,1};
第6步:將Bcurrent連接到Bfetched尾部;
第7步:反復(fù)執(zhí)行第2步到第6步,直到Slast=Φ。
進(jìn)一步,在第1步中將C和C′掃描為1維載體元素序列S=(sk)MN和S′=(s′k)MN的具體方法為式(1):
siN+j=ci,j,i=0,1,…,M-1,j=0,1,…,N-1 (1);
在第1步中由μ,x0生成隨機(jī)數(shù)的具體方法為將μ,x0代入式(2)迭代生成隨機(jī)數(shù)
xi+1=μxi(1-xi) (2);
在第2步中由連續(xù)生成的4個隨機(jī)數(shù)xt,xt+1,xt+2,xt+3,t≥IT和nmax,計(jì)算嵌密元素?cái)?shù)量n和嵌密向量中最多改變的元素?cái)?shù)m的具體方法為式(3)和式(4)計(jì)算出嵌密元素?cái)?shù)量n和嵌密向量中最多改變的元素?cái)?shù)m:
xi+1=μxi(1-xi) (3);
式(3)和式(4)中,為向下取整函數(shù);
在第2步中計(jì)算n個嵌密元素最多改變m個嵌密元素所能嵌入的秘密信息組合數(shù)Vkind的具體方法為式(5):
式(5)中,表示n個嵌密元素僅改變i個元素所對應(yīng)的組合數(shù),2i表示被改變的i個元素進(jìn)行±1調(diào)整的全部情況;
在第2步中生成Vkind×n維嵌密元素調(diào)整表Vkind×n的具體方法在于包括以下步驟:
第2.1步:初始化全0的Vkind×n維嵌密元素調(diào)整表
第2.2步:初始化計(jì)數(shù)變量j=0;
第2.3步:將Vj=3j按3進(jìn)制數(shù)進(jìn)行表示,并用長度為n的1維向量V=(vi)n進(jìn)行存儲,其中vi∈{0,1,2},i=0,1,…n-1對應(yīng)為Vj的第i位3進(jìn)制位,將V映射為V′=(v′i)n,v′∈{-1,0,1};
第2.4步:統(tǒng)計(jì)V′中的非零元素?cái)?shù)量nnz,若nnz≤m,則將V′嵌入到Tadjust的第k行,置k=k+1;
第2.5步:反復(fù)執(zhí)行第2.3步和第2.4步,直至k=Vkind
第2.6步:將Tadjust置亂為T′adjust。
進(jìn)一步,在第2.3步中將V映射為V′=(v′i)n,v′∈{-1,0,1}的具體方法為式(6):
在第2.6步中,將Tadjust置亂為T′adjust的具體方法為將Tadjust按式(7)行置亂為T′adjust;
T′adjust=scramblerow(Tadjust,a,b) (7);
式(7)中,a,b為同余置亂參數(shù)分別由xt+2,xt+3映射得到,函數(shù)scramblerow()執(zhí)行的功能如式(8)所示,即將Tadjust第i行作為T′adjust第i′行;
i'=(ai+b)mod Vkind;i=0,1,…,Vkind-1 (8);
式(7)中同余參數(shù)a的具體生成規(guī)則為將xt+2,xt+3按式(9)映射為x′t+2∈[3.57,4],將xt+2,xt+3按式(10)映射為x′t+3,將x′t+2和x′t+3分別作為式(2)的系統(tǒng)參數(shù)和初始值,將式(2)產(chǎn)生的隨機(jī)數(shù)R,按式(11)量化R′,反復(fù)執(zhí)行式(2)直至R′和Vkind互質(zhì),將R′作為a,為消除暫態(tài)效應(yīng),將迭代產(chǎn)生的前IT,IT>0個隨機(jī)數(shù)拋棄;
x′t+3=0.5(xt+2+xt+3) (10);
式(7)中同余參數(shù)b的具體生成規(guī)則如式(12)所示:
在第3步中從Slast和S′last中提取前n個元素作為Scurrent和S′current的具體方法為式(23):
在第3步中更新Slast和Sl′ast的具體方式為式(24),其中l(wèi)last是Slast的長度:
進(jìn)一步,在第4步中由Scurrent=(s′i)n,Scurrent=(si)n計(jì)算的具體方法為式(25):
式(25)中,fetch()為提取函數(shù),其執(zhí)行的具體功能如式(26)所示,式(26)中overflow′()為提取溢出函數(shù),用于避免tdi=2|tdi=-2,將2和-2分別轉(zhuǎn)換為-1和1;
在第5步中從T′adjust中搜索出對應(yīng)的行號d并轉(zhuǎn)換為對應(yīng)的2進(jìn)制序列的具體方法為式(27),其中
在第6步中將Bcurrent連接到Bfetched尾部的具體方法為式(28):
Bfetched=Bfetched||Bcurrent (28)。
本發(fā)明同現(xiàn)有技術(shù)優(yōu)點(diǎn)分析:
①傳統(tǒng)的EMD方法通常采用特定的權(quán)值向量,以n個載體數(shù)據(jù)進(jìn)行調(diào)整嵌入的EMD方法為例,對于簡單EMD方法,其嵌入的權(quán)值向量被設(shè)定為(1,2,…,n);對于EMD-2方法,當(dāng)n=2時,其嵌入的權(quán)值向量被設(shè)定為(1,3),當(dāng)n>2時,其嵌入的基向量被設(shè)定為(1,2,…,6+5(n-3));對于EMD-n方法,其嵌入的權(quán)值向量被設(shè)定為3的冪次。而特定的嵌入策略降低了密寫的安全性,若知道對應(yīng)的密寫方法和獲取對應(yīng)的密寫載體,則可從中容易地提取嵌入的秘密信息。因此同傳統(tǒng)的EMD方法不同,本發(fā)明對傳統(tǒng)EMD方法進(jìn)行了安全增強(qiáng)改進(jìn),主要表現(xiàn)在:1)通過用戶密鑰結(jié)合混沌映射來隨機(jī)指派嵌密元素?cái)?shù)量和最多調(diào)整的嵌密元素?cái)?shù)量用于生成嵌密元素調(diào)整表;2)通過對嵌密元素調(diào)整表進(jìn)行隨機(jī)行置亂來隨機(jī)決定嵌入的秘密像素和嵌密元素調(diào)整表行之間的映射關(guān)系;3)在整個秘密信息的嵌入過程中對隨機(jī)截取的秘密信息采用了不同的改進(jìn)EMD嵌入策略;4)增強(qiáng)了原始嵌入載體、用戶密鑰和所提出的改進(jìn)EMD方法的綁定,使得不提供原始的嵌入載體和正確的用戶密鑰,將無法對嵌入的秘密信息進(jìn)行正確提取。
②傳統(tǒng)的EMD嵌入方法通常只能利用權(quán)值向量進(jìn)行組合形成的1為起始的連續(xù)組合數(shù)進(jìn)行±1調(diào)整以及0即不進(jìn)行調(diào)整來作為秘密信息的表達(dá)范圍,這使得權(quán)值向量不能進(jìn)行充分的組合,從而限制了秘密信息的表達(dá)范圍,使得嵌入容量十分有限。對于EMD-2方法,其嵌入的容量通常達(dá)不到其嵌入的理論值。因此同傳統(tǒng)的EMD嵌入方法不同,本發(fā)明避免了權(quán)值向量的使用,采用本發(fā)明給出的改進(jìn)EMD嵌入方法可最大化n個載體元素最多調(diào)整m個嵌密元素的最大嵌入容量,其嵌入容量同秘密信息組合數(shù)的理論值保持一致,從而相對于傳統(tǒng)的EMD方法,始終保持秘密信息的嵌入容量。
③對于傳統(tǒng)的簡單EMD方法和EMD-n方法,盡管能達(dá)到該調(diào)整范圍內(nèi)的最大的嵌入容量,但傳統(tǒng)的EMD方法僅能提供有限的幾種調(diào)整方案,例如對n個載體數(shù)據(jù)僅調(diào)整1個的簡單EMD方法,對n個載體數(shù)據(jù)僅調(diào)整2個的EMD-2方法和對n個載體數(shù)據(jù)調(diào)整n個載體數(shù)據(jù)的EMD-n方法。因此同傳統(tǒng)的EMD方法不同,本發(fā)明給出的改進(jìn)EMD方法可給出n個載體元素最多調(diào)整m個嵌密元素的所有方案,當(dāng)m=1時,同簡單EMD方法的嵌入容量相一致,當(dāng)m=n時,其嵌入容量同EMD-n方法相一致,但相對于傳統(tǒng)的EMD方法提供更高的安全性。
④本發(fā)明對未溢出的載體像素最大的調(diào)整量為±1,對于溢出像素的調(diào)整量最大為±2,因此同傳統(tǒng)EMD方法一樣,僅對載體像素進(jìn)行微調(diào),從而可在最大化嵌入容量的基礎(chǔ)上同傳統(tǒng)EMD方法一樣,保持同等的視覺嵌入質(zhì)量。
附圖說明
圖1是嵌入流程圖;
圖2是提取流程圖;
圖3是載體圖像,為256×256分辨率的8位灰度圖像Lena;
圖4是載體圖像,為256×256分辨率的8位灰度圖像Women;
圖5是載體圖像,為256×256分辨率的8位灰度圖像Man;
圖6是載體圖像,為256×256分辨率的8位灰度圖像Pepper;
圖7是圖3嵌入的秘密信息,為長度76729的2進(jìn)制位串序列堆疊成的277×277的2值圖像;
圖8是圖4嵌入的秘密信息,為長度76729的2進(jìn)制位串序列堆疊成的277×277的2值圖像;
圖9是圖5嵌入的秘密信息,為長度76729的2進(jìn)制位串序列堆疊成的277×277的2值圖像;
圖10是圖6嵌入的秘密信息,為長度76729的2進(jìn)制位串序列堆疊成的277×277的2值圖像;
圖11是實(shí)施例:嵌密掩體圖像,相對于圖3的PSNR=45.89dB;
圖12是實(shí)施例:嵌密掩體圖像,相對于圖4的PSNR=45.89dB;
圖13是實(shí)施例:嵌密掩體圖像,相對于圖5的PSNR=45.85dB;
圖14是實(shí)施例:嵌密掩體圖像,相對于圖6的PSNR=45.99dB;
圖15是實(shí)施例:提取的秘密信息,相對于圖7的誤碼率EBR為0%;
圖16是實(shí)施例:提取的秘密信息,相對于圖8的誤碼率EBR為0%;
圖17是實(shí)施例:提取的秘密信息,相對于圖9的誤碼率EBR為0%;
圖18是實(shí)施例:提取的秘密信息,相對于圖10的誤碼率EBR為0%。
具體實(shí)施方式
以下以JAVA jdk1.8.0_65為案例實(shí)施環(huán)境,結(jié)合附圖對本發(fā)明實(shí)施方式進(jìn)行詳細(xì)說明,但不局限于本實(shí)施案例,其中圖1是嵌入流程圖,圖2是提取流程圖。
嵌入方法的具體實(shí)施步驟:
第1步:假設(shè)將載體圖像C按行優(yōu)先順序轉(zhuǎn)換成1維序列為S={160,160,163,157,153};初始化S的剩余序列Slast=S,輸入秘密信息比特位串B={1,1,1,0,1,0},初始化B的剩余序列Blast=B,初始化已嵌入秘密信息的載體元素序列Sembedded=φ;
第2步:輸入用戶密鑰μ=4,x0=0.3519407329674913,IT=1059,nmax=6:由式(2)可連續(xù)生成若干隨機(jī)數(shù),拋棄前IT個開始取數(shù),假設(shè)連續(xù)取得的4個隨機(jī)數(shù)分別為xt=0.7531447787093246,xt+1=0.7436708840488283,xt+2=0.7624980010674499和xt+3=0.7243791977423722;
第3步:將xt,xt+1代入式(3)和式(4),
可計(jì)算出
第4步:按式(5)可計(jì)算n=3個嵌密元素最多調(diào)整m=3個嵌密元素所能嵌入的秘密信息組合數(shù)
第5步:按第5.1步~第5.5步可生成初始嵌密元素調(diào)整表Tadjust,Tadjust等價為
表1;
表1
其中表1的第1行對應(yīng)為行號,第2~4行對應(yīng)為Tadjust中的列,即將0,1,…,26轉(zhuǎn)換為n位3進(jìn)制數(shù)構(gòu)成的向量V=(vi)n并分別用{-1,0,1}進(jìn)行表示,從而將V映射為V′=(vi′)n,vi′∈{-1,0,1},統(tǒng)計(jì)V′中的非零元素?cái)?shù)量nnz,將nnz≤m的行作為Tadjust中的行;
按第5.6步,根據(jù)xt+2,xt+3和式(9)、式(10)、式(11)、式(12)計(jì)算n=3,m=3對應(yīng)的置亂密鑰a,b,
x′t+3=0.5(xt+2+xt+3) (10);
x′t+3=0.5(0.7624980010674499+0.7243791977423722)=0.7434385994049111,將x′t+2,x′t+3分別作為式(2)的系統(tǒng)參數(shù)和初始值,產(chǎn)生若干隨機(jī)數(shù)并拋棄前IT個,得到R=0.9091705227593929,按式(11)
得到按式(12)計(jì)算b,
根據(jù)a=25,b=1按式(8)將Tadjust置亂為T′adjust如表2所示:
表2
第6步:按式(13)計(jì)算應(yīng)截取的Blast長度lcurrent,因?yàn)樗?,lcurrent=4;
按式(14)截取秘密信息序列Bcurrent,截取到的秘密信息序列Bcurrent={1,1,1,0},按式(15)將Blast更新為Blast={1,0};
第7步:將Bcurrent={1,1,1,0}按式(16)轉(zhuǎn)換為對應(yīng)的十進(jìn)制數(shù)d=14;
第8步:按式(17)從Slast中取前n=3個元素作為Scurrent={160,160,163},并按式(18)更新Slast={157,153};
第9步:依據(jù)從表(2)中取按式(19)將Scurrent調(diào)整為S′current={159,159,162};
第10步:按式(21)將S′current添加到Sembedded中,Sembedded={159,159,162};
第11步:反復(fù)執(zhí)行第2步到第10步,直至Blast的剩余長度llast=Φ,最終Sembedded={159,159,162,157,153},由Sembedded按式(22)重構(gòu)秘密圖像;
提取方法的具體實(shí)施步驟:
第1步:輸入載體圖像和秘密圖像并將其轉(zhuǎn)換成一維序列,分別為S={160,160,163,157,153},S′={159,159,162,157,153},輸入用戶給定的密鑰μ=4,x0=0.3519407329674913,IT=1059,nmax=6,初始化已提取的秘密信息序列Bfetched=φ,記S和S′的剩余序列分別為Slast和S′last,初始化Slast=S和S′last=Slast。
第2步:根據(jù)用戶密鑰μ=4,x0=0.3519407329674913,IT=1059,nmax=6:由式(2)可連續(xù)生成若干隨機(jī)數(shù),拋棄前IT個開始取數(shù),假設(shè)連續(xù)取得的4個隨機(jī)數(shù)分別為xt=0.7531447787093246,xt+1=0.7436708840488283,xt+2=0.7624980010674499和xt+3=0.7243791977423722;將xt,xt+1代入式(3)和式(4),
可計(jì)算出
按式(5)可計(jì)算n=3個嵌密元素最多調(diào)整m=3個嵌密元素所能嵌入的秘密信息組合數(shù)
按第5.1步~第5.5步可生成初始嵌密元素調(diào)整表Tadjust,Tadjust等價為表1,
其中表1的第1行對應(yīng)為行號,第2~4行對應(yīng)為Tadjust中的行,即將0,1,…,26轉(zhuǎn)換為n位3進(jìn)制數(shù)構(gòu)成的向量V=(vi)n并分別用{-1,0,1}進(jìn)行表示,從而將V映射為V′=(v′i)n,v′i∈{-1,0,1},統(tǒng)計(jì)V′中的非零元素?cái)?shù)量nnz,將nnz≤m的行作為Tadjust中的行;
按第5.6步,根據(jù)xt+2,xt+3和式(9)、式(10)、式(11)、式(12)計(jì)算n=3,m=3對應(yīng)的置亂密鑰a,b,
x′t+3=0.5(xt+2+xt+3) (10);
x′t+3=0.5(0.7624980010674499+0.7243791977423722)=0.7434385994049111,將x′t+2,x′t+3分別作為式(2)的系統(tǒng)參數(shù)和初始值,產(chǎn)生若干隨機(jī)數(shù)并拋棄前IT個,得到R=0.9091705227593929,按式(11)
得到按式(12)計(jì)算b,
根據(jù)a=25,b=1按式(8)將Tadjust置亂為T′adjust如表2所示:
第3步:按式(17)從Slast和S′last中分別取n=3個元素作為Scurrent={160,160,163}和S′current={159,159,162},并按式(18)更新Slast={157,153}和S′last={157,153};
第4步:由Scurrent={160,160,163}和S′current={159,159,162}按式(25),式(26)計(jì)算
第5步:從T′adjust中搜索出對應(yīng)的行號d=14并轉(zhuǎn)換為對應(yīng)的2進(jìn)制序列Bcurrent={1,1,1,0};
第6步:將Bcurrent={1,1,1,0}連接到Bfetched尾部,Bfetched={1,1,1,0};
第7步:反復(fù)執(zhí)行第2步到第6步,直為Scurrent=Φ,此時Bfetched={1,1,1,0,1,0}。即為嵌入的秘密信息。
圖11是實(shí)施例,按圖1嵌入流程以圖3為原圖,以圖7對應(yīng)的2值秘密序列進(jìn)行嵌入得到的嵌密掩體圖像,相對于圖3的PSNR=45.89dB;
圖12是實(shí)施例,按圖1嵌入流程以圖4為原圖,以圖8對應(yīng)的2值秘密序列進(jìn)行嵌入得到的嵌密掩體圖像,相對于圖4的PSNR=45.89dB;
圖13是實(shí)施例,按圖1嵌入流程以圖5為原圖,以圖9對應(yīng)的2值秘密序列進(jìn)行嵌入得到的嵌密掩體圖像,相對于圖5的PSNR=45.85dB;
圖14是實(shí)施例,按圖1嵌入流程以圖6為原圖,以圖10對應(yīng)的2值秘密序列進(jìn)行嵌入得到的嵌密掩體圖像,相對于圖6的PSNR=45.99dB。
圖15是實(shí)施例,按圖2提取流程從圖11中提取的秘密信息,相對于圖7的誤碼率EBR為0%;
圖16是實(shí)施例,按圖2提取流程從圖12中提取的秘密信息,相對于圖8的誤碼率EBR為0%;
圖17是實(shí)施例,按圖2提取流程從圖13中提取的秘密信息,相對于圖9的誤碼率EBR為0%;
圖18是實(shí)施例:按圖2提取流程從圖14中提取的秘密信息,相對于圖10的誤碼率EBR為0%。