黃敬瑜,鄒清富
(1.廣西財經(jīng)學(xué)院防城港學(xué)院,防城港 538000;2.廣西移動防城港公司,防城港 530000)
提出一種基于Arnold 置亂的加密圖像可逆信息隱藏方法,首先對圖像進行分塊,采用Arnold 變換分別對塊內(nèi)像素和圖像分塊進行置亂從而實現(xiàn)圖像加密。隱藏時,同樣對圖像進行分塊,對塊內(nèi)像素進行排序,計算預(yù)測差值,對值為0 的預(yù)測差值采用方向編碼(EMD)進行隱藏,對值大于為0 的預(yù)測差值,采用預(yù)測差值擴展隱藏秘密信息。實驗結(jié)果表明該算法直接解密圖像效果優(yōu)于其他3 種對比文獻。
加密圖像;可逆信息隱藏;Arnold 變換;方向編碼
信息隱藏[1-3]是目前信息安全領(lǐng)域的研究熱點之一,可逆信息隱藏作為信息隱藏的重要組成部分,受到研究者們越來越多的關(guān)注??赡嫘畔㈦[藏不僅能從載密圖像中提取出秘密信息,還能將載體圖像無損還原。
目前,基于圖像的可逆信息隱藏方法有非加密圖像可逆信息隱藏、加密圖像可逆信息隱藏等。非加密圖像的可逆信息隱藏方法主要有:①基于無損壓縮算法[4-5]:通過無損壓縮圖像產(chǎn)生隱藏信息空間,該方法的隱藏容量很低,常用于取證、水印。②基于差值擴展算法[6-7]:根據(jù)秘密信息對像素差值進行擴展,根據(jù)擴展后的差值修改原始像素從而得到載密圖像。③基于直方圖偏移算法[8-10]:主要應(yīng)用預(yù)測方法計算像素預(yù)測差值,構(gòu)建較好的差值直方圖,通過偏移直方圖嵌入秘密信息,該方法具有較高的隱藏容量以及較好的圖像質(zhì)量,是目前研究較多的方法。
加密圖像的可逆信息隱藏方法首先對原始圖像進行加密,然后將秘密信息嵌入到加密圖像中,并在解密及信息提取后能夠無損恢復(fù)出原始載體圖像。文獻[11-15]本別介紹了幾種加密圖像的可逆信息隱藏方法,其中文獻[11-12]介紹的算法信息提取及原始圖像恢復(fù)只能在解密后同時進行,文獻[13-16]介紹的算法信息提取和原始圖像恢復(fù)可以單獨實現(xiàn)。本文應(yīng)用Arnold 變換對圖像進行加密,加密后保持分塊像素值不變,采用像素值排序方法計算加密像素預(yù)測值,結(jié)合EMD 算法和預(yù)測差值擴展方法在加密圖像隱藏秘密信息。
圖像置亂技術(shù)作為一種重要的圖像加密技術(shù),通過將一幅有意義的圖像變成一幅雜亂無章的圖像,達到提高圖像安全性的目的。Arnold 變換作為圖像置亂的一項重要技術(shù),通過改變像素位置達到圖像的置亂。Arnold 變換的定義為:
其中x,y,x′,y′∈{0,1,…,N-1},(x,y)是原圖像的像素點坐標(biāo),(x′,y′)是變換后新圖像的像素坐標(biāo),N 是圖像的階數(shù),即圖像的大小。本文采用Arnold 變換對圖像進行加密,加密過程主要分為塊內(nèi)置亂和塊間置亂。
設(shè)I 為原始未壓縮的灰度圖像,其大小為H×W,I(i,j)(0≤I(i,j)≤255,1≤i≤H,1≤j≤W)為圖像的像素值,I''為置亂后的圖像,I''(i,j)為置亂后的像素值。本文將圖像分塊,首先采用Arnold 變換對塊內(nèi)像素進行置亂,然后采用Arnold 變換對圖像塊置亂,從而實現(xiàn)圖像加密。由于Arnold 變換是在正方形空間進行位置變換,若W≥H,令,否則令。將圖像分成K×K 塊,每塊大小為n×n。設(shè)B(i,j)為圖像中大小為n×n 的一個塊,其中i,j(1≤i≤K,1≤j≤K)為塊下標(biāo),采用公式(1)對每個圖像塊內(nèi)像素進行h1次置亂,此時階數(shù)為n。設(shè)p,q(1≤p≤n,1≤q≤n)為圖像塊中像素下標(biāo),置亂后的下標(biāo)為p',q',則圖像中塊內(nèi)置亂后的像素為:
通過上述方法對所有的圖像塊進行塊內(nèi)置亂。最后采用公式(1)對圖像分塊進行h2次塊間置亂,設(shè)置亂的塊下標(biāo)為i',j',則分塊置亂后的像素為:
圖像剩余部分采用比特異或加密,通過上述方法得到加密圖像I''。
由1.1 小節(jié)的加密算法得到加密圖像I'',由于加密前后圖像分塊中像素位置發(fā)生改變,但塊內(nèi)像素值未改變,因此我們可以像素值排序和預(yù)測差值擴展實現(xiàn)可逆隱藏。隱藏時,同樣圖像分成K×K 塊,每塊大小為n×n,設(shè)按從上到下,從左到右的順序得到的圖像塊為{B1,B2,…,Bg},其中g(shù)=K×K。對于分塊Bj(1≤j≤g),按從上到下,從左到右的順序排列塊內(nèi)像素,設(shè)排列后的像素為{pj,1,pj,2,pj,3,...,pj,r-1,pj,r},其中r=n×n。將{pj,1,pj,2,pj,3,…,pj,r-1,pj,r}按從小到大進行穩(wěn)定排序,排序后的像素為{pj,s(1),pj,s(2),…,pj,s(r-1),pj,s(r)},其中s(1),s(2),…,s(r)為排序后像素的原始下標(biāo),設(shè)載密像素為
應(yīng)用pj,s(r-1)預(yù)測pj,s(r),應(yīng)用pj,s(2)預(yù)測pj,s(1),并按以下公式計算預(yù)測差值:
根據(jù)上述公式得到一個圖像塊的兩個預(yù)測差值ei和ei+1(ei≥0,ei+1≥0j)。同理,根據(jù)上述方法計算所有圖像塊的預(yù)測差值。設(shè)由預(yù)測差值構(gòu)成的一維序列為E={e1,e2,…,em},其中m=2×K×K。設(shè)置閾值T,在預(yù)測差值序列中,小于或等于T 的差值用于隱藏秘密信息。統(tǒng)計E 的直方圖,在E 的直方圖中,大于T 的值右移T+1 個單位,使直方圖中區(qū)間[T+1,2T+1]的值為0。通過修改E中的值實現(xiàn)隱藏,設(shè)修改后的預(yù)測差值為
(1)若預(yù)測差值大于T,該差值中不隱藏信息,只對預(yù)測差值進行修改,若1≤ei≤T,從二進制秘密信息流取出1 位,設(shè)嵌入的信息位為s,則有:
通過上述公式實現(xiàn)隱藏。
(2)若預(yù)測差值為0 時,將值為0 的預(yù)測差值兩兩分組,設(shè)ea和eb為一組值為0 的預(yù)測差值,令:
根據(jù)公式(6),在ea和eb中可以嵌入三位信息,從二進制秘密信息流取出3 位,并轉(zhuǎn)換成十進制設(shè)為c,則0≤c≤7。根據(jù)EMD 算法[1],若存在和且滿足使,則通過函數(shù)f(x,y)隱藏信息c。由于ea=eb=0,則隱藏后
由上述過程可確定秘密信息隱藏后的差值序列E',由E'和原始像素得載密像素。為了保證可逆隱藏,分塊中像素值隱藏前后排序順序不能被改變,本文根據(jù)預(yù)測差值修改分塊中的最大值或最小值實現(xiàn)可逆隱藏,修改方法如下:
①若≥0 且,修改pj,s(r)或pj,s(1)得到載密像素。若imod2=1,令:
根據(jù)上述公式得到和。若imod2=0,令:
根據(jù)上述公式得到和
根據(jù)上述公式得到和。若imod2=0,則令:
根據(jù)上述公式得到和。
根據(jù)上述方法可確定分塊B'j(1≤j≤g)的載密像素,同理得到所有分塊載密像素,從而確定載密圖像。
根據(jù)上述嵌入方法,一個不為0 的差值可以嵌入一位秘密信息,兩個值為0 的差值可以嵌入三位秘密信息,統(tǒng)計E 的直方圖,設(shè)h(i)為差值i 的個數(shù),當(dāng)在[0,T]的差值作為載體時隱藏容量為v(T),則有:
信息提取和圖像恢復(fù)是信息隱藏的逆過程,根據(jù)隱藏算法將載密圖像成K×K 塊,每塊大小為n×n,對塊內(nèi)像素進行排序,對于第j 塊排序后的像素(1≤j≤g),按以下公式計算預(yù)測差值:
若imod2=1,令:
根據(jù)上述公式得到pj,σ(1)和pj,σ(2)。若imod2=0,令:
根據(jù)上述公式得到pj,σ(r-1)和pj,σ(r)。
若-1 ≤≤1 和-1 ≤≤1,則說明采用EMD 算法在差值為0 的兩個原始差值中隱藏秘密信息。根據(jù)上述公式和代入公式(6)即可提取十進制秘密信息c,再將c 轉(zhuǎn)換成3 位二進制秘密信息。則原始差值為ea=eb=0。若imod2=1,則令:
根據(jù)上述公式得到pj,σ(1)和pj,σ(2)。若imod2=0,則令:
根據(jù)上述公式得到pj,σ(r-1)和pj,σ(r)。若n>2,則令:
通過上述公式恢復(fù)原始加密像素序列{pj,s(1),pj,s(2),…,pj,s(r-1),pj,s(r)},根據(jù)像素序列重構(gòu)加密圖像塊Bj,同理可以恢復(fù)所有加密圖像塊,最終重構(gòu)得到加密圖像I''。得到加密圖像后,可以對塊內(nèi)像素和圖像分塊進行逆Arnold 置亂可恢復(fù)原始圖像。
通過進行了大量的實驗驗證,本文算法均取得很好效果,在正確提取秘密信息同時能保證原始圖像的無損恢復(fù)。由于篇幅限制,僅以Lena、Airplane、Boats、Barbara 四幅512×512 的灰度圖像為原始圖像進行實驗說明,如圖1 所示。
圖1 原始圖像
利用本文的加密算法對圖1(a)-(d)的原始圖像進行加密得到的加密圖像如圖2(a)-(d)所示。其中分塊大小n=2,閾值T=1。主觀上,人眼視覺系統(tǒng)已從加密圖像中無法獲取原始圖像任何內(nèi)容,如邊緣信息、重要紋理等。
圖2 加密圖像
將本文算法直接解密圖像效果的跟文獻[11-12]進行對比,表1 為隱藏256bits 直接解密圖像PSNR 對比,表2 為隱藏1024bits 直接解密圖像PSNR 對比。由表中的數(shù)據(jù)可以看出,本文算法得到的直接解密圖像PSNR 均高于文獻[11-12]直接解密圖像的PSNR值。由此可得本文算法均優(yōu)于文獻[11-12]。
表1 隱藏256bits 直接解密圖像的PSNR 對比
表2 隱藏1024bits 直接解密圖像的PSNR 對比
本文提出一種基于Arnold 置亂的加密圖像可逆信息隱藏算法,對塊內(nèi)像素和圖像分塊分別采用Arnold進行置亂從而實現(xiàn)圖像加密。由于塊內(nèi)像素置亂保證了塊內(nèi)像素不變,因此采用像素排序方法預(yù)測像素最大值和最小值,能得到較好的預(yù)測差值,對值為0 的預(yù)測差值采用EMD 算法進行隱藏,對值大于為0 的預(yù)測差值,采用預(yù)測差值擴展隱藏秘密信息。本文較好地計算預(yù)測差值,減小了隱藏時的修改量,能得到較好的直接解密圖像效果。