孔凡芝 李金龍 吳冬梅
1(浙江傳媒學(xué)院電子信息學(xué)院 浙江 杭州 310018)2(曲阜師范大學(xué)物理工程學(xué)院 山東 曲阜 273165)
數(shù)字水印技術(shù)是一種圖像、視頻版權(quán)保護(hù)的有效方法[1]。水印的嵌入需要滿足以下兩個條件:首先不能明顯影響原始圖像的清晰度;其次水印應(yīng)具有隱蔽性和抗攻擊能力[2]。目前,針對數(shù)字視頻的攻擊主要有時間攻擊(如丟幀、插幀和幀率改變等)和幾何攻擊(如旋轉(zhuǎn)、裁剪和縮放等)[3]。
根據(jù)水印的嵌入位置,水印技術(shù)可分為空間域和變換域技術(shù)[4]。變換域方法是通過一些數(shù)字變換,將水印添加到圖像的某個重要區(qū)域,具有高安全性。具有代表性的變換域技術(shù)有離散余弦變換(DCT)[5]、離散傅里葉變換(DFT)[6]和離散小波變換(DWT)[7]。其中,DCT具有較好的能量壓縮能力和去相關(guān)性,應(yīng)用較為成熟。而DWT具有的多分辯率特性,可以把圖像分解為多個不同頻帶的子圖,方便結(jié)合人眼視覺特征設(shè)計水印[8]。那么,可將DCT和DWT的優(yōu)點(diǎn)相結(jié)合,對圖像進(jìn)行DWT后再執(zhí)行DCT,有助于進(jìn)一步降低相鄰小波系數(shù)的相關(guān)性,且可進(jìn)一步對能量進(jìn)行壓縮。為此,學(xué)者也提出了一些基于DCT和DWT的水印方法。例如,文獻(xiàn)[9]提出了一種基于DWT-DCT的水印方法,利用了一種相似性結(jié)構(gòu)指數(shù)度量來評估由水印引起的失真。文獻(xiàn)[10]在DWT-DCT水印方法的基礎(chǔ)上引入了遺傳算法來確定最優(yōu)參數(shù),以此獲得更好的水印質(zhì)量和對信號處理攻擊的魯棒性。文獻(xiàn)[11]融入了奇異值分解(Singular Value Decomposition,SVD)技術(shù),將所選塊轉(zhuǎn)換為DWT域,并在LL1子帶上應(yīng)用SVD,還利用螢火蟲算法(Firefly)對水印比特的嵌入過程進(jìn)行了優(yōu)化,使水印具有更好的不可感知性。另外,文獻(xiàn)[12]為了提高水印的魯棒性,采用了相關(guān)性較小的YCbCr顏色空間,并在此空間上進(jìn)行DWT來嵌入水印。
Zernike矩[13]是一種理想的圖像特征描述符,從Zernike矩的相位信息中可以獲得圖像的旋轉(zhuǎn)角度,所以其具有旋轉(zhuǎn)不變性且對噪聲不敏感,能夠很好地抵抗幾何攻擊,在圖像處理領(lǐng)域有著廣泛的應(yīng)用。
結(jié)合上述分析,本文提出了一種新的圖像水印方案。將圖像轉(zhuǎn)換到Y(jié)CbCr(亮度,色度-藍(lán),色度-紅)顏色空間,將亮度分量作為目標(biāo)嵌入?yún)^(qū)域。在水印嵌入過程中結(jié)合了DWT-DCT和Zernike矩。該研究的主要創(chuàng)新點(diǎn)總結(jié)如下:
(1) 利用DWT-DCT可有效提高水印的不可感知性和對常規(guī)攻擊的魯棒性,利用Zernike矩作為圖像特征描述符,可以很好地抵抗幾何攻擊;
(2) 提出的方案將水印嵌入?yún)^(qū)域分成多個子塊,通過偽隨機(jī)方法選擇一些子塊來嵌入水印。在水印提取過程中,則需要掌握正確的偽隨機(jī)密鑰才能提取出水印,從而提高了水印的安全性。
實(shí)驗(yàn)結(jié)果表明,本文提出的水印方案具有很好的隱蔽性,且對常見攻擊具有很好的魯棒性。
DWT是對連續(xù)小波變換的尺度進(jìn)行離散化得到,在不同尺度上對信號進(jìn)行分解,分解成一個低頻部分和多個高頻部分。低頻部分蘊(yùn)含著信號特征,高頻成分則能反映信號的細(xì)節(jié)差別。例如,圖像經(jīng)過一級小波分解后,可以形成逼近子圖(LL)、水平方向子圖(HL)、垂直方向子圖(LH)和對角方向子圖(HH),如圖1所示。其中,LL為低頻部分,其他3個為高頻細(xì)節(jié)部分。

圖1 DWT分解子圖
DCT可以將圖像從像素空間轉(zhuǎn)換到頻率空間,從而挖掘出相似圖像中的不同特征[14]。本文對經(jīng)過一級DWT后的視頻幀亮度分量的LL子帶進(jìn)行DCT。
一維DCT定義為:
(1)
式中:u=0,1,2,…,N-1。其逆變換定義為:
(2)
式中:x=0,1,2,…,N-1。且:
(3)
因此,當(dāng)u=0時,式(1)可簡化為:
(4)
由式(4)可知,第一變換系數(shù)是樣本序列的平均值,稱為直流(DC)系數(shù),其他變換系數(shù)稱為交流(AC)系數(shù)。二維DCT是一維DCT的擴(kuò)展,表達(dá)式為:

(5)
式中:u,v=0,1,2,…,N-1;α(u)、α(v)由式(3)定義。其逆變換定義如下:


(6)
式中:x,y=0,1,2,…,N-1。
在信源為視頻的情況下,時間冗余度被充分利用以提供更高的壓縮率。因此,連續(xù)幀的相鄰象素具有非常高的相關(guān)性。利用這種相關(guān)性,可以通過其鄰近像素來預(yù)測當(dāng)前像素值。此外,大多數(shù)的圖像和視頻數(shù)據(jù)在DCT壓縮后仍然可用。因此該方案具有較好的實(shí)時性。
Zernike矩是使用一組復(fù)多項(xiàng)式集構(gòu)成的正交化函數(shù),該多項(xiàng)式集為一個在單位圓(x2+y2)≤1上的完備正交化集[15],多項(xiàng)式定義為:
Amn(x,y)=Amn(r,θ)=Rmn(r)ejnθ
(7)

(8)
式中:
(9)
基于式(7)-式(9),m、n和圖像f(x,y)的關(guān)系可以表示為:
(10)
式中:(x2+y2)≤1;Amn(x,y)*表示Amn(x,y)的復(fù)共軛。
為了計算Zernike矩,圖像首先被映射到極坐標(biāo)上的單位圓中,圖像的中心為單位圓的原點(diǎn),落在單位圓外的像素將不使用。

(11)

(12)
在本文提出的水印方案中,水印信息被嵌入到視頻的每一幀中,使其能夠應(yīng)對丟幀和插幀攻擊。水印嵌入的過程如圖2所示。

圖2 水印嵌入過程
本文方案選擇了YCbCr(亮度,色度-藍(lán),色度-紅)顏色空間,而不是常見的RGB(紅,綠,藍(lán))顏色空間,將YCbCr空間的亮度分量作為目標(biāo)嵌入?yún)^(qū)域。這樣選擇的原因如下:RGB空間描述法具有最相關(guān)的分量,而YCbCr顏色空間分量為最不相關(guān)的分量[16]。具有相關(guān)性的RGB分量不適合嵌入水印。在RGB空間中,感知到的視頻幀顏色質(zhì)量取決于所有分量。因此,將水印嵌入其中某一個RGB分量并不是最好的選擇。另一方面,YCbCr允許提取不相關(guān)的分量,并且可以將圖像的消色差部分從彩色部分中分離。為了實(shí)現(xiàn)較高的魯棒性和較大的嵌入容量,所提出的方案使用了彩色圖像最小相關(guān)的YCbCr空間。
由于圖像壓縮時不會對亮度分量進(jìn)行下采樣,壓縮過程中的亮度分量損失小于色度分量,所以提出的方案將水印嵌入到亮度分量中,使其可以被更好地檢測出來,以獲得抗壓縮魯棒性。
選擇一個大小為M×N的二進(jìn)制標(biāo)識作為水印標(biāo)識,原始二進(jìn)制標(biāo)識的每一位非“0”即“1”。但本文需要一個非零序列,為此將所有的“0”全部轉(zhuǎn)換為“-1”即可。
為了使水印對旋轉(zhuǎn)攻擊具有魯棒性,亮度塊的中心被選擇為中心。將大小為P×P的正方形區(qū)域作為嵌入?yún)^(qū),這一區(qū)域也是計算Zernike矩時單位圓的位置。區(qū)域尺寸P×P為8×8的倍數(shù),這是因?yàn)樘岢龅姆桨甘褂?×8的塊來嵌入一個水印bit。
為了使該水印具有高安全性,利用一個偽隨機(jī)數(shù)(Pseudo Random Number,PRN)來選擇8×8的嵌入塊,也用來保證連續(xù)幀中具有不同的嵌入塊。這里,利用用戶定義的密鑰作為置換向量,用作PRN發(fā)生器的輸入。在提取水印時,需要使用和嵌入水印時相同的置換向量來生成PRN。
為了平衡水印隱蔽性和魯棒性之間的矛盾,整個水印被拆分成8×8的bit,并分別嵌入到一組幀中。組中幀的數(shù)量取決于水印標(biāo)識的尺寸。
水印嵌入過程描述如下:
步驟1從原始視頻中提取每一幀。
步驟2根據(jù)式(13)將提取的幀從RGB轉(zhuǎn)換至YCbCr顏色空間。
(13)
步驟3在每個亮度分量的中心區(qū)域選擇一個P×P的方塊區(qū)域作為目標(biāo)嵌入?yún)^(qū)。將P×P的塊劃分成大小為8×8的非重疊子塊。由于水印處于一幀的中心區(qū)域,使其具有抗剪裁攻擊的能力。
步驟4偽隨機(jī)地選擇Q個用來插入水印信息的不同8×8子塊。
步驟5在每個選定的8×8子塊上執(zhí)行DWT,然后在獲得LL子圖上執(zhí)行二維DCT。
步驟6針對每個DCT系數(shù)8×8塊,偽隨機(jī)地選擇前n個AC分量。這些AC分量用來嵌入水印的1 bit。AC分量的調(diào)整根據(jù)如下的規(guī)則來完成:
if (W(k)==1)
do {
if (mod(C(i,j),δ)≤α)
Cw(i,j)=C(i,j)-mod(C(i,i),δ)-α
else
Cw(i,j)=C(i,j)-mod(C(i,j),δ)+γ
endif
} until ‘n’ number of AC coefficients are considered.
elseif (W(k)==-1)
do{
if (mod(C(i,j),δ)≥γ)
Cw(i,j)=C(i,j)-mod(C(i,j),δ)+ε
else
Cw(i,j)=C(i,j)-mod(C(i,j),δ)+α
endif
}until ‘n’ numbers of AC coefficients are considered.
endif
其中:W(k)為要被嵌入的水印位;C(i,j)為原始的AC分量;Cw(i,j)為加水印后的AC分量。函數(shù)mod(C(i,j),δ)為C(i,j)和δ的余數(shù)。這里,α、β、γ、ε和δ為嵌入強(qiáng)度,其中,β=2α,γ=3α,δ=4α,ε=5α。這些值是基于大量實(shí)驗(yàn)獲得的,使得該水印視頻的保真度和魯棒性是都在可接受的范圍。
步驟7計算特定m、n處的Zernike矩Zm,n,并保存這些值,用于校正幾何攻擊。
步驟8重復(fù)步驟1-步驟6,直到所有的視頻幀都被嵌入水印。
步驟9根據(jù)式(14)將所有幀從YCbCr轉(zhuǎn)換至RGB彩色空間,并將所有幀合并構(gòu)建水印視頻。
(14)
水印提取是水印嵌入的逆過程,如圖3所示。水印提取過程不需要原始圖像和被嵌入的水印。但由于水印bit被嵌入到偽隨機(jī)選擇的8×8子塊中來增強(qiáng)安全性,所以必須知道PRN發(fā)生器的輸入密鑰,以確定嵌入塊的位置。

圖3 水印提取過程
水印提取過程描述如下:
步驟1從水印視頻中提取每一幀。
步驟2將提取的幀從RGB轉(zhuǎn)換至YCbCr彩色空間。

步驟4在每個亮度分量的中心區(qū)域選擇一個P×P的方塊區(qū)域作為嵌入?yún)^(qū)。然后將該方塊分割成大小為8×8的非重疊的子塊。
步驟5使用與水印嵌入時相同的密鑰輸入到偽隨機(jī)數(shù)(PRN)生成器,找到嵌入水印的8×8子塊的位置。
步驟6在每個選定的8×8子塊執(zhí)行DWT-DCT。
步驟7選擇出與壓縮時相同的n個AC分量,并根據(jù)如下規(guī)則檢測水印bit:
do {
if(mod(Cw(i,j),δ)>β)
Wblock(b)=1
else
Wblock(b)=-1
endif
} until ‘n’ numbers of AC coefficients are considered.
其中:1≤b≤n;Wblock(b)為提取的水印bit;Cw(i,j)為有水印的AC分量。最終根據(jù)Wblock(b)中1和-1出現(xiàn)的較多的一方,來獲得8×8子塊的水印bitW(k)。
步驟8重復(fù)步驟2-步驟7,直到所有的水印bit都被提取。
在MATLAB 2014b中實(shí)現(xiàn)提出的算法。實(shí)驗(yàn)中使用3個AVI格式的標(biāo)準(zhǔn)視頻,分別為“Coastguard”、“foreman”和“football”,每個視頻中使用150幀。設(shè)定二進(jìn)制標(biāo)識的大小為50×25像素,亮度分量中的方形水印嵌入?yún)^(qū)的尺寸為176×176像素。在嵌入過程第4步中涉及的Q值是根據(jù)水印尺寸計算的,在本次實(shí)驗(yàn)中,該值為50。在嵌入過程第6步中提到的全局常數(shù)(α)的值為13。
采用峰值信噪比(PSNR)和平均結(jié)構(gòu)相似性指數(shù)度量(MSSIM)來衡量嵌入水印后視頻幀的失真度[17];采用相對熵距離(Kullback-Leibler距離)作為安全性度量(ε)[18]。較高的PSNR、MSSIM表明嵌入水印對原始圖像的影響較小,具有較好的隱蔽性,而較低的ε量值則表明水印信息的安全性較好。PSNR被定義為:
(15)
式中:MAX為視頻幀中最大可能的像素值。均方誤差(MSE)定義為:
(16)
式中:X為原始視頻幀的系數(shù);X′為水印視頻幀的系數(shù)。M和N分別為視頻幀的高度和寬度。
MSSIM定義如下:
(17)
式中:
(18)

分別用隨機(jī)變量R和S表示原始視頻幀和水印視頻幀。Kullback Leibler距離D(p‖q)定義為:
(19)
式中:p(x)和q(x)分別表示隨機(jī)變量R和S的概率分布函數(shù)。符號Ep表示聯(lián)合分布p的期望。D(p‖q)值總是非負(fù)的,當(dāng)且僅當(dāng)p(X)=q(X)時該值為0。若D(P‖q)≤ε,則將ε設(shè)定為安全值。

(20)
圖4展示了三個標(biāo)準(zhǔn)視頻幀中,原始視頻幀和加水印后的視頻幀。可以看出,水印視頻幀與原始視頻幀幾乎沒有差別,說明了提出的水印嵌入方法具有很好的隱蔽性。表1列出了嵌入水印后視頻幀的PSNR、MSSIM和ε值。實(shí)驗(yàn)數(shù)據(jù)表明,通過提出的水印嵌入算法獲得的水印視頻幀具有高保真度和高安全性。

(a) Coastguard視頻第35幀圖像

(b) foreman視頻第36幀圖像

(c) football視頻第22幀圖像圖4 原始視頻幀和水印視頻幀

表1 各水印視頻幀的PSNR、MSSIM和ε數(shù)據(jù)
圖5顯示了水印提取結(jié)果,其中:(a)為原始水印圖像;(b)為從水印視頻幀中提取的水印,可以看出與原始水印基本一致;(c)為在沒有正確密鑰的情況下提取的水印,類似于白噪聲,這證明了提出的方案對密鑰敏感,進(jìn)一步證明了安全性。

(a) 原始水印圖像 (b) 從水印視頻幀中提取的水印圖像,NCC=1 (c) 使用錯誤密鑰提取的水印圖5 水印提取結(jié)果
將本文方法與文獻(xiàn)[10-12]方法的性能進(jìn)行比較。文獻(xiàn)[10]采用了經(jīng)典的DWT-DCT水印方法;文獻(xiàn)[11]采用了較新且有效的DWT-SVD的方法,而且都通過智能算法對其進(jìn)行了優(yōu)化;文獻(xiàn)[12]采用了與本文相同的YCbCr顏色空間。三種方法都具有可比性。
實(shí)驗(yàn)結(jié)果數(shù)據(jù)如表2所示,每個數(shù)據(jù)是在3種視頻幀中實(shí)驗(yàn)結(jié)果的平均值。可以看出,本文方案具有較高的PSNR和MSSIM值,證明了其在隱蔽性和安全性方面具有明顯的優(yōu)勢。另外,幾種較新的對比方法也獲得了不錯的性能,這是因?yàn)樗鼈兌紝?jīng)典方法進(jìn)行了改進(jìn)。然而,文獻(xiàn)[10]和文獻(xiàn)[11]分別采用的遺傳算法和螢火蟲算法需要迭代學(xué)習(xí),為此嵌入水印的時間較長,實(shí)時性不是很理想。

表2 各種方法的水印嵌入性能對比
為了評估本文方案對圖像攻擊的魯棒性,對水印圖像進(jìn)行了一些信號處理操作來模擬各類攻擊。表3-表6分別給出了本文方案在“Coastguard”、“foreman”和“football”三個視頻上,針對丟幀攻擊、插幀攻擊、幀剪裁攻擊和旋轉(zhuǎn)攻擊的魯棒性實(shí)驗(yàn)數(shù)據(jù)。

表3 對丟幀攻擊的魯棒性

表4 對插幀攻擊的魯棒性

表5 對幀剪裁攻擊的魯棒性

表6 對旋轉(zhuǎn)攻擊的魯棒性
實(shí)驗(yàn)結(jié)果可以看出,隨著丟幀率、插幀率、剪裁比例和旋轉(zhuǎn)角度的增加,一定程度上會影響水印方案的魯棒性,但本文方案在三個視頻上都具有較高的NCC值。針對丟幀、插幀、裁剪和旋轉(zhuǎn)攻擊的平均NCC值分別達(dá)到了0.974、0.972、0.984和0.989。正是由于本文方案采用了具有旋轉(zhuǎn)不變性的Zernike矩,所以對于旋轉(zhuǎn)攻擊的效果很好。另外,由于本文方案在視頻中的每個幀中都嵌入了水印,所以能夠抵抗丟幀和插幀攻擊。這些實(shí)驗(yàn)結(jié)果說明了本文方案能夠抵抗丟幀、插幀、裁剪和旋轉(zhuǎn)攻擊。
為了進(jìn)一步證明本文方法的有效性,將其與文獻(xiàn)[10]和文獻(xiàn)[11]提出的水印方案進(jìn)行比較。在三個視頻中進(jìn)行幀縮放、平移和旋轉(zhuǎn)攻擊魯棒性的分析實(shí)驗(yàn),結(jié)果如表7所示,其中數(shù)據(jù)為三個視頻實(shí)驗(yàn)的平均值。可以看出,本文方案在縮放、平移和旋轉(zhuǎn)攻擊方面具有更好的魯棒性。這是由于采用了YCbCr顏色空間、DWT-DCT和Zernike矩的結(jié)果。

表7 對縮放、平移和旋轉(zhuǎn)攻擊的魯棒性
為了提高視頻幀中的水印性能,本文提出了一種基于DWT-DCT和Zernike矩視頻水印技術(shù)。通過將視頻幀轉(zhuǎn)換到Y(jié)CbCr顏色空間來去相關(guān)性,利用偽隨機(jī)法和DWT-DCT來構(gòu)建水印嵌入的合適區(qū)域,并使用Zernike矩的旋轉(zhuǎn)不變性來抵抗針對水印圖像的幾何攻擊。在3個視頻序列上的實(shí)驗(yàn)結(jié)果表明,本文方案所嵌入的水印具有很好的不可感知性,且能夠很好地抵抗常見的時間和幾何攻擊,具有較高的實(shí)用價值。