李聰穎 王懷
摘要:隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,視頻的獲取變得越來(lái)越容易,視頻的不正當(dāng)使用也越來(lái)越廣泛,視頻水印技術(shù)顯得尤為重要。針對(duì)當(dāng)前視頻水印抗重壓縮能力的不足,本文提出了一種基于運(yùn)動(dòng)目標(biāo)檢測(cè)的抗重壓縮視頻水印算法。本算法通過(guò)對(duì)運(yùn)動(dòng)目標(biāo)的檢測(cè),篩選出運(yùn)動(dòng)塊,使水印嵌入載體具有良好的抗重壓縮性能。通過(guò)保持格式兼容的碼字替換算法嵌入水印,可以保證碼流的一致性。且整個(gè)算法都是在壓縮域中進(jìn)行操作的,只需要部分解碼視頻就能完成水印的嵌入,提高了工作效率,便于實(shí)時(shí)視頻應(yīng)用。
關(guān)鍵詞:視頻水印;H.264;重壓縮;運(yùn)動(dòng)目標(biāo)檢測(cè)
中圖分類號(hào):TP309.7 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2018)12-0116-02
1 算法概述
隨著多媒體技術(shù)和網(wǎng)絡(luò)技術(shù)的發(fā)展,視頻越來(lái)越容易被偽造和更改,在很多安全領(lǐng)域,不正當(dāng)使用視頻可能會(huì)造成嚴(yán)重影響。因此,如何正確的認(rèn)證視頻和有效的保護(hù)視頻版權(quán)成為了研究的熱點(diǎn),因此視頻水印技術(shù)的應(yīng)用也得到了廣泛的關(guān)注[11]。
由于視頻的數(shù)據(jù)量比較大,而為了方便傳輸與存儲(chǔ),需要對(duì)視頻進(jìn)行壓縮編碼處理。常見(jiàn)的視頻編碼方式有MPEG-2,MPEG-4和H.264/AVC等。其中,H.264/AVC的壓縮率和編碼效率比前兩種的要有所提高,所以應(yīng)用較為廣泛[1]。因此,基于H.264/AVC的壓縮域視頻水印算法也是研究較多的一個(gè)熱點(diǎn)[16],而本文中介紹的方法也是基于H.264/AVC編碼技術(shù)的。
在H.264/AVC規(guī)則下的視頻水印算法一般分為三大類,第一類就是在DCT系數(shù)中嵌入水印,如文獻(xiàn)[4]中,通過(guò)結(jié)合H.264/AVC的幀內(nèi)預(yù)測(cè)模式,在DCT系數(shù)中嵌入水印,這樣一來(lái),嵌入水印之后的作為預(yù)測(cè)塊的像素是不變的,因此算法具有良好的性能。文獻(xiàn)[5]中通過(guò)不同宏塊之間DCT系數(shù)殘差值和預(yù)測(cè)值之和的能量保持關(guān)系來(lái)取得特征,再通過(guò)修改DCT系數(shù)符號(hào)特征來(lái)實(shí)現(xiàn)水印的嵌入,實(shí)驗(yàn)表明此方案可以抵抗多種攻擊。文獻(xiàn)[10]中,提出一種基于I幀色度量化殘差系數(shù)的視頻水印算法,根據(jù)4*4子塊中的非零量化DCT殘差系數(shù)選擇合適的子塊,水印嵌入位置則是色度子塊,水印嵌入的方法是結(jié)合Arnold置亂后的水印,通過(guò)調(diào)制其中一個(gè)非零量化DCT殘差系數(shù)來(lái)改變相鄰位置系數(shù)的大小關(guān)系來(lái)進(jìn)行嵌入水印操作,具有穩(wěn)定的抗重壓縮能力。第二類是在運(yùn)動(dòng)矢量中嵌入水印,如文獻(xiàn)[6]中,在P幀和B幀中的運(yùn)動(dòng)矢量殘差(Motion Vector Difference, MVD)的最低有效位上,結(jié)合運(yùn)動(dòng)補(bǔ)償技術(shù),進(jìn)行水印嵌入。第三類是在熵編碼后的碼字中嵌入水印,如文獻(xiàn)[7]中,通過(guò)在宏塊模式為Intra_16*16的宏塊中進(jìn)行水印嵌入,嵌入的方式是替換其熵編碼之后碼字中的亮度信息部分碼字。文獻(xiàn)[8]在此基礎(chǔ)上,將嵌入的位置擴(kuò)展到所有滿足條件的宏塊中,嵌入方式則是替換指數(shù)哥倫布編碼的語(yǔ)法碼字中。
本文通過(guò)對(duì)H.264/AVC編碼規(guī)則的研究發(fā)現(xiàn),對(duì)于運(yùn)動(dòng)塊來(lái)說(shuō),壓縮方式是幀間壓縮,而幀間壓縮一般是無(wú)損壓縮,即壓縮前后的數(shù)據(jù)一致,因此在運(yùn)動(dòng)塊內(nèi)嵌入水印會(huì)具有良好的抗重壓縮能力[2]。針對(duì)視頻水印的抗重壓縮能力不足問(wèn)題,提出了一種基于運(yùn)動(dòng)目標(biāo)檢測(cè)的抗重壓縮視頻水印算法[9],該算法在嵌入水印之前,先利用運(yùn)動(dòng)目標(biāo)檢測(cè)來(lái)篩選出屬于運(yùn)動(dòng)目標(biāo)的運(yùn)動(dòng)塊,然后在運(yùn)動(dòng)塊內(nèi)進(jìn)行碼字替換算法嵌入水印。
2 基于運(yùn)動(dòng)目標(biāo)檢測(cè)的抗重壓縮視頻水印算法
在這一部分中,介紹了一種基于運(yùn)動(dòng)目標(biāo)檢測(cè)的抗重壓縮水印算法,總體包含兩個(gè)部分:運(yùn)動(dòng)塊的確定和水印的嵌入與提取。首先經(jīng)過(guò)運(yùn)動(dòng)目標(biāo)檢測(cè),找到對(duì)應(yīng)的運(yùn)動(dòng)塊,然后在運(yùn)動(dòng)塊中進(jìn)行水印的嵌入和提取。
2.1 運(yùn)動(dòng)塊的確定
在壓縮域中,對(duì)視頻的264文件進(jìn)行運(yùn)動(dòng)目標(biāo)檢測(cè),運(yùn)動(dòng)目標(biāo)檢測(cè)的目的是將一幀圖像中的運(yùn)動(dòng)目標(biāo)篩選出來(lái),從而得到運(yùn)動(dòng)塊。在壓縮域中,編碼對(duì)象是一個(gè)個(gè)的宏塊,每一個(gè)宏塊又可以分為若干子宏塊,每一個(gè)子宏塊都有自己的運(yùn)動(dòng)矢量(Motion Vector,MV)[12],而運(yùn)動(dòng)目標(biāo)的檢測(cè)則是通過(guò)對(duì)每一個(gè)宏塊的所有MV進(jìn)行一定的操作得到一個(gè)數(shù)值,這個(gè)數(shù)值與實(shí)驗(yàn)確定的閾值T相比較來(lái)判斷該宏塊是否屬于運(yùn)動(dòng)塊。具體操作步驟如下:
(1)設(shè)當(dāng)前宏塊的大小為W*H,W和H分別為宏塊的寬和高,這個(gè)由編碼規(guī)則確定,H.264/AVC中為16*16[13];
(2)當(dāng)前宏塊可分為若干子宏塊,每一個(gè)子宏塊都可以得到一個(gè)MV。設(shè)當(dāng)前宏塊分為N個(gè)子宏塊,則有N個(gè)MV。H.264/AVC中子宏塊最小尺寸為4*4。
(3)對(duì)得到的n個(gè)MV的范數(shù)進(jìn)行求和,并除以宏塊的區(qū)域,且MV是二維數(shù)組則再除以2。計(jì)算得到的值為MVValue,公式如下:
(4)用得到的MVValue與實(shí)驗(yàn)得到的閾值T比較,大于T則表示當(dāng)前塊屬于運(yùn)動(dòng)塊,否則是非運(yùn)動(dòng)塊。
(5)對(duì)下一個(gè)宏塊進(jìn)行步驟(1)-(4)直至編碼完成。
2.2 水印嵌入
水印嵌入的環(huán)節(jié)也是在壓縮域中完成,具體則是在熵編碼之后的碼字中進(jìn)行水印的嵌入。根據(jù)H.264/AVC編碼的規(guī)則,編碼器會(huì)把一幀圖像中的一個(gè)宏塊的待編碼的殘差數(shù)據(jù)進(jìn)行熵編碼形成碼流,再結(jié)合一些視頻解碼必要的信息,如預(yù)測(cè)模式,量化步長(zhǎng)等,形成該宏塊的264碼流[3]。遍歷一幀圖像中的所有宏塊,得到一幀圖像對(duì)應(yīng)的264碼流。再遍歷視頻中的所有幀,相結(jié)合以得到完整的視頻264碼流。
水印的嵌入步驟如下:
步驟1:對(duì)視頻進(jìn)行部分解碼,找到Level部分碼字。
在H.264/AVC的basline profile中,熵編碼選擇為CAVLC編碼。CAVLC編碼后得到的碼流具有如下的結(jié)構(gòu):
即經(jīng)過(guò)CAVLC編碼后的碼流由以上五個(gè)部分組成[14]。
嵌入水印的位置選取的是視頻的P幀每個(gè)宏塊熵編碼之后的碼流中的Level部分。對(duì)Level部分進(jìn)行碼字替換的操作可以保持碼流的語(yǔ)法一致性,且對(duì)視頻質(zhì)量的影響不大,能夠攜帶的水印數(shù)量也合適,更適合進(jìn)行水印嵌入。
步驟2:判斷嵌入條件是否滿足,找到滿足嵌入條件的碼字。
Level部分的碼字由Level_pre和Level_suffix組成,而suffixlength用來(lái)表示Level_suffix的長(zhǎng)度。
水印嵌入之前需要判斷是否滿足條件,條件為:當(dāng)前宏塊為運(yùn)動(dòng)塊且suffixlength等于2或者3。選取suffixlength等于2或者3的原因是:當(dāng)suffixlength為0時(shí),沒(méi)有相同長(zhǎng)度的碼字可以進(jìn)行替換操作,而suffixlength等于1時(shí),雖然有相同長(zhǎng)度的碼字可以進(jìn)行替換,但是相當(dāng)于對(duì)level數(shù)值上進(jìn)行了取反的操作,對(duì)視頻畫(huà)面質(zhì)量的影響較大,而當(dāng)suffixlength等于2或者3時(shí),既可以有相同長(zhǎng)度的碼字進(jìn)行替換,不改變碼流的長(zhǎng)度,保持碼流語(yǔ)法的一致性,又對(duì)level數(shù)值上僅是+1或-1的影響,對(duì)視頻畫(huà)面質(zhì)量影響不大[15]。
步驟3:根據(jù)當(dāng)前需要嵌入的水印值,查替換碼表進(jìn)行碼字替換操作。
圖1給出了碼字替換碼表,C0部分表示該部分碼字對(duì)應(yīng)水印值為0,C1部分表示該部分碼字對(duì)應(yīng)水印值為1。
碼字替換具體操作為:如果當(dāng)前要嵌入的水印值為0,且當(dāng)前待嵌入水印的Level碼字屬于C1部分,如碼字為0110,則根據(jù)進(jìn)行相對(duì)應(yīng)的替換,替換成C0類中的0100。如果要嵌入的水印值為1,且當(dāng)前待嵌入水印的Level碼字屬于C1部分,則碼字保持不變。
步驟4:重復(fù)步驟1-3直至水印嵌入完成。
2.3 水印提取
水印提取的步驟如下:
步驟1:對(duì)視頻進(jìn)行部分解碼,找到Level部分碼字。
步驟2:判斷是否滿足水印嵌入條件。
步驟3:對(duì)照表1中的碼字替換碼表,進(jìn)行水印提取操作。
水印提取具體操作為:如果檢測(cè)到當(dāng)前Level部分碼字屬于C0部分,則此部分嵌入的水印值為0,即提取到的水印為0,若屬于C1部分,則嵌入的水印值為1,即提取到的水印為1。
步驟4:重復(fù)步驟1-3直至水印提取完成。
3 結(jié)語(yǔ)
本文提出了一種基于運(yùn)動(dòng)目標(biāo)檢測(cè)的抗重壓縮視頻水印算法,通過(guò)運(yùn)動(dòng)目標(biāo)檢測(cè)來(lái)篩選出運(yùn)動(dòng)塊,而運(yùn)動(dòng)塊具有較好的抗重壓縮性能。水印的嵌入方法選擇為通過(guò)對(duì)熵編碼之后的碼字進(jìn)行碼字替換算法來(lái)嵌入水印,可以保持碼流的一致性和格式兼容性,算法是在壓縮域中進(jìn)行,提高了水印嵌入和提取的效率,適合于實(shí)時(shí)監(jiān)控視頻的應(yīng)用。
參考文獻(xiàn)
[1]Lu W, Varna A, Wu M. Secure video processing: Problems and challenges[C]// IEEE International Conference on Acoustics, Speech and Signal Processing.IEEE,2011:5856-5859.
[2]Bitar A W,Darazi R, Couchot J F, et al. Blind digital watermarking in PDF documents using Spread Transform Dither Modulation[J]. Multimedia Tools & Applications,2017:1-19.
[3]Alam M J, Alam M J, Lambert A J, et al. Robust DT CWT-Based DIBR 3D Video Watermarking Using Chrominance Embedding[J].IEEE Transactions on Multimedia,2016,18(9):1733-1748.
[4]Chen W, Shahid Z, Autrusseau F, et al. Robust drift-free bit-rate preserving H.264 watermarking[J].Multimedia Systems,2014,20(2):179-193.
[5]Xu D, Wang R, Wang J. A novel watermarking scheme for H.264/AVC video authentication[J]. Signal Processing Image Communication,2011,26(6):267-279.
[6]Li Q, Wang R D, Xu D W. Fragile video watermarking algorithm based on H.264/AVC[J]. Materials Research Innovations,2013,17(sup1):94-100.
[7]Zou D, Bloom J A. H.264/AVC stream replacement technique for video watermarking[C]// IEEE International Conference on Acoustics, Speech and Signal Processing. IEEE,2008:1749-1752.
[8]Xu D, Wang R, Shi Y Q. Data Hiding in Encrypted H.264/AVC Video Streams by Codeword Substitution[J]. IEEE Transactions on Information Forensics & Security,2014,9(4):596-606.
[9]Praeter J D, Vyver J V D, Kets N V, et al. Moving object detection in the HEVC compressed domain for ultra-high-resolution interactive video[C]// IEEE International Conference on Consumer Electronics. IEEE,2017:135-136.
[10]李淑芝,張翔,鄧小鴻,等.一種抗重壓縮的H.264/AVC視頻水印算法[J].計(jì)算機(jī)應(yīng)用研究,2016,33(2):521-525.
[11]Zarmehi N, Akhaee M A. Digital video steganalysis toward spread spectrum data hiding[J].Iet Image Processing,2016,10(1):1-8.
[12]付劍晶,陳德人.用于視頻內(nèi)容認(rèn)證的抗二次壓縮水印算法[J].計(jì)算機(jī)學(xué)報(bào),2018(3):558-573.
[13]史國(guó)川,李江衛(wèi).基于秘密共享與盜版追蹤的視頻水印算法[J].計(jì)算機(jī)仿真,2014,31(12):256-260.
[14]Zarmehi N, Barikbin M J. Robust Video Watermarking against H.264 and H.265 Compression Attacks[J].Frontiers in Signal Processing,2017.
[15]Li X, Wang X, Yang W, et al. A robust video watermarking scheme to scalable recompression and transcoding[C]// International Conference on Electronics Information and Emergency Communication. IEEE,2016:257-260.
[16]Jiang G Y, Wen-Feng L I, Mei Y U, et al. Robust video watermarking in H.264/AVC compressed domain[J].Optics & Precision Engineering,2015,23(1):260-270.
An Anti-recompression Video Watermarking Algorithm
LI Cong-ying,WANG Huai
(Hubei Key Laboratory of Intelligent Wireless Communication, College of Electronic Information Engineering, South-Central University for Nationalities, Wuhan? Hubei 430074)
Abstract:With the development of the Internet, the acquisition of video has become more and more easy, and improper use of video becomes more and more extensive. So the video watermarking technology is particularly important. Aiming at the shortcomings of video watermarking anti-recompression capability, this paper proposes that an anti-recompression video watermarking algorithm based on moving target detection. In the algorithm, the moving macroblocks are chosen as carriers to improve better performance in anting recompression, and substituting the coded codeword with format compliance ensure the consistency of the bitstream. The whole algorithm is carry out in compressed domain that we only need to decode partly the bitstream for embedding watermarking so as to improve the efficiency and convenient to apply to real time applications.
Key words:video watermarking;H.264;recompression;moving target detection