唐洪祥, 吳昊天
(1.江南大學(xué) 數(shù)字媒體學(xué)院,江蘇 無(wú)錫 214122; 2.華南理工大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,廣東 廣州 510006)
可逆圖像視覺(jué)變換技術(shù)是圖像加密技術(shù)中重要的研究方向,可將原始圖像轉(zhuǎn)換成加密圖像,并在加密圖像中嵌入相應(yīng)的變換信息,以便在恢復(fù)圖像時(shí)能夠根據(jù)變換信息無(wú)失真地恢復(fù)出原始圖像。文獻(xiàn)[1]提出了一種基于影像鑲嵌的圖像視覺(jué)變換方法(secret-fragment-visible mosaic images),可以生成視覺(jué)上和參考圖像相似的加密圖像,并能夠無(wú)失真地恢復(fù)原始圖像,但只能從特定的圖像數(shù)據(jù)庫(kù)中選取參考圖像。文獻(xiàn)[2]對(duì)此進(jìn)行改進(jìn),分割后的圖像塊可以作0°,90°,180°或者270°旋轉(zhuǎn),每個(gè)原始圖像塊能夠通過(guò)近可逆的顏色變換算法[3],使得產(chǎn)生的結(jié)果圖像和原始圖像的相似程度更高,但該方法仍不可逆。
為了讓用戶能較好地對(duì)圖像信息加密,并將加密圖像無(wú)失真地還原出原始圖像,本文提出了一種可逆圖像視覺(jué)變換算法,利用可逆數(shù)據(jù)隱藏算法[4~9]將圖像變換信息嵌入到加密圖像中,按照變換過(guò)程逆序操作,即可無(wú)失真地恢復(fù)出原始圖像。
提出方法的流程如圖1,包括兩個(gè)階段:圖像視覺(jué)變換[10]操作及將圖像視覺(jué)變換信息嵌入到加密圖像;恢復(fù)階段,利用可逆數(shù)據(jù)隱藏算法從加密圖像中提取出圖像視覺(jué)變換信息,利用變換信息即可無(wú)失真地還原出原始圖像[11,12],且算法更簡(jiǎn)單。
圖1 可逆圖像視覺(jué)變換算法流程
1)選定一幅彩色圖像,將其三原色(RGB)三個(gè)通道的灰度圖像,作為原始圖像。如LenaRGB.bmp,其RGB通道灰度圖像的像素值通常情況下都需要8 bit存儲(chǔ),每1 bit中存儲(chǔ)0或者1,并且像素值MSB對(duì)像素灰度影響最大。通過(guò)改變像素值MSB位平面可以達(dá)到視覺(jué)上圖像信息掩飾的效果。
2)選定一幅參考圖像,如F16-grey.bmp,分別將LenaRGB.bmp產(chǎn)生的3幅灰度圖像MSB位平面替換成F16-grey.bmp的MSB位平面。
3)按照以上操作,產(chǎn)生3幅加密圖像,分別作為RGB3個(gè)通道的灰度圖像,可以合成一幅彩色圖像,得到原始圖像的加密圖像,其視覺(jué)上更接近參考圖像,達(dá)到較好的保密效果。
本文采用基于直方圖變換的可逆數(shù)據(jù)隱藏算法[13,14]嵌入圖像視覺(jué)變換信息,通常應(yīng)用于灰度圖像,利用該算法,圖像視覺(jué)變換數(shù)據(jù)可以嵌入到上述的三幅加密圖像中。其原理如下:給定一幅8位灰度圖像I,首先生成其像素直方圖hI,hI(j)表示像素值為j的像素?cái)?shù)目,j∈{0,1,2,…,254,255}。稱直方圖中像素?cái)?shù)目最多的兩個(gè)像素值為峰值,選取直方圖中兩個(gè)峰值,按照位置的左右次序分別被指定為IL和IR。例如在Lena圖像中,IL=155,IR=156。位于直方圖中IL左側(cè)的像素值和IR右側(cè)的像素值分別向左和向右平移一個(gè)單位,位于中間的像素值保持不變。通過(guò)以上操作,在直方圖中j=154和j=157的位置產(chǎn)生2個(gè)空缺,可以滿足數(shù)據(jù)嵌入的目的。以上方法可歸納為式(1)
(1)
式中bk為第k個(gè)嵌入的二進(jìn)制數(shù)據(jù)位(取值0或1);I′為變換后的像素。經(jīng)過(guò)式(1),共嵌入hI(IL)+hI(IR)個(gè)數(shù)據(jù)位。
經(jīng)過(guò)上述嵌入處理,可以觀察到,峰值IL變成IL或IL-1,峰值IR變成IR或IR+1。對(duì)于新生成的直方圖,利用這兩個(gè)變換后的峰值,再次經(jīng)過(guò)式(1)進(jìn)行數(shù)據(jù)嵌入,重復(fù)執(zhí)行多次之后,數(shù)據(jù)全部嵌入圖像中。
在上述直方圖嵌入數(shù)據(jù)的過(guò)程中,如果h1中存在像素值為0或者255的邊界,則會(huì)發(fā)生溢出。例如Lena圖像,其最大像素值為245,經(jīng)過(guò)10次處理后,原始圖像中最大像素值會(huì)變成255,再次嵌入會(huì)出現(xiàn)溢出。為了避免溢出,需要對(duì)直方圖進(jìn)行預(yù)處理。根據(jù)式(1),像素值的變動(dòng)范圍是±1,進(jìn)行L次變換,最大變動(dòng)范圍是±L,因此,在預(yù)處理時(shí),像素值處于[0,L-1]區(qū)間的像素點(diǎn)加上L,處于[256-L,255]區(qū)間的像素點(diǎn)減去L。以上方法可歸納式(2)
(2)
在進(jìn)行上述預(yù)處理的同時(shí),需要生成一幅二值圖像,該二值圖像與原始圖像大小相同,如果處理過(guò)程中某像素被修改,則對(duì)應(yīng)二值圖像中像素標(biāo)記為1,否則,標(biāo)記為0,然后根據(jù)JBIG2[15]算法對(duì)這幅二值圖像進(jìn)行壓縮,最后嵌入到圖像中,以便恢復(fù)原始圖像。
根據(jù)上述討論,選定一幅原始圖像,應(yīng)用基于信息隱藏的可逆圖像視覺(jué)變換算法詳細(xì)流程如下:
輸入原始圖像S和參考圖像T。
1)將原始圖像S通過(guò)RGB三個(gè)通道獲得SR,SG和SB三幅灰度圖像;
4)計(jì)算預(yù)處理后直方圖的峰值點(diǎn)ML和MR,選擇直方圖中兩邊的峰值進(jìn)行數(shù)據(jù)嵌入,對(duì)于直方圖中每個(gè)像素值采用式(1)進(jìn)行變換操作;
輸出 加密圖像I′。
恢復(fù)原始圖像的算法步驟如下:
輸入 加密圖像I′。
1)將I′通過(guò)RGB三個(gè)通道獲得攜帶有嵌入信息的三幅灰度圖像。
2)分別獲取三幅灰度圖像的像素直方圖,并計(jì)算像素直方圖的峰值ML和MR。
3)應(yīng)用式(6)提取嵌入信息
(3)
(4)
重復(fù)運(yùn)用式(3)和式(4)可提取出所有嵌入的信息。
5)將SR,SR和SB通過(guò)RGB重新合成彩色圖像,即原始圖像。
輸出 原始圖像I。
本文的實(shí)驗(yàn)環(huán)境為Windows 7 64 bit和4 GB內(nèi)存,CPU為G3240(3.10 GHz),編程環(huán)境為Visual Studio 2010。實(shí)驗(yàn)圖像是從USC-SIPI圖像數(shù)據(jù)庫(kù)中抽取的3張尺寸為 512像素×512像素的圖像,其中2張為灰度圖像,2張為彩色圖像。
如圖2所示,“LenaRGB.bmp”和“F16-grey.bmp”分別作為原始圖像課參考圖像進(jìn)行可逆圖像視覺(jué)變換的實(shí)驗(yàn)結(jié)果,可以看出,加密圖像對(duì)原始圖像的信息具有較好的隱藏效果,且外觀上更接近于參考圖像。
圖2 LenaRGB.bmp可逆變換測(cè)試
對(duì)于還原出原始圖像,需要先將加密圖像圖2(i)通過(guò)RGB通道得到三幅單通道的灰度圖,之后對(duì)每幅單通道灰度圖應(yīng)用可逆數(shù)據(jù)隱藏的提取算法提取出變換過(guò)程中生成的二值標(biāo)記圖、預(yù)處理區(qū)間信息、標(biāo)記圖長(zhǎng)度以及峰值等信息,根據(jù)提取信息進(jìn)行恢復(fù)操作,可以恢復(fù)得到三幅RGB通道灰度圖,合成之后即為原始圖像。從視覺(jué)效果來(lái)看,圖像經(jīng)過(guò)可逆變換后能夠較好地完成原始圖像的信息隱藏,并且能夠無(wú)損地還原出原始圖像。
利用文獻(xiàn)[2]提出的可逆圖像視覺(jué)變換算法對(duì)圖2中的原始圖像和參考圖像分割成不同的圖像塊大小的實(shí)驗(yàn)結(jié)果如圖3所示??梢?jiàn),算法分割的圖像塊越大,加密圖像的視覺(jué)效果越差。
圖3 文獻(xiàn)[2]中LenaRGB.bmp可逆變換測(cè)試
圖4給出了BaboonRGB.bmp和F16-grey.bmp分別作為原始圖像和參考圖像,經(jīng)過(guò)可逆圖像視覺(jué)變換算法產(chǎn)生加密圖像,圖4(a)的紋理要比圖4(a)的復(fù)雜的多,因此對(duì)圖4(a)進(jìn)行可逆圖像視覺(jué)變換所需要的時(shí)間復(fù)雜度也相應(yīng)增加。
圖4 BaboonRGB.bmp可逆變換測(cè)試
為進(jìn)一步評(píng)估算法的變換效果,實(shí)驗(yàn)對(duì)該算法進(jìn)行圖像視覺(jué)變換得到的每一幅加密圖像,計(jì)算其3個(gè)評(píng)估值:峰值信噪比(peak signal to noise ratio,PSNR),嵌入數(shù)據(jù)的有效載荷(pure payload)和嵌入率,bpp。其中,PSNR值越大表示和參考圖像的相似度越高,但也存在局限性,PSNR的值無(wú)法和人眼看到的視覺(jué)品質(zhì)完全一致,計(jì)算如下
(5)
式中M和N分別為圖像的長(zhǎng)和寬,I0(i,j)和I1(i,j)分別為RGB通道灰度圖像和嵌入信息后圖像的第i行第j列像素值,MSE為均方誤差。
表1中上下部分分別是圖2(a)和圖4(a)采用本文算法的可逆變換數(shù)據(jù)統(tǒng)計(jì),可以看出,圖3中的可逆圖像視覺(jué)變換算法的數(shù)據(jù)嵌入量大幅增加,且PSNR也隨之變低。但對(duì)于同一幅原始圖像,不同通道對(duì)于PSNR影響并不明顯。由此可見(jiàn),原始圖像紋理復(fù)雜度對(duì)可逆圖像視覺(jué)變換算法有較大影響,圖像紋理越復(fù)雜,修改的像素?cái)?shù)目就越多,需要嵌入的數(shù)據(jù)量越大,會(huì)造成峰值像素?cái)U(kuò)展的次數(shù)增多,但并不穩(wěn)定,導(dǎo)致有效數(shù)據(jù)的嵌入率受到影響。
表1 采用本文算法LenaRGB.bmp和BaboonRGB.bmp可逆變換數(shù)據(jù)統(tǒng)計(jì)
表2是文獻(xiàn)[2]算法進(jìn)行圖3中可逆圖像視覺(jué)變換所產(chǎn)生的可逆變換數(shù)據(jù),可以看出,隨著分割的圖像塊的變大,PSNR隨之變小,且變小趨勢(shì)明顯,加密圖像的視覺(jué)效果越差,嵌入率變小,所需嵌入的圖像變換信息越少。通過(guò)圖3,當(dāng)塊大小為16×16時(shí),雖然文獻(xiàn)[2]實(shí)驗(yàn)中PSNR的值比較大,但由于PSNR的局限性,加密圖像的視覺(jué)效果明顯變差。和本文算法實(shí)驗(yàn)結(jié)果相比,文獻(xiàn)[2]在加密圖像視覺(jué)效果要求較高時(shí),所需嵌入的圖像變換數(shù)據(jù)量大幅增加,導(dǎo)致還原的原始圖像出現(xiàn)失真。而本文算法的PSNR比較穩(wěn)定,所需嵌入的圖像變換數(shù)據(jù)量也相對(duì)較小,能夠無(wú)失真地還原出原始圖像。
表2 文獻(xiàn)[2]算法LenaRGB.bmp可逆變換數(shù)據(jù)統(tǒng)計(jì)
本文針對(duì)數(shù)字圖像的像素值在計(jì)算機(jī)存儲(chǔ)中的特點(diǎn),改進(jìn)已有文獻(xiàn)中的可逆數(shù)據(jù)隱藏算法,并將其應(yīng)用到可逆圖像視覺(jué)變換中,實(shí)現(xiàn)了將原始圖像以修改像素最高存儲(chǔ)位的方式,并利用可逆數(shù)據(jù)隱藏算法嵌入修改信息,可以無(wú)損地恢復(fù)原始圖像,圖像變換信息量也更小。