趙 杰 楊濱峰 李亞文
(商洛學(xué)院電子信息與電氣工程學(xué)院 商洛 726000)
信息技術(shù)發(fā)展使得數(shù)字圖像的版權(quán)保護(hù)與數(shù)字內(nèi)容安全性等問題成為社會的熱點(diǎn)。數(shù)字水印技術(shù)作為數(shù)字內(nèi)容認(rèn)證的重要手段受到了學(xué)者們的重視,近年來人們已經(jīng)提出了眾多數(shù)字水印算法[1~4]。常見的方法會對原始載體數(shù)據(jù)進(jìn)行一定的修改,在水印的魯棒性和不可感知性上存在著矛盾,在某些應(yīng)用場合也不適用。零水印算法[5]無需對原始載體信息進(jìn)行修改,較好地解決了水印的魯棒性和不可感知性之間的矛盾。常見的零水印算法有基于空域、變換域、奇異值分解等,多數(shù)計(jì)算復(fù)雜度較高[6~11]。本文提出了一種基于小波提升和K鄰點(diǎn)均值的圖像零水印算法。為提高安全性,水印圖像首先要進(jìn)行置亂變換[12],然后對載體圖像進(jìn)行一級小波提升分解,利用低頻子圖分塊的K鄰點(diǎn)均值生成特征矩陣,特征矩陣和水印進(jìn)行運(yùn)算得到秘密圖像,提取時(shí)利用秘密圖像和置亂密鑰可提出水印信息。
K鄰點(diǎn)均值的基本思路是:在一個(gè)窗口內(nèi),屬于同一集合體的像素,其灰度值相關(guān)性較高,于是可用窗口內(nèi)與中心像素的灰度最接近的K個(gè)鄰點(diǎn)像素的平均灰度值來代替窗口中心像素的灰度值[13]。一個(gè)n×n窗口的K鄰點(diǎn)均值為
如果以M×N大小的二值圖像W作為水印圖像,對Q×S大小的灰度圖像P進(jìn)行零水印注冊,步驟如下:
1)將水印圖像W 進(jìn)行置亂,記為WS。
2)對原始載體圖像P進(jìn)行一級小波提升分解,提取其低頻分量,記為PL。
3)將 PL分成 M×N個(gè)互相不重疊的小塊PLB(x,y),其中 x=1,2,…M;y=1,2,…N 。這些小塊不一定要完全覆蓋原始載體圖像。計(jì)算每個(gè)PLB(x,y)的 K 鄰點(diǎn)均值,記為 BM(x,y),所有BM(x,y)的均值記為PLM。為削弱噪聲等的影響,可取較大的K值。
4)利用系數(shù)關(guān)系,生成構(gòu)造圖像F:
若 BM(x,y)>PLM
則 F(x,y)=1;
否則 F(x,y)=0。
5)將F和WS進(jìn)行異或,得到零水印信息FE,并將其進(jìn)行注冊。
使用Matlab 7.12進(jìn)行實(shí)驗(yàn)仿真,選擇“Lena”灰度圖像作為原始載體圖像,選用32×32的有意義二值圖像作為原始水印,如圖1所示。
圖1 原始載體圖像和原始水印
測試1:對載體圖像分別進(jìn)行加性噪聲、壓縮、濾波等常見操作,測試其相關(guān)系數(shù),并與DCT系數(shù)方法作比較,結(jié)果如表1所示。
表1 攻擊測試
測試2:JPEG壓縮是常見的圖像處理操作,因此,再做一組測試,進(jìn)一步對比兩種算法對JPEG壓縮處理的魯棒性,測試結(jié)果如表2所示。
表2 JPEG壓縮攻擊測試
從表1和表2測試結(jié)果看出,本文算法在面對濾波、噪聲、JPEG壓縮等處理時(shí)有較強(qiáng)的魯棒性,在剪切攻擊時(shí)相似度有明顯降低;針對噪聲和JPEG壓縮,本文算法有較大優(yōu)勢。
測試3:為了驗(yàn)證本文算法的可靠性,對于其他圖像是否會出現(xiàn)誤判的情況,分別選取boat、elaine、house、pepper、baboon和 lake等多幅圖像作為對比圖像進(jìn)行虛警測試,這些圖像檢測的相似度均較低,檢測出的信息混亂。如選擇合適的閾值,該算法對其他未注冊圖像很少會出現(xiàn)誤判情況。
表3 虛警測試部分結(jié)果
數(shù)字水印取證技術(shù)是這些年的研究熱點(diǎn),部分高校已經(jīng)將其納入理論或?qū)嵺`教學(xué)中。本文提出了一種基于小波提升和K鄰點(diǎn)均值的零水印算法,運(yùn)算復(fù)雜度較低,可以抵抗一些常見的攻擊尤其是JPEG壓縮處理。實(shí)驗(yàn)結(jié)果表明,本算法有較強(qiáng)的魯棒性。水印為有意義二值圖像,但水印實(shí)質(zhì)性的信息容量不高,這也是大多數(shù)水印算法存在的問題,還需進(jìn)一步研究解決。