鈕可 張碩 楊曉元
摘 要:針對壓縮域視頻隱藏算法嵌入容量低、不可見性差的問題,提出了一種H.264/AVC加密域的可逆隱寫方案。 首先由嵌入容量和載體大小決定參考幀間隔參數(shù),并根據(jù)需要決定是否對載體進行加密;然后,根據(jù)待嵌視頻幀數(shù)生成嵌入密鑰;最后通過壓縮視頻中矢量直方圖遷移,實現(xiàn)運動矢量上的可逆信息嵌入。所提方案通過指定解碼參考幀,克服了由于運動矢量修改而造成的失真累加效應(yīng)。所提方案兼容基于運動矢量的視頻加密算法, 視頻的解密和信息提取分別依賴解密密鑰和嵌入密鑰,兩者之間相互分離,在視頻密文域或者解密后的明文域中均能提取信息并無損恢復(fù)視頻載體。信息的安全性依賴于嵌入密鑰,密鑰長度可以根據(jù)需要控制,最大長度等于可嵌入信息的幀數(shù)。實驗表明該方案計算復(fù)雜度低,安全度高,并可以根據(jù)嵌入負(fù)載調(diào)整容量和不可見性,與BCH碼可逆嵌入方案相比PSNR值提高3~5dB,平均嵌入容量增加5~10倍。
關(guān)鍵詞:可逆視頻隱藏;加密域視頻; H.264/AVC編碼; 矢量直方圖遷移; 參考幀修改
中圖分類號: TP391.41
文獻標(biāo)志碼:A
文章編號:1001-9081(2019)03-0756-07
Abstract: Aiming at the problem of low embedding capacity and poor invisibility in compressed domain video hiding algorithm, a reversible steganography scheme for H.264/AVC encryption domain was proposed. Firstly, the reference frame interval parameter was determined by the embedded capacity and the carrier size, and whether the cover was encrypted was determined by the need. Then, an embedded key was generated according to the number of video frames to be embedded. Finally, the reversible information embedding on motion vector was realized by the vector histogram shifting in the compressed video. The proposed scheme overcame the distortion accumulation effect due to motion vector modification by specifying a decoding reference frame and is compatible with motion vector-based video encryption algorithms. Video decryption and information extraction depend on the decryption key and the embedded key respectively, which are separated from each other. The information can be extracted in the video ciphertext domain or the decrypted plaintext domain and has no influence on video cover recovery. As security of the information depends on the embedded key, the length of the key can be controlled as needed with the maximum length equal to the number of frames in which the information can be embedded. Experimental results show that the proposed scheme has low computational complexity and high security, and can adjust capacity and invisibility according to embedded load. Compared with BCH code reversible embedding scheme, the PSNR (Peak Signal-to-Noise Ratio) value increases by 3 to 5dB and the average embedded capacity increases by 5 to 10 times.
Key words: reversible video hiding; encryption domain video; H.264/AVC coding; vector histogram shifting; reference frame modification
0 引言
近年來數(shù)字產(chǎn)品的版權(quán)保護和內(nèi)容認(rèn)證已經(jīng)越來越得到重視,信息隱藏技術(shù)通過嵌入在載體中的特殊信息提供了一種區(qū)別于傳統(tǒng)密碼技術(shù)的數(shù)字媒體保護手段。信息的嵌入雖然對視覺質(zhì)量影響不大,但在大多數(shù)情況下都會使得載體損失一部分?jǐn)?shù)據(jù),信息提取后載體無法完全恢復(fù)。在某些特殊應(yīng)用中如醫(yī)學(xué)、軍事、司法等領(lǐng)域,數(shù)字載體的輕微失真都有可能引起誤判,因此載體數(shù)據(jù)任何不可逆的損失都是不允許的[1]。 可逆數(shù)據(jù)隱藏(Reversible Data Hiding, RDH)技術(shù)能夠在嵌入的信息被提取之后完全恢復(fù)載體的原始數(shù)據(jù)而不造成任何數(shù)據(jù)的損失[2],是信息隱藏領(lǐng)域一個活躍的研究方向。自從第一個可逆隱藏算法1997年被提出用于圖像認(rèn)證以后[3],各種可逆隱藏技術(shù)得到了廣泛應(yīng)用,從圖像認(rèn)證[3-4]、醫(yī)學(xué)圖像處理[5]、計算機輔助設(shè)計中矢量圖恢復(fù)[6]到云中數(shù)據(jù)著色[7]等。大量的可逆隱藏方案[8]被提出,在這些方案中基于差值擴展(Difference Expansion, DE)[9]和直方圖遷移(Histogram Shifting, HS)[10]的可逆隱藏原理成為最有代表性的兩種,推動了可逆隱寫技術(shù)的向前發(fā)展,現(xiàn)有很多可逆方案都是這兩者的基礎(chǔ)上設(shè)計的[8]。目前大多數(shù)可逆隱藏算法都是以數(shù)字圖像為載體,在圖像的空間域或者壓縮域通過可逆隱藏技術(shù)嵌入信息。但是隨著網(wǎng)絡(luò)和計算機技術(shù)的不斷發(fā)展,數(shù)字視頻無論是在離線還是在線環(huán)境中都已成為一種常用的媒體數(shù)據(jù) [11],設(shè)計以數(shù)字視頻為載體的可逆隱藏方案具有重要的價值。
H.264(H.264/AVC)視頻編碼標(biāo)準(zhǔn)具有較高的壓縮效率適合于視頻數(shù)據(jù)網(wǎng)絡(luò)傳輸?shù)忍攸c,目前已經(jīng)被廣泛使用,因此以H.264視頻為載體的可逆隱藏方案引起了研究者的廣泛關(guān)注[11-13]。文獻[11]中利用 HS技術(shù),將數(shù)據(jù)用BCH(Bose-Chaudhuri-Hocquenghem)碼編碼,然后嵌入到I幀4×4數(shù)據(jù)塊的離散余弦變換(Discrete Cosine Transform, DCT)系數(shù)中,該算法更加關(guān)注于魯棒性方面的性能。文獻[12]中為了提高隱藏容量,在滿足條件的4×4亮度塊中隨機選擇2個DCT系數(shù),然后通過二維的直方圖修改來嵌入信息,在不可見性一定的情況下獲得了較大的隱藏容量。文獻[13]提出了在運動補償后通過幀間數(shù)據(jù)插值誤差擴展來嵌入信息,這種方式在獲得高隱藏容量的同時視頻失真很小。但上述這些可逆隱藏算法都是在視頻壓縮域的DCT系數(shù)中嵌入的,沒有利用到運動矢量。由于H.264壓縮標(biāo)準(zhǔn)支持更靈活和更小的分塊(從16×16到4×4),與以往的視頻壓縮標(biāo)準(zhǔn)相比具有更多的運動矢量;同時H.264壓縮標(biāo)準(zhǔn)中亮度分量和色度分量分別采用1/4和1/8精度的運動估計,使得匹配更加精確,但運動矢量修改引起的失真會不斷擴散到后繼幀,對視頻質(zhì)量影響很大。因此在H.264視頻中,運動矢量是一個理想的可逆隱藏調(diào)制點,但同時保持在大隱藏容量下的高視覺質(zhì)量也是一個難點。本文利用直方圖遷移技術(shù),提出了一種在運動矢量加密域上嵌入信息的可逆隱藏算法。算法具有較高的容量和不可見性,并兼容于現(xiàn)有的視頻加密方案。
1 理論框架
1.1 運動補償和運動矢量
運動矢量表征了視頻序列中前后兩幀的相對運動位置,是視頻壓縮編碼中的重要組成部分。H.264與早期的壓縮標(biāo)準(zhǔn)相比支持不同塊尺寸及更精細(xì)子像素的運動矢量(亮度分量為1/4像素精度)。壓縮中每個宏塊可以被劃分成四種模式,分別為16×16、16×8、8×16和8×8,如果宏塊劃分為8×8模式,每個8×8亞宏塊又可以劃分成四種模式,分別為8×8、8×4、4×8和4×4[14],每個塊單獨進行運動估計,包含一個運動矢量。
表1分別為取150幀Quarter Common Intermediate Format (QCIF,176×144)格式的YUV視頻序列對其中的亮度分量采用MPEG2和基本檔次的H.264壓縮編碼后運動矢量的數(shù)量統(tǒng)計。表中mvx,mvy表示運動矢量的水平分量和垂直分量,編碼過程中均采用第一幀為I幀,其余幀均為P幀的模式,其中I幀為幀內(nèi)編碼幀,P幀為前向預(yù)測幀。從中可以看出,H.264編碼方案包含更多的運動矢量,并且運動矢量的數(shù)量是隨著視頻內(nèi)容不同而變化的,視頻紋理越豐富,則分塊越多,所對應(yīng)的運動矢量也越多。如果將運動矢量作為調(diào)制點來嵌入信息則紋理復(fù)雜,細(xì)節(jié)豐富,運動速度快的H.264壓縮視頻能夠獲得更高的隱藏容量。
1.2 運動矢量直方圖遷移
根據(jù)1.1節(jié)分析H.264壓縮碼流中具有更多的運動矢量,因此與以往標(biāo)準(zhǔn)相比更加適合將運動矢量作為可逆隱藏的嵌入位置。Ni等[10]提出了一種直方圖遷移(HS)的可逆隱藏方案并獲得了廣泛的應(yīng)用?;贖S技術(shù)的大量可逆隱藏方案被提出,從空間域擴展到變換域,從圖像載體擴展到視頻載體,算法的性能和速度也不斷得以提升 [11-13,15-17]。由于修改運動矢量不僅會影響當(dāng)前數(shù)據(jù)塊解碼,其引起的錯誤還會不斷擴散到后繼的解碼過程中最終使得視頻失真嚴(yán)重,因此上述算法都是基于視頻內(nèi)容直方圖遷移實現(xiàn)信息嵌入,沒有利用到運動矢量直方圖。對于絕大多數(shù)視頻而言,0矢量占據(jù)了大部分,一般都是矢量直方圖的峰值。隨著運動矢量幅值的增加,其數(shù)量呈減小趨勢。圖1(a)和圖1(b)分別為foreman視頻片段經(jīng)過MPEG2和H.264編碼后的矢量直方圖。由于H.264支持亮度分量1/4像素精度的運動矢量,因此比MPEG2矢量直方圖平緩,但總的來說大部分運動矢量幅值(H.264為矢量幅值的4倍)都集中在0和±1上。如將視頻的運動矢量直方圖按照文獻[10]的算法尋找峰值和零值點后進行搬移,修改的運動矢量值過多會引起視頻的極大失真。對圖1(a)和(b)進行比較,H.264中直方圖分布相對平緩,±1占據(jù)較大比重。綜合考慮隱藏容量和不可見性,將4倍矢量值為±1的點作為運動矢量嵌入位置。
為進一步加大隱藏容量可以再選擇多層矢量直方圖遷移來嵌入信息[17],參照文獻[10]的算法進行直方圖搬移并嵌入信息,以水平分量為例,如式(1)所示。式中mvx和mvx′分別為修改前后的水平分量, b為待嵌入的二進制比特信息,b∈{0,1}。
圖1(c)為foreman視頻片段搬移后的直方圖,嵌入容量主要取決于±1點運動矢量的數(shù)量。視頻紋理越復(fù)雜,運動速度越快,則±1點運動矢量的數(shù)量相對比較多,嵌入容量越大。
1.3 參考幀變換
通過搬移矢量直方圖±1位置的方法,能夠避免運動矢量中比重最大的0矢量改變,有效減小內(nèi)容失真,但H.264壓縮方案中,當(dāng)前幀解碼后將成為后續(xù)幀的解碼參考,這種情況下會造成錯誤的不斷累積,在使用第一幀為I幀其余均為P幀的編碼模式下隨著幀數(shù)的增多視頻的質(zhì)量會急劇下降,如圖2(a)和圖2(b)分別為foreman和news兩段視頻PSNR值下降情況。H.264中已編碼圖像存儲在編解碼器的解碼幀緩沖區(qū)中(Decode Frame Buffer, DPB),并有相應(yīng)的參考圖像列表供間宏塊運動補償預(yù)測使用[18]。與以往的標(biāo)準(zhǔn)中使用單一參考幀不同,它采用了多參考幀預(yù)測技術(shù),允許從多達15幀里面選擇1幀或者2幀作為參考進行預(yù)測。為防止由于運動矢量修改而導(dǎo)致的錯誤累加,本文方案利用參考幀的可選擇特性,不在某些特定幀中嵌入信息,即保持運動矢量值不變。將這些特定幀作為后續(xù)若干幀編解碼的參考幀,這樣就截斷了錯誤的積累。通過指定特定參考幀使得誤差只限制在嵌入信息的幀內(nèi),有效控制了視頻的質(zhì)量。圖3為參考幀改變前后示意圖,圖3(a)為正常情況下的編碼,圖3(b)為每4幀共用1參考幀編解碼。
圖4展示每隔4幀選擇一特定參考幀,在其余幀的水平和垂直分量中分別嵌入信息,對其解碼后視頻的峰值信噪比(Peak Signal-to-Noise Ratio, PSNR)與原視頻的PSNR值。從圖中可以看出,采用誤差累積控制方法后視頻的PSNR值比直接修改運動矢量有大幅度的提高。由于運動速度快、紋理復(fù)雜的視頻具有更多的±1矢量,嵌入信息后運動矢量改變較多,視頻質(zhì)量下降速度快,因此相比于運動速度慢紋理簡單的視頻平均PSNR值低,這與圖4相吻合。即圖4(a) 的foreman視頻平均PSNR要高于圖4(b) 的news視頻。
2 加密域可逆隱藏方案
2.1 方案框架
本文提出的視頻隱藏方案在變換參考幀的H.264視頻碼流中嵌入信息,嵌入信息后的視頻能夠正常解密和播放??梢愿鶕?jù)嵌入密鑰在明文域或密文域中提取信息并且無損恢復(fù)視頻,方案框架如圖5所示。變換參考幀的H.264碼流可以通過原始視頻編碼得到,也可以將已有的H.264視頻解碼后采用無損H.264編碼方法[19]得到。
2.2 視頻加密
視頻數(shù)據(jù)的加密需要考慮到算法效率和壓縮標(biāo)準(zhǔn)的兼容性,加密后的視頻有解密密鑰時能夠正常解碼播放[20]。視頻加密無法像傳統(tǒng)的方案那樣對全部數(shù)據(jù)進行加密,通常情況下選擇部分?jǐn)?shù)據(jù)加密,以兼顧安全性和計算效率。
對H.264視頻的加密有三種方式,既壓縮前加密、壓縮過程中加密和壓縮后的碼流加密。其中最常見的是壓縮過程中的加密,其方法又主要分為幾類:幀內(nèi)預(yù)測模式加密、幀間預(yù)測模式加密、運動矢量及差值的加密、對數(shù)據(jù)塊采用非標(biāo)準(zhǔn)的變換方式替代標(biāo)準(zhǔn)的DCT對數(shù)據(jù)加密、DCT系數(shù)加密、改變熵編碼時的掃描順序加密、對基于上下文的可變長編碼(Context-Adaptive Variable-Length Coding, CAVLC)和基于上下文的二進制算術(shù)編碼(Context-based Adaptive Binary Arithmetic Coding, CABAC)中部分碼字的加密[21]。
本文所提方案是通過修改運動矢量直方圖進行信息嵌入的,因此采用加密H.264視頻中運動矢量的方法來驗證加密對算法的影響。編碼標(biāo)準(zhǔn)中是將運動矢量差值進行指數(shù)哥倫布編碼(Exp-Golomb),該碼元結(jié)構(gòu)為[M zeros prefix] [1] [Offset],其中M是分組的編號,1是分隔符,Offset是組內(nèi)的偏移量。表2為運動矢量差(Motion Vector Difference, MVD)所對應(yīng)的Exp-Golomb碼字,從表2中可以看出,符號相反的矢量差其編碼后碼字長度一致。為不增加視頻壓縮后的碼率以及滿足格式兼容需求,采用改變運動矢量符號來實現(xiàn)加密[22],如式(2)所示其中mvd是運動矢量差,Key_enc為加密密鑰。
2.3 信息嵌入
步驟1 算法是在確定參考幀的H.264壓縮視頻中嵌入信息,因此要對視頻進行預(yù)處理。預(yù)處理有兩種方式:1)對原始YUV視頻根據(jù)要求的視頻質(zhì)量進行H.264編碼。2)對獲取的H.264碼流進行解碼后進行無損H.264編碼。編碼過程中估算嵌入容量C將其與待嵌入的比特數(shù)B相互比較,確定參考幀間隔K的大小。如果mod(i,k)=0則fi為參考幀, fi+1到fi+k幀參考fi幀進行編碼。根據(jù)需要確定是否將視頻采用2.2節(jié)中方法進行加密。
步驟4 對嵌入信息的矢量編碼,形成含密的H.264碼流。
2.4 信息提取和視頻恢復(fù)
3 實驗結(jié)果及分析
實驗采用文獻[23-24]中的Matlab H.264編解碼器進行仿真。載體視頻可以是H.264視頻解碼再經(jīng)無損壓縮后得到,也可以是YUV視頻序列按要求編碼后得到。由于經(jīng)無損H.264壓縮后視頻碼率受到無損壓縮算法的影響[19],為測試本文所提算法的性能將YUV視頻序列直接壓縮得到待嵌信息的H.264載體視頻。實驗中取CITY_qcif、 news_qcif、carphone_qcif、mobile_qcif、foreman_qcif、container、salesman、coastguard等共8段QCIF格式視頻(176×144),每段視頻取150幀,所有視頻均采用2.2節(jié)描述的加密方式進行運動矢量符號加密,carphone視頻加密前后如圖6所示,圖6(a)為原始幀,圖6(b)為運動矢量加密幀。
對每幀的亮度分量進行操作,除第1幀為I幀外其余均為P幀模式,量化參數(shù)( Quantizer Parameter, QP)為27,采用Matlab進行仿真。嵌入信息為0,1序列,嵌入密鑰Key為長度等于P幀幀數(shù)的偽隨機0,1序列,參考幀間隔為K。隱藏容量如表3所示,可以看出本文所提算法取不同K值時的容量和文獻[11]相比有顯著提高。
視頻解密后的質(zhì)量如圖7所示,圖7(a)是解密后的視頻,圖7(b)是解密并提取信息后的恢復(fù)視頻。
K值越大嵌入信息越多,但視頻幀質(zhì)量越差。視頻的PSNR值如圖8所示,圖8(a)的 carphone視頻和圖8(b)的foreman視頻在不同參考幀間隔及不嵌入信息時每幀的PSNR值,隨著參考幀的周期而變化,通過指定參考幀可以有效地消除運動矢量的錯誤累積效應(yīng),與文獻[11]相比不可見性有所提升。表4為用本文算法在不同參考幀間隔下嵌入信息和用文獻[11]嵌入信息后視頻的平均PSNR值,從中可以看出運動速度快、紋理豐富的視頻由于其包含更多符合條件的運動矢量而修改量大,PSNR值下降多,如coastguard、mobile;反之則PSNR值下降少,如container、salesman。
嵌入信息的安全性由嵌入密鑰控制,只有擁有正確嵌入密鑰才能提取信息和恢復(fù)視頻。圖9展示了解密后視頻提取信息后的PSNR值,圖9(a)和圖9(b)為分別為用正確密鑰和不正確密鑰提取信息并恢復(fù)視頻后每一幀的PSNR值,可以看出只有密鑰正確才能夠完全恢復(fù)視頻。表5為解密視頻用正確密鑰和非正確密鑰在不同參考幀間隔情況下恢復(fù)視頻的平均PSNR值,無正確密鑰時恢復(fù)的視頻PSNR值顯著降低,而采用正確密鑰時視頻能完全恢復(fù),微小的PSNR值誤差是由視頻編碼器本身引入的,不影響視頻質(zhì)量。