任志敏,曾文軍,張 良
(1.常州紡織服裝職業(yè)技術(shù)學(xué)院機(jī)電學(xué)院,江蘇 常州 213164;2.武進(jìn)區(qū)信息中心,江蘇 常州 213159)
隨著信息技術(shù)的不斷發(fā)展,數(shù)以千萬(wàn)計(jì)的海量數(shù)據(jù)通過(guò)互聯(lián)網(wǎng)被下載、上傳、操作和交換,在給人們生產(chǎn)、生活帶來(lái)便利的同時(shí),信息安全問(wèn)題也越來(lái)越突出。傳統(tǒng)上,人們通過(guò)密碼保護(hù)對(duì)數(shù)據(jù)進(jìn)行打亂以改變其含義的方式實(shí)現(xiàn)信息安全傳輸,與密碼保護(hù)不同的是,信息隱藏是把數(shù)據(jù)隱藏在文本、音頻、圖片或視頻等文件中,使得除了發(fā)送者和接收者之外的任何人都看不到隱藏信息,通過(guò)隱藏?cái)?shù)據(jù)的存在實(shí)現(xiàn)數(shù)據(jù)被保護(hù)的目的[1]。與信息隱藏相關(guān)的操作過(guò)程主要包括[2]:
1) 宿主文件(cover),用于嵌入隱藏信息的原始文件,若宿主文件是圖片,則稱為宿主圖片。
2) 隱寫(xiě)文件(stego),嵌入了隱藏信息的輸出文件,若隱寫(xiě)文件為圖片,則稱為隱寫(xiě)圖片。
3) 隱藏信息(message),需要嵌入或傳輸?shù)臄?shù)據(jù)。
4) 數(shù)據(jù)嵌入過(guò)程(Embedding Processing),把隱藏?cái)?shù)據(jù)嵌入到宿主文件的過(guò)程,生成隱寫(xiě)文件stego。
5) 數(shù)據(jù)提取過(guò)程(Extraction Processing),把數(shù)據(jù)從隱寫(xiě)文件提取的過(guò)程,獲取隱藏信息message。
評(píng)價(jià)一種信息隱藏方法優(yōu)劣的標(biāo)準(zhǔn)主要包括三個(gè)方面[3]:
1) 嵌入隱藏信息的數(shù)據(jù)量多少。
2) 在執(zhí)行了一系列的壓縮、旋轉(zhuǎn)、裁剪等操作后,隱藏信息是否仍舊未被破壞。
3) 隱寫(xiě)文件的質(zhì)量,HVS(human visual system),即人眼對(duì)隱寫(xiě)文件的感知。
邊緣是一副圖片的某一部分區(qū)別兩個(gè)區(qū)域的輪廓邊界。邊緣檢測(cè)是圖像處理和機(jī)器視覺(jué)及其重要的處理方式和手段,經(jīng)典的邊緣檢測(cè)算法有Sobel,Laplacian,Canny等。其中Canny邊緣檢測(cè)算法是由John F.Canny在1986年提出的,因其具有優(yōu)異的定位和檢測(cè)而廣受歡迎[5-7]。Canny邊緣檢測(cè)算法的典型步驟如下:
1) 消除噪聲,圖像首先通過(guò)高斯濾波器掩碼進(jìn)行平滑處理。將圖像分成與5×5高斯核大小相等的數(shù)據(jù)塊,并進(jìn)行卷積運(yùn)算。
2) 確定每個(gè)像素的梯度大小和梯度方向。
3) 對(duì)梯度幅值進(jìn)行非極大值抑制,如果某個(gè)像素的梯度幅值大于梯度方向周邊像素的梯度幅值,標(biāo)記該像素點(diǎn)為邊緣。否則,標(biāo)記為非邊緣。
4) 通過(guò)雙閾值去除一些弱邊緣。
采用Canny邊緣檢測(cè)算法處理的圖片如圖1所示。
圖1 Canny邊緣檢測(cè)算法處理的圖片
圖1(a)為灰度圖,大小為256×256,總計(jì)65536個(gè)像素。圖1(b)為經(jīng)過(guò)Canny邊緣檢測(cè)算法處理的圖片,其中低閾值為50,高閾值為150,經(jīng)過(guò)計(jì)算,總計(jì)4554個(gè)邊緣像素。
基于Canny邊緣檢測(cè)算法的信息隱藏方法包括兩個(gè)部分[8],一是嵌入過(guò)程,二是提取過(guò)程。
隱藏信息的嵌入過(guò)程如圖2所示。
圖2 隱藏信息嵌入過(guò)程
圖2所示的信息嵌入過(guò)程一共分為3個(gè)階段。
1) 對(duì)灰度宿主圖片Ⅰ采用Canny算法進(jìn)行邊緣處理,從而獲得邊緣輪廓二值化圖片Ⅰ′。
2) 把圖片Ⅰ′分成若干個(gè)塊,每個(gè)塊包括n個(gè)像素點(diǎn),并標(biāo)記為P1,P2,P3,……,Pn。其中P1的二進(jìn)制位存儲(chǔ)后面(n-1)個(gè)像素點(diǎn)的邊緣狀態(tài),若為邊緣標(biāo)記為1,否則標(biāo)記為0。比如設(shè)置n=3,則該塊有3個(gè)像素點(diǎn),若P1和P3為邊緣,P2為非邊緣,則P1的LSB的最低兩位標(biāo)記為‘01’。對(duì)于像素點(diǎn)是否是邊緣由第一階段經(jīng)過(guò)Canny算子計(jì)算得來(lái)。考慮到P1是用來(lái)標(biāo)記后續(xù)像素點(diǎn)的邊緣狀態(tài),為了平衡整個(gè)隱寫(xiě)圖片的質(zhì)量和嵌入的數(shù)據(jù)量,根據(jù)后續(xù)實(shí)驗(yàn)結(jié)果,n的值宜采用3,4或5。
圖3 隱藏信息嵌入過(guò)程
隱藏信息的提取過(guò)程分為兩個(gè)階段。
實(shí)驗(yàn)圖片選擇256×256的灰度圖片。評(píng)價(jià)隱寫(xiě)圖片的質(zhì)量主要考慮兩個(gè)方面,一是PSNR(peak signal-to-noise ratio),PSNR即峰值信噪比,用于衡量宿主圖片與隱寫(xiě)圖片之間的差異。二是HVS。PSNR的計(jì)算公式為:
其中MSE(Mean Square Error)表示隱寫(xiě)圖片與宿主圖片的均方誤差。如宿主圖片的寬度用W表示,高度用H表示,則MSE的計(jì)算公式為:
圖4 基于Canny邊緣檢測(cè)的信息隱藏方法生成的隱寫(xiě)圖片
圖4中n=2,把宿主圖片每2個(gè)像素分割成一塊。x=1,在非邊緣的像素點(diǎn)的嵌入1位,y=1,2,……,6,在邊緣像素點(diǎn)嵌入1位~6位。從圖4中可以看出,雖然在y=6的時(shí)候PSNR值有所下降,但是依舊保持了良好的HVS。
圖5展示了采用經(jīng)典的LSB算法嵌入隱藏信息后的隱藏圖片,為了比較兩種方法的優(yōu)劣性,在嵌入相同數(shù)據(jù)量的前提下,在對(duì)應(yīng)像素點(diǎn)嵌入1位~6位。對(duì)比兩種方法生成的隱寫(xiě)圖片,可以看出:1) 在嵌入相同數(shù)據(jù)量的前期下,基于Canny邊緣檢測(cè)的信息隱藏方法生成的隱寫(xiě)圖片的PSNR值高于經(jīng)典LSB算法生成的隱寫(xiě)圖片,即與宿主圖片更接近。2) 從HVS的角度看,采用經(jīng)典LSB算法,嵌入1位~3位還是感覺(jué)不出與宿主圖片的差異,嵌入4位~6位是無(wú)法接受的,將會(huì)產(chǎn)生大量噪聲。
圖5 基于經(jīng)典的LSB信息隱藏方法生成的隱寫(xiě)圖片
綜上所述,比起經(jīng)典的LSB信息隱藏算法,基于Canny邊緣檢測(cè)的信息隱藏方法在嵌入數(shù)據(jù)量規(guī)模,PSNR值,生成的隱寫(xiě)圖片質(zhì)量等方面更優(yōu)。