謝金寶,隋愛娜
(中國傳媒大學(xué)計(jì)算機(jī)學(xué)院,北京 100024)
近年來,隨著信息技術(shù)的快速發(fā)展,多媒體產(chǎn)品特別是圖像、視頻等數(shù)字化產(chǎn)品大量涌現(xiàn)。各種問題接踵而至,多媒體產(chǎn)品被非法篡改,隨意復(fù)制傳播的現(xiàn)象時(shí)有發(fā)生,危害著版權(quán)所有者的合法權(quán)益。因而在通信和互聯(lián)網(wǎng)領(lǐng)域,如何有效保護(hù)知識(shí)產(chǎn)權(quán)是一個(gè)重要的研究領(lǐng)域。
數(shù)字水印技術(shù)是指在載體中加入一些標(biāo)示信息,同時(shí)不影響原載體內(nèi)容的信息隱藏技術(shù)[1],自提出以來已經(jīng)成為數(shù)字產(chǎn)品版權(quán)保護(hù)的重要手段。
基本思路就是在圖片、音頻、視頻等多媒體文件中加入一些版權(quán)相關(guān)信息,在必要的時(shí)候?yàn)榘鏅?quán)所有人提供證據(jù)。
數(shù)字水印技術(shù)主要分為空域水印和頻域水印。由于頻域水印具有更好的魯棒性和抗攻擊性,在數(shù)字圖像領(lǐng)域得到大量的應(yīng)用,具有非常好的研究基礎(chǔ)[1]?,F(xiàn)在視頻水印技術(shù)更多的是借鑒圖像水印技術(shù)的研究成果,但沒有更好地利用視頻序列的時(shí)間相關(guān)性。本文就是為更好地利用視頻時(shí)間特性有效地嵌入水印提供一種可行方案。
視頻水印技術(shù)是一種針對(duì)數(shù)字視頻載體的時(shí)間冗余和空間冗余加入信息,既不影響視頻質(zhì)量,又能用于版權(quán)保護(hù)和內(nèi)容完整性檢驗(yàn)的水印技術(shù)[2]。
視頻水印技術(shù)根據(jù)與視頻編碼系統(tǒng)的結(jié)合方式不同,可以分為基于原始視頻的嵌入方法和基于壓縮域視頻的嵌入方法[3]〗。
現(xiàn)有的視頻水印研究主要集中在基于原始視頻的嵌入方法上,也就是基于視頻完全解碼的基礎(chǔ)上。
在H.264壓縮碼流中嵌入水印信息時(shí),由于壓縮碼流中并不攜帶圖像信息,而是以殘差圖像和運(yùn)動(dòng)矢量的形式存在。因而在原始視頻圖像中嵌入水印,需要在視頻數(shù)據(jù)被完全解碼后進(jìn)行。
H&G算法是視頻壓縮域水印算法,該算法直接針對(duì)已編碼的視頻壓縮碼流嵌入水印,在設(shè)計(jì)策略上只需進(jìn)行部分解碼,無需進(jìn)行完全視頻解碼再嵌入水印這一復(fù)雜過程。這一算法因?yàn)楣?jié)省了硬件資源實(shí)現(xiàn)成本更低等優(yōu)點(diǎn),對(duì)現(xiàn)有數(shù)字視頻產(chǎn)品的版權(quán)保護(hù)具有重要的實(shí)用價(jià)值,但該算法受到相應(yīng)視頻壓縮算法和視頻編碼標(biāo)準(zhǔn)的局限[4-5]。H&G算法當(dāng)初設(shè)計(jì)是針對(duì)MPEG2視頻壓縮標(biāo)準(zhǔn)的,并不完全適用于H.264視頻壓縮標(biāo)準(zhǔn)。
本文首先改進(jìn)H&G算法,使其適用于H.264壓縮碼流;然后通過選擇合理的水印嵌入位置,提升水印的性能。本文的改進(jìn)方法可以在保證視頻質(zhì)量不受影響的前提下,增加水印容量,進(jìn)而使視頻水印有更好的魯棒性。
視頻序列是大量連續(xù)運(yùn)動(dòng)圖像的集合,由于前后圖像在時(shí)間上存在大量的冗余信息,考慮在此基礎(chǔ)上壓縮圖像實(shí)現(xiàn)壓縮編碼。對(duì)于視頻序列,根據(jù)幀的作用分為I、P和B三種幀類型,在H.264中還有SP和SB兩種用于動(dòng)態(tài)碼率的切換。
I幀也就是關(guān)鍵幀,在編解碼時(shí)不參考其他幀圖像,只使用幀內(nèi)預(yù)測模式。GOP組是視頻序列中的一組幀序列,同一個(gè)GOP組幀只參考本組幀,不同的GOP組互不干擾。I幀可以被單獨(dú)解碼,可以認(rèn)為是一個(gè)GOP組中最原始的參考幀[6];P幀在編碼解時(shí)使用單向前向幀間預(yù)測,參考前邊的I或P幀,根據(jù)被參考幀計(jì)算運(yùn)動(dòng)矢量;B幀在編解碼時(shí)使用雙向幀間預(yù)測,同時(shí)參考前向和后向的幀,可以達(dá)到更好的壓縮效率。
H&G算法是最先由Frank Hartung和Bernd Girod提出的一種可以將水印信息直接嵌入到碼流中的方法。此算法不需要考慮編解碼過程,從碼流中找到DCT系數(shù)嵌入水印信息,然后重新編碼回去。速度極快,且不會(huì)改變?cè)写a流的結(jié)構(gòu)[5]。
此算法適用于I幀中攜帶視頻原始數(shù)據(jù)的壓縮流,但H.264壓縮碼流I幀中并不攜帶原始視頻信息,為使該算法適用于H.264壓縮碼流,在嵌入水印時(shí)仍然需要完全解碼H.264壓縮碼流中的I幀。
H&G算法可以嵌入的水印容量有限,因非參考幀運(yùn)動(dòng)矢量沒有做相應(yīng)改變?nèi)菀自斐蛇\(yùn)動(dòng)圖像的偏移,影響視頻質(zhì)量。本文通過選擇嵌入位置,在一定程度上提升水印的嵌入容量。
本文具體思路:
1)分析I幀后續(xù)P幀和B幀的運(yùn)動(dòng)矢量,做統(tǒng)計(jì)和分析。通過分析后續(xù)P幀和B幀的運(yùn)動(dòng)矢量指向,選擇運(yùn)動(dòng)矢量指向較少的I幀宏塊嵌入水印,這樣可以對(duì)后續(xù)P幀和B幀造成較小的影響。首先對(duì)于P幀和B幀運(yùn)動(dòng)矢量做統(tǒng)計(jì)。
表1是針對(duì)高清和標(biāo)清兩種分辨率視頻運(yùn)動(dòng)矢量的統(tǒng)計(jì)結(jié)果,分析數(shù)據(jù)發(fā)現(xiàn)多個(gè)宏塊指向一個(gè)關(guān)鍵幀宏塊的比例較小,在skip模式下宏塊的編碼采用直接編碼的方式,不用經(jīng)過任何的編碼預(yù)測和變換,可以直接嵌入水印,并且有很好的效果。而大多數(shù)的宏塊沒有發(fā)生運(yùn)動(dòng)矢量的偏移,或者偏移時(shí)影響的范圍有限。
表1 關(guān)鍵幀運(yùn)動(dòng)矢量被后續(xù)P和B幀指向的數(shù)目
2)由于P幀宏塊中,也可以采用幀內(nèi)預(yù)測的方式。在考慮幀間預(yù)測的同時(shí)考慮P幀幀內(nèi)預(yù)測,選擇被指向較少的關(guān)鍵幀宏塊。
3)對(duì)于直接預(yù)測方式和skip方式的宏塊,由于其采用直接編碼的方式,可以嵌入水印。
圖1為水印嵌入流程。
1)對(duì)于一個(gè)具體的視頻流E,解碼I幀。得到I幀的所有圖像信息一個(gè)二維圖像像素矩陣Yij。
2)解碼該I幀的后續(xù)PBBPBB六幀,得到并分析其運(yùn)動(dòng)矢量。由于距離該I幀的距離不同,距離越遠(yuǎn)I幀對(duì)其參考價(jià)值越低,同時(shí)B幀還要參考后續(xù)幀,權(quán)值適度降低。因而按照100:50:50:75:25:25的權(quán)值統(tǒng)計(jì)其運(yùn)動(dòng)矢量的指向,得到一個(gè)指向矩陣Eij。
3)尋找指向矩陣Eij中最小的幾項(xiàng),即運(yùn)動(dòng)矢量指向較少的I幀宏塊。得到將要嵌入水印的I幀宏塊的下標(biāo)為ij。
4)根據(jù)I幀宏塊的下標(biāo)ij,找到I幀圖像像素矩陣中的對(duì)應(yīng)位置ij,對(duì)該像素宏塊做DCT(離散余弦變換),得到其變換后的系數(shù)Xij。
圖1 水印嵌入流程
5)嵌入水印信息時(shí),水印信息用DCT系數(shù)的相對(duì)大小關(guān)系體現(xiàn),具體方法如下:
(1) 將水印信息(文字或者圖片)變成01序列,Wi,為保證一定的提取成功率,將次序列擴(kuò)頻10次
(2)對(duì)要嵌入的宏塊像素做DCT變換,選取中頻系數(shù)。綜合考慮水印的魯棒性和不可見性,選擇中頻系數(shù)比較好。
(3) 對(duì)于I幀中的i行,j列宏塊,其變換域系數(shù)為一個(gè)16x16的矩陣,我們用Dij來表示:
如果Dij>Dji且當(dāng)時(shí)水印序列 Wk=1 則 交換 Dij與Dji的位置
如果Dij 我們對(duì)上述方法的實(shí)驗(yàn)結(jié)果進(jìn)行分析,在使用選擇方案進(jìn)行宏塊選擇和隨機(jī)選擇宏塊兩種方法之間進(jìn)行比較分析,使用相同的水印算法。因?yàn)殡S機(jī)選擇的隨機(jī)性,在不使用本文所提方法嵌入水印時(shí),多次選擇不同的塊,比較其效果。 首先從嵌入速度上進(jìn)行分析,x264是一個(gè)由開源社區(qū)維護(hù)和開發(fā)的H.264壓縮標(biāo)準(zhǔn)的高效編碼器。在不考慮硬件加速條件下,被認(rèn)為是目前最好的264編碼器。首先看在x264編碼器中,各個(gè)部分所占的時(shí)間比例。從理論上分析,本方法在速度上的提升。 圖2 x264編碼中各部分所占時(shí)間比 圖2為x264編碼主要功能模塊,filter模塊主要完成環(huán)路濾波及參數(shù)解析;encode模塊完成每幀主要參數(shù)的編碼工作;cabac模塊完成殘差數(shù)據(jù)的壓縮編碼。x264編碼的過程中analyse部分占用大約60%左右的時(shí)間,其主要工作是執(zhí)行運(yùn)動(dòng)矢量搜索算法,進(jìn)行像素插值的計(jì)算,選擇最優(yōu)的預(yù)測模式并計(jì)算得到運(yùn)動(dòng)矢量[7-8]。 對(duì)于I幀采用幀內(nèi)預(yù)測模式,宏塊編碼根據(jù)最優(yōu)函數(shù)選擇預(yù)測模式,根據(jù)周圍宏塊計(jì)算得到預(yù)測值,不需要運(yùn)動(dòng)矢量的計(jì)算和圖像重建過程。而對(duì)于P幀,采用幀間預(yù)測來消除視頻序列的時(shí)間冗余,需要在對(duì)應(yīng)參考幀的位置執(zhí)行運(yùn)動(dòng)矢量搜索算法,根據(jù)最優(yōu)函數(shù)得到最優(yōu)運(yùn)動(dòng)矢量,耗費(fèi)大量時(shí)間。 因此對(duì)一幀I幀的編解碼速度要快于編解碼一幀P幀;而對(duì)于B幀而言,要進(jìn)行雙向運(yùn)動(dòng)矢量計(jì)算,參考圖像的列表較長,需要進(jìn)行較多的運(yùn)動(dòng)矢量估計(jì)和計(jì)算,要耗費(fèi)更長時(shí)間。 幀內(nèi)預(yù)測模式比較固定,計(jì)算量小。P幀和B幀的編碼和運(yùn)動(dòng)矢量計(jì)算耗費(fèi)大量編解碼時(shí)間。 改進(jìn)H&G算法應(yīng)用于H.264后,不需要解碼P幀和B幀,理論上的嵌入速度會(huì)加快很多。對(duì)于測試視頻我們均選用符合廣電標(biāo)準(zhǔn)的視頻結(jié)構(gòu),即GOP=50,每個(gè)GOP只解碼I幀不解碼P、B幀,節(jié)省98%的時(shí)間。嵌入過程處理800幀視頻,實(shí)際時(shí)間如表2所示: 表2 對(duì)不同分辨率視頻處理過程的耗時(shí) 通過表2可以看出,改進(jìn)H&G算法后速度比全解全編快3-4倍。遠(yuǎn)沒有達(dá)到理論值所分析的10倍,甚至20倍。主要原因在于嵌入過程中需要保存I幀大量的數(shù)據(jù),涉及大量的內(nèi)存操作。對(duì)于速度上的延遲,主要是因?yàn)楣こ绦缘脑驘o法達(dá)到理論上的速度。 再者水印的嵌入模塊也在一定的程度上對(duì)嵌入過程造成影響,嵌入模塊需要根據(jù)宏塊的二維坐標(biāo),找到對(duì)應(yīng)宏塊,然后做DCT變換,嵌入水印,之后做IDCT變換,還原代替原來的像素值。 圖3 兩種選擇方案的PSNR對(duì)比 圖3中算法一使用本文提出的選擇算法,選擇合適位置嵌入水?。粌H為比較實(shí)驗(yàn)效果,在算法二中選擇一半對(duì)后續(xù)影響小的塊,一半對(duì)后續(xù)影響大的塊,比較兩者的區(qū)別。從數(shù)據(jù)上看,本文所提方法在嵌入強(qiáng)度增大時(shí)PSNR值較大,對(duì)圖像質(zhì)量影響較小,效果較好。 如圖3所示結(jié)果,PSNR值雖然不能完全代替嵌入效果,但可以從具體數(shù)據(jù)及其走勢中看到,嵌入強(qiáng)度帶來的閥值變化。 當(dāng)水印的嵌入量較小,嵌入強(qiáng)度較小的時(shí)候,兩者的區(qū)別很小。這是因?yàn)樗∏度肓勘容^小,并沒有對(duì)視頻圖像造成實(shí)質(zhì)影響;當(dāng)逐漸加大水印嵌入量時(shí),改變宏塊的值就會(huì)影響到視頻的質(zhì)量,兩種方法的區(qū)別開始出現(xiàn)。 在嵌入大量水印信息時(shí),本文所提方法可以有效的規(guī)避對(duì)后續(xù)宏塊影響較大的宏塊,對(duì)嵌入位置做出合理的選擇,減小對(duì)圖像造成的影響。 本文通過對(duì)非參考幀運(yùn)動(dòng)矢量的分析,在參考幀I幀中尋找合理的嵌入位置,來減少因在參考幀中嵌入水印對(duì)非參考幀造成的影響,仿真實(shí)驗(yàn)證明了在大多數(shù)情況下可以達(dá)到很好的效果。 但通過對(duì)運(yùn)動(dòng)矢量的統(tǒng)計(jì)也可以發(fā)現(xiàn),并不是所有的視頻幀都適用于本文的方法。因?yàn)榇嬖谝恍┓菂⒖紟\(yùn)動(dòng)矢量指向參考幀宏塊分布比較均勻的情況,在這種情況下,使用本文選擇方法并不能達(dá)到理想效果,同時(shí)加大了計(jì)算量。 再者,在視頻中嵌入水印信息,必定會(huì)對(duì)視頻信息造成影響;本文的研究只是努力降低這種影響,并不能從根本上消除這種影響。 [1]Cox I,Miller M,Bloom J.Digital Watermarking [M].Los Altos,CA:Morgan Kaufmann Publishers,2001. [2]M Cheikhrouhou,P Conti,et al.Intelligent Agents for Network Management :Fault Detection Experiment [D] .Corporate Communication Department,Institute Eurecom,2001. [3]Zou Xiaoxiang,Peng Cong,Li Jintao,et al.Video watermark technique[J].Journal of Engneering Graphics,2002,3(3):169-179. [4]Hartung F,Girod B.Watermarking of uncompressed and compressed video [J].Signal Processing,Special Issue on Copyright Protection and Access Control for Multimedia Services,1998,66(3):283-301. [5]Lancini R,Mapelli F,Tubato S.A robust video watermarking technique in the special domain[C].Processing of International Symposium on Video/Image Processing and Multimedia Communications,Zadar,2002:251-256. [6]曹華,周敬利.圖像和視頻水印嵌入新方法研究[D].武漢:華中科技大學(xué),2006. [7]胡陸建,王讓定.基于H.264/AVC的視頻水印算法設(shè)計(jì)[D].寧波:寧波大學(xué),2012. [8]劉立冬,劉濟(jì)全,田翔.基于H.264壓縮的視頻水印算法研究[D].杭州:浙江大學(xué),2013.3 改進(jìn)效果分析
4 總結(jié)