一種簡便易行的空間域圖像信息隱藏技術(shù)
1 引言
圖像的信息隱藏技術(shù)是指在圖像中加入代表版權(quán)擁有者的某些信息(水印),以實(shí)現(xiàn)版權(quán)保護(hù)。加入水印后的圖像應(yīng)無明顯降質(zhì)現(xiàn)象出現(xiàn),即水印具有較強(qiáng)的不可見性;同時(shí)也應(yīng)具有魯棒性,即經(jīng)過各種惡意或無惡意的信號處理后,水印仍能被完整、準(zhǔn)確的鑒定出來。
本文介紹了一種空間域圖像信息隱藏方法,該方法中首先將水印圖像各像點(diǎn)的位置進(jìn)行隨機(jī)置亂達(dá)到加密的目的,再根據(jù)水印各像點(diǎn)的取值,并結(jié)合宿主圖像塊的特點(diǎn),自適應(yīng)地改變嵌入信息的強(qiáng)度,以滿足水印的不可見性,利用偽隨機(jī)序列將水印點(diǎn)嵌入到圖像中的位置進(jìn)行隨機(jī)置亂,提高了水印的安全性以及受到剪切時(shí)的穩(wěn)健性,此算法無論是在嵌入或是提取水印時(shí)都非常簡便,可利于實(shí)時(shí)或者FPGA的實(shí)現(xiàn),另外實(shí)驗(yàn)也證明,該算法具有很好的水印透明性和魯棒性。
2 水印的嵌入方法描述
2.1 二值水印圖像的隨機(jī)置亂
將二值圖像作為水印,設(shè)其像點(diǎn)為為Mm×Nm。為了提高水印的安全性,首先對原始二值水印圖像進(jìn)行隨機(jī)排列,即隨機(jī)置亂。過程如下:
(1)將大小為Mm×Nm的二值圖像表示成向量形式。
(2)由密鑰key1控制產(chǎn)生一個(gè)長度為Mm×Nm的隨機(jī)序列,序列的元素是1-Mm×Nm之間隨機(jī)排列的整數(shù)。
(3)以隨機(jī)序列的元素為序號,重排水印序列的元素的次序,實(shí)現(xiàn)水印的置亂。
2.2 宿主彩色圖像從RGB到Y(jié)UV格式的轉(zhuǎn)換
彩色圖像比較常用的表示格式為RGB(即紅、綠、藍(lán))格式,而YUV顏色表達(dá)方式主要用于電視信號中,Y分量的物理含義是亮度,代表了圖像的所有信息,U和V分量代表了色差信號,我們在Y分量中加入水印,對于U,V分量不做任何變換,在Y分量中加入水印之后,由YUV分量重新生成RGB分量,即構(gòu)成了加入水印后的圖像。
圖像從RGB到Y(jié)UV以及從YUV到RGB格式的轉(zhuǎn)換的公式如下:
2.3 根據(jù)圖像塊特征,自適應(yīng)地改變嵌入水印的強(qiáng)度
將宿主圖像Y分量分成大小4×4的圖像塊,水印加入的過程實(shí)際上就是根據(jù)水印像點(diǎn)值的取值情況依次改變對應(yīng)圖像塊灰度值的過程,這里灰度值改變的大小程度主要是根據(jù)宿主圖像塊的特征而自適應(yīng)地改變,根據(jù)人類的視覺特點(diǎn),如果圖像塊的灰度值對比度越大,人眼對圖像中的噪聲的敏感性越弱,相反,對噪聲的敏感性就強(qiáng)。而水印的嵌入過程可以認(rèn)為是圖像加入噪聲的過程,嵌入水印的強(qiáng)度可以根據(jù)宿主圖像塊的灰度對比度而改變,如果對比度大,則加入的水印可以強(qiáng)一點(diǎn),假設(shè)Ymax和Ymin分別是選定的一個(gè)4×4塊中的16個(gè)象素中最大的灰度值和最小的灰度值,那么差值Δ=gmax-gmin可以近似表示圖像塊的對比度的大小,根據(jù)Δ可以改變宿主圖像灰度值的變化量的大小,即加入水印的強(qiáng)弱,為了防止由于圖像塊過于平滑,造成水印在圖像塊中強(qiáng)度太弱使魯棒性變差,我們設(shè)置了水印強(qiáng)度的下限λmin,這樣構(gòu)成了如下用于調(diào)整水印強(qiáng)度的系數(shù):λ=max[λmin,K×(ymax-ymin),其中k可以調(diào)整水印圖像中的整體強(qiáng)度,λmin根據(jù)宿主圖像的特點(diǎn)由實(shí)驗(yàn)中確定,下面介紹水印嵌入的方法。
首先產(chǎn)生一個(gè)數(shù)值在0-1之間的長度為4×4的偽隨機(jī)序列,并將該序列變成4行×4列的矩陣PN(i,j),(j=1,…,4;j=1,…,4)
假如二值水印序列當(dāng)前元素值為0,相應(yīng)的宿主圖像塊的各灰度值y(i,j)作如下修改:ynew(i,j)=y(i,j)+λ×PN(i,j);若二值水印序列當(dāng)前元素值為0,相應(yīng)宿主圖像塊的各灰度值y(i,j),作如下修改:ynew(i,j)=y(i,j)-λ×PN(i,j)。也就是說保證在水印像點(diǎn)值為1時(shí),相應(yīng)宿主圖像塊中的各灰度值比原來的值有所增加,而水印像點(diǎn)值為0時(shí)則相應(yīng)宿主圖像塊的灰度值變小,由于PN(i,j)是隨機(jī)的,所以圖像塊中任意位置增加或減小的灰度值是隨機(jī)的,類似于噪聲,使水印在視覺上不易被察覺。
2.4 水印信息隨機(jī)嵌入到圖像塊
水印信息隨機(jī)加入到各個(gè)圖像塊中,而不是依次將水印信息加入到由上而下、由左到右描述的圖像塊中,其主要原因有兩個(gè):第一是為了防止攻擊時(shí)可能將含水印的圖像部分完全剪切掉以致于提取不出水印,以及保證圖像成片被剪切時(shí)水印不是也被連續(xù)剪切,從視覺角度還可以觀察到水印圖像的概貌;第二,依賴于密鑰的水印信息的隨機(jī)加入,也是從水印安全性的角度考慮的。
水印隨機(jī)嵌入的實(shí)現(xiàn)方法如下:設(shè)原始圖像的大小為M點(diǎn)×N點(diǎn),由密鑰key2產(chǎn)生長度為M×N的隨機(jī)序列,其值x是1- M×N的自然數(shù)的隨機(jī)重排,x=p(i),x即是第i(i=1,2,…,Mm×Nm)個(gè)水印點(diǎn)嵌入到宿主圖像中的圖像塊的序號,通過實(shí)驗(yàn)證明,這種隨機(jī)嵌入法可以很好地抗擊剪切的攻擊。[!--empirenews.page--]
3 水印的提取方法描述
對水印的提取可以分為以下幾個(gè)步驟:
(1)密鑰key2產(chǎn)生隨機(jī)序列,找出嵌入水印點(diǎn)的對應(yīng)圖像塊位置;
(2)將彩色圖像由RGB表色方法轉(zhuǎn)換成YUV表色方法,提取出灰度(亮度)Y分量;
(3)對4×4的圖像塊求所有象素灰度值的總和;
該圖像塊已嵌入的水印像點(diǎn)值是1;如果sw
(4)由密鑰Key1控制產(chǎn)生一個(gè)隨機(jī)序列對水印序列位置重排,并構(gòu)成二維的水印圖像,這就是提取出的水印。
4 實(shí)驗(yàn)結(jié)果
我們運(yùn)用Matlab語言設(shè)計(jì)了嵌入和提取的水印的程序,并對性能做了測試,宿主圖像是512×512點(diǎn)的lena彩色圖像,水印是41點(diǎn)×61點(diǎn)的二值圖像。
加入水印后的圖像的水印不可見性可用峰值信噪比PSNR來測試。在λmin取0.2和k取0.5時(shí),實(shí)驗(yàn)測出的峰值信噪比PSNR=43.0231,這個(gè)值表明了圖像在嵌入水印之后的透明性是比較好的,從視覺的角度也可以看到,圖像沒有任何可見失真;另外,在沒有任何攻擊下,水印可以完全準(zhǔn)確地提取出來(見圖1)。
下面進(jìn)行魯棒性測試,圖2是對圖像進(jìn)行窗口大小為3×3的中值濾波后,提取出的水印,相似度為0.7609,圖3是對圖像加密度為0.03校驗(yàn)噪聲攻擊時(shí)提取出的水印,相似度0.7016,圖4是圖像進(jìn)行壓縮比為25:2的JPEG壓縮后提取的水印,相似度為0.9076,圖5是將圖像旋轉(zhuǎn)18度后提取出的水印,相似度為0.7503,圖6是對圖像進(jìn)行剪切掉1/4后提取出的水印,相似度為0.92322,圖7是對圖像進(jìn)行剪切掉1/2后提取出的水印,相似度為0.81931。
從以上的測試結(jié)果看到,該算法對一些常見的圖象處理或攻擊呈現(xiàn)出很好的魯棒性。而對于剪切攻擊,其魯棒性更為突出。
5 結(jié)語
本文介紹了一種基于空間域的簡便的圖像水印算法,根據(jù)圖像塊的灰度對比度,自適應(yīng)地改變水印加入的強(qiáng)度,使水印不可見性增強(qiáng),并兼顧了不可見性和魯棒性之間的矛盾。同時(shí)將水印加入到圖像中的位置隨機(jī)排列,提高了水印的安全性,也提高了水印抗擊剪切的魯棒性。