馬宏茹,李 碩,紀(jì) 寧
(大連交通大學(xué) 信息學(xué)院,遼寧 大連 116021)
教學(xué)視頻是現(xiàn)代教育的主要教育資源形式之一,也是遠程視頻的學(xué)習(xí)載體之一。教學(xué)視頻是指通過專用的錄像軟件,將教學(xué)過程中教師在電腦屏幕上實時演示和講課的內(nèi)容錄制下來,并且整合教師的聲音和畫面等信息生成視頻文件,供學(xué)習(xí)者使用的教學(xué)資源[1]。然而,目前網(wǎng)上盜版視頻較多,有些不良商家甚至打著教學(xué)視頻的旗號傳播非教學(xué)視頻內(nèi)容,給社會和學(xué)習(xí)者造成不良的影響。為了保護教學(xué)視頻的版權(quán)和產(chǎn)權(quán),數(shù)字水印技術(shù)(Digital Watermarking)作為一項成熟的技術(shù),可以廣泛應(yīng)用到教學(xué)視頻保護領(lǐng)域。
視頻碼流的運動矢量是通過視頻編碼的運動估計算法獲得的[2-3],因此,將水印信息嵌入運動矢量,在視頻編碼的同時即可完成水印的嵌入。Kutter等人首次提到了基于運動矢量的視頻水印嵌入方案,主要利用對運動矢量進行適當(dāng)修改,進而起到嵌入水印信息的效果。文獻[4]在此基礎(chǔ)上進一步拓展了基于運動矢量的視頻水印技術(shù)。由此可見,準(zhǔn)確的運動矢量對視頻水印嵌入與提取起著至關(guān)重要的作用。但是以上基于運動矢量的視頻水印技術(shù)都是在傳統(tǒng)編碼標(biāo)準(zhǔn)上完成的,而傳統(tǒng)編碼標(biāo)準(zhǔn)中運動矢量的生成都是基于平移運動模型,無法有效預(yù)測視頻中運動物體旋轉(zhuǎn)和變形等一系列復(fù)雜運動,這勢必會造成運動矢量不準(zhǔn)確,進而造成水印嵌入和提取的不準(zhǔn)確。
本文從實際應(yīng)用出發(fā),結(jié)合傳統(tǒng)的運動矢量的視頻水印技術(shù)的優(yōu)缺點,提出一種基于仿射運動模型的運動矢量的視頻水印算法。該水印算法在仿射運動模型的基礎(chǔ)上得到準(zhǔn)確的運動矢量,在編碼過程中對運動矢量嵌入水印,在視頻解碼過程中提取水印。
視頻編碼中,運動矢量的生成過程即是運動估計的過程,如圖1所示。
圖1 運動估計過程
即最小化如下的公式:
用P表示視頻序列中的參考幀;I表示當(dāng)前幀;N表示視頻幀的像素總數(shù);f(·)表示匹配誤差某種度量標(biāo)準(zhǔn),如絕對誤差和SAD、平均絕對差值MAD(Mean Absolute Difference)、誤差平方和SSD(Sum of Squared Difference)以及均方誤差MSD等。w表示為形變函數(shù),即運動模型;mx和my分別表示為該運動模型下的運動矢量沿x軸和y軸方向的分量。傳統(tǒng)的視頻編碼中塊平移運動模型為w(xi,m)=xi+mx和w(yi,v)=yi+my。
仿射運動模型對應(yīng)的函數(shù)為:
式中:(m1,m2,m3,m4,m5,m6)為仿射模型的運動矢量,m1、m2、m4、m5與旋轉(zhuǎn)、縮放運動有關(guān),而m3、m6與平移運動有關(guān)。為了方便求解,本文選取SSD作為匹配誤差的度標(biāo)準(zhǔn),即:
式中:匹配誤差ei(m)=I(xi,yi)-R(w(xi,m),w(yi,m))。
本節(jié)利用高斯-牛頓迭代法(Gauss-Newton gradient-method),基于仿射運動模型,求解出視頻編碼中當(dāng)前宏塊的運動矢量。高斯-牛頓法作為最優(yōu)化方法的一種,已經(jīng)被廣泛運用到圖像處理和視頻編碼中[5]。其求解過程就是找出最小化K(m)的運動矢量。首先采用泰勒展開式(Taylor)對匹配誤差函數(shù)進行近似,從而通過反復(fù)迭代求出極小值。假設(shè)當(dāng)前迭代點是mk(k=1,2,3,4,5,6),那么可以用匹配誤差函數(shù)ei(m)在mk處的一階泰勒展開式近似ei(m),可得:
式中:Δm=mk+1-mk;mk+1表示下一次迭代點;ei′(mk)表示ei(m)在mk的 1階導(dǎo)數(shù),將式(4)代入式(3),可得SSD泰勒表達式:
K(m+Δm)對更新參數(shù)Δm的偏微分為:
進而可得:
運動矢量是直接影響視頻傳輸質(zhì)量的因素之一,因此基于運動矢量的視頻水印技術(shù)對運動矢量的準(zhǔn)確性要求很高[6]。本文通過基于仿射運動模型的高斯-牛頓迭代法求解運動矢量策略,較傳統(tǒng)視頻編碼中平移運動模型,可得到更為準(zhǔn)確的運動矢量。
在新一代的編碼標(biāo)準(zhǔn)HEVC(High Efficiency Video Coding)中,當(dāng)前宏塊的運動矢量的預(yù)測與上、下、左、右4個宏塊的相關(guān)性很大。由于運動矢量影響最終視頻解碼質(zhì)量,應(yīng)當(dāng)盡量小幅度地修改運動矢量,因此本文只在與平移運動相關(guān)的運動矢量m3、m6進行水印嵌入。文獻[7]提出壓縮視頻序列中大部分幀是運動補償編碼幀,因此將水印隱藏在幅度值大運動矢量中具有較好的魯棒性。綜合上述特性,提出一種水印嵌入思想:在HEVC編碼中每個圖像組(GOP)可以自定義,本文采用每隔一個Gopsize=4進行一次水印嵌入操作。水印信息是一幅二值圖像,通過一定的控制條件選擇其中的部分運動矢量來嵌入水印。嵌入算法為:首先根據(jù)周圍宏塊的水平和豎直運動矢量分量的平均值,分別定義當(dāng)前宏塊的運動矢量閾值ρx和ρy,根據(jù)ρx和ρy的值確定是否在運動矢量的水平分量或垂直分量嵌入水印。該算法只需要對運動矢量進行簡單的判斷和加減運算,因此計算復(fù)雜度較低。
比較當(dāng)前宏塊的水平和豎直運動矢量分量ρx和ρy,選取閾值較大為水印嵌入控制條件。然后,比較當(dāng)前宏塊運動矢量分量是否滿足條件,若滿足,當(dāng)前分組運動矢量分量嵌入1比特信息,否則跳到下一分組。其步驟簡述如下。
(1)確定模板的位置,通過基于仿射運動模型的運動矢量求解法求解周圍運動矢量分量m3和m6,以便計算ρx和ρy。
(2)通過比較ρx和ρy,確定該組模板嵌入水印控制閾值,判斷是在水平分量還是垂直運動矢量嵌入水印。
(3)根據(jù)確定的控制閾值,若|m(i,j)|>ρ,則水印序列βk=1,否則βk=0。其中βk表示第k個水印值;若|m(i,j)|≤ρ,則不滿足水印嵌入條件,跳到下一分組。
(4)判斷水印是否嵌入結(jié)束。
整個水印嵌入過程如圖2所示。由ρx、ρy可知,水印嵌入充分利用周圍宏塊的運動矢量,且只對運動矢量的某一分量進行微調(diào)整。
圖2 本文視頻水印整體框架
相對于水印嵌入算法,水印的提取可以在解碼端同步進行。首先提取當(dāng)前宏塊的周圍4個宏塊的運動矢量,按照嵌入時的方法計算ρx和ρy,提取的步驟如下。
(1)比較ρx和ρy,選取較大值作為嵌入水印閾值ρ,確定水印嵌入在水平運動矢量m3還是豎直運動矢量m6中。
(2)依照下面的公式提取水印:
通過上述水印提取步驟即可提取水印。
本文主要針對傳統(tǒng)基于平移運動模型的運動矢量視頻水印算法提出一種改進的運動矢量水印算法。利用仿射運動模型,通過高斯-牛頓迭代法生成更為準(zhǔn)確的運動矢量,進而根據(jù)當(dāng)前宏塊與周圍宏塊的運動相關(guān)性選擇嵌入水印。實驗結(jié)果表明,這種方法在提高視頻質(zhì)量的同時,水印的嵌入與提取更為準(zhǔn)確。但是本文的算法具有一定的復(fù)雜性,在視頻編碼后導(dǎo)致碼率有一定的增加,后續(xù)的工作將繼續(xù)改進。