王 林,段寧璐
(西安理工大學(xué) 自動化與信息工程學(xué)院,西安 710048)
隨著流媒體技術(shù)的不斷發(fā)展,數(shù)字視頻資源正逐步取代文字和靜止圖像成為網(wǎng)絡(luò)信息的主流;但是視頻中容易泄漏個人的隱私信息,不僅對個人甚至對社會都有可能產(chǎn)生不良影響.我們對視頻信息進(jìn)行加密以此保證視頻信息的安全性,這種傳統(tǒng)的加密技術(shù)雖然保證了內(nèi)容的安全,但密文自身也暴露了加密行為本身,容易被攻擊者察覺.相比之下信息隱藏不僅可以對內(nèi)容達(dá)到加密的效果,而且還不會暴露隱寫行為本身.隱寫與載體密切相關(guān),必須適應(yīng)載體的性質(zhì)和特點,這與物質(zhì)隱藏的性質(zhì)是相似的.所以把日常時空或大眾環(huán)境作為載體是最具隱蔽性的,也是最安全的.當(dāng)前最流行的公共視頻網(wǎng)絡(luò)電視、流媒體視頻和監(jiān)控視頻等是互聯(lián)網(wǎng)上最大量、最普遍、最豐富的應(yīng)用載體;H.264/AVC因其高效壓縮性能,強大的容錯力,良好的網(wǎng)絡(luò)親和性,在多種視頻領(lǐng)域迅速部署及廣泛普及.因此開展基于H.264/AVC可逆的視頻信息隱藏技術(shù)實現(xiàn)良好的不可感知性和較大的嵌入容量有著非常重要的理論意義和實用價值.
目前基于漂移失真的H.264/AVC信息隱藏算法比較成熟.文獻(xiàn)[1]利用BCH編碼技術(shù)對待嵌入信息進(jìn)行BCH編碼后嵌入到量化后的DCT系數(shù)中,其較好的解決了在載體視頻傳輸過程中可能遭遇的重編碼、重量化攻擊,能夠完整的恢復(fù)出秘密信息,但是沒有考慮到漂移失真的影響,恢復(fù)的視頻質(zhì)量不高;文獻(xiàn)[2]在每個量化的P幀亮度塊的DCT系數(shù)中嵌入2比特數(shù)據(jù);文獻(xiàn)[3]在文獻(xiàn)[2]的基礎(chǔ)上每個系數(shù)嵌入3比特數(shù)據(jù),雖然嵌入容量方面有所提升,但是因為沒有考慮到漂移失真的影響,視頻質(zhì)量退化比較嚴(yán)重.為了解決幀內(nèi)漂移失真,文獻(xiàn)[4]通過研究視頻編碼過程中的DCT變換、量化等操作,提出了一種基于耦合系數(shù)對的系數(shù)補償算法.耦合系數(shù)對分為嵌入系數(shù)和補償系數(shù);信息嵌入在耦合系數(shù)對中的嵌入系數(shù)中,同時對其對應(yīng)的補償系數(shù)進(jìn)行補償.該方法雖然減小了幀內(nèi)漂移失真但是由于對系數(shù)的折半分類,使得嵌入容量減小,不適合與目前的大容量應(yīng)用中;文獻(xiàn)[5]根據(jù)預(yù)讀當(dāng)前塊鄰近塊的預(yù)測模式來選擇嵌入的宏塊,使得失真不會傳播到其相鄰塊中,完全可以避免幀內(nèi)失真,但是該方法需要預(yù)讀所有宏塊的預(yù)測模式,計算復(fù)雜度高,不能用于實時應(yīng)用中;文獻(xiàn)[6]使用不同宏塊類型對應(yīng)不同比特信息,更小的嵌入?yún)^(qū)域來代替在一個完整的幀中實現(xiàn)嵌入,漂移失真雖然減小,但是增大視頻比特率,傳輸速率減小.文獻(xiàn)[7]逆序從最后一個宏塊的第一個幀開始依次向前嵌入數(shù)據(jù),實現(xiàn)數(shù)據(jù)隱藏,減小漂移失真的積累,但是該方法嵌入容量低,同時載體的視頻比特流不能做到格式化兼容.通過以上分析得出,目前的視頻隱寫算法在解決漂移失真的問題上仍有待提高.
本文在以上算法基礎(chǔ)上提出一種在減小幀間漂移失真的前提下提高嵌入容量和魯棒性的視頻隱寫算法.首先通過對秘密信息進(jìn)行卷積編碼以此來提高視頻魯棒性;然后通過對幀間漂移失真的分析,選擇p幀亮度塊中漂移失真小的DCT系數(shù)集合嵌入;根據(jù)預(yù)定義的嵌入規(guī)則,每個DCT系數(shù)對應(yīng)2 bit信息,將秘密信息嵌入到其中,提高視頻質(zhì)量的同時增加嵌入容量;最后,在解碼端能夠正確提取秘密信息,恢復(fù)原始信息,實現(xiàn)可逆的信息隱藏.
原始圖像與隱藏數(shù)據(jù)以后的處理圖像質(zhì)量之間的差異衡量標(biāo)準(zhǔn).峰值信噪比越高,處理圖像與原始圖像差異度越小,就代表失真越小.其中MSE為原圖像與處理圖像之間的均方誤差(Mean Squared Error,MSE).
按照本文的隱藏算法理論上所能嵌入的比特數(shù)量.嵌入容量不易太大,應(yīng)剛好滿足實際需要的嵌入容量即可.因為嵌入容量過大會增加圖像之間的差異,增加漂移失真降低處理圖像的視頻質(zhì)量.
在異常和危險情況下系統(tǒng)生存的關(guān)鍵.數(shù)據(jù)隱藏面對一些諸如包丟失,重壓縮等攻擊,本文以處理圖像的生存率來衡量魯棒性的強弱.生存率越高,魯棒性越強,視頻受到攻擊的損失越小.
目前的數(shù)據(jù)隱藏算法主要是為了在漂移失真,嵌入容量,魯棒性三方面尋求最優(yōu)化.例如文獻(xiàn)[7]的算法分別對幀內(nèi)預(yù)測模型,運動矢量差異,殘差系數(shù)進(jìn)行加密保證視頻的安全性,在加密以后的非零的殘差系數(shù)中嵌入數(shù)據(jù),實現(xiàn)數(shù)據(jù)隱藏.其中數(shù)據(jù)嵌入時從每一個GOP (Group Of Pictures)的最后一個幀開始逆序向前嵌入,減小嵌入失真的累積,總體上減小漂移失真.
Yao[7]的算法對原始視頻的加密雖然可以提高魯棒性,但是暴露了隱藏行為的本身;嵌入策略的低效使得嵌入容量較低;在減小漂移失真時需要預(yù)先讀取所有的GOP,使得該算法不適合于實時應(yīng)用中.
因此文中提出了一種優(yōu)化的隱藏算法,在保障視頻質(zhì)量的前提下,可以進(jìn)一步提高嵌入容量和視頻的魯棒性.
H.264/AVC進(jìn)行整數(shù)變換的時候,根據(jù)不同的運動場景可以選擇4×4矩陣變換或者8×8矩陣變換.一般情況下4×4的矩陣被用于運動信息劇烈,圖像細(xì)節(jié)豐富的區(qū)域;而8×8矩陣用于運動平緩區(qū)域.考慮人眼視覺效果,由于8×8矩陣區(qū)域信息變化不大,所以若在8×8矩陣中嵌入信息,會導(dǎo)致視頻質(zhì)量嚴(yán)重下降.因此,利用DCT系數(shù)進(jìn)行數(shù)據(jù)隱藏的算法,一般選取4×4矩陣變換的亮度塊[8,9].
基于4×4塊的變換即為殘差塊為
量化過程由式(5)所得其中Qstep是由量化參數(shù)QP決定的量化步長,PF等于是由矩陣的位置(i,j)決定的.
在解碼端經(jīng)過重新縮放和ICT變換以后,
在數(shù)據(jù)隱藏算法中,編碼信息被嵌入在量化的亮度DCT系數(shù)中.
?4×4是由于嵌入了數(shù)據(jù)以后造成的誤差矩陣,隱藏數(shù)據(jù)以后,再進(jìn)行重新縮放和ICT變換,我們可以得到:
記在此不考慮對系數(shù)的取整運算,我們可以計算出由于修改4×4塊的系數(shù)所產(chǎn)生的獨立失真使用均方誤差MSE來計算[10]:
因為所以我們可以對他們所造成的獨立嵌入失真進(jìn)行分類.其中C1,C2,C3代表了4×4宏塊的16個系數(shù)分類的集合.如公式(12)所示:
根據(jù)4×4變換的線性特征每一個嵌入失真
從以上分析可以得出,嵌入數(shù)據(jù)時進(jìn)行系數(shù)選擇是有必要的,當(dāng)數(shù)據(jù)嵌入產(chǎn)生的漂移失真由大到小的系數(shù)結(jié)合為C1,C2,C3.所以在每次嵌入數(shù)據(jù)時,首先選擇所有宏塊C1集合系數(shù)進(jìn)行嵌入,當(dāng)C1集合的系數(shù)容量不足時,再依次考慮C2C3集合中的系數(shù)進(jìn)行嵌入.采用這樣的嵌入策略可以減小漂移失真的產(chǎn)生,提高視頻質(zhì)量.
為驗證上述結(jié)論,在Matlab 2014a中根據(jù)H.264/AVC標(biāo)準(zhǔn)編解碼軟件JM8.5進(jìn)行測試.測試視頻Foreman為100個幀,編碼幀率為30 fps,量化參數(shù)QP為28,文件編碼的GOP結(jié)構(gòu)為IPPP;從每個GOP的第一個p幀開始依次向后面連續(xù)的p幀嵌入,我們使用文獻(xiàn)[7]的方法在每個p幀的亮度DCT系數(shù)嵌入消息位.在數(shù)據(jù)嵌入?yún)^(qū),屬于C1,C2和C3的系數(shù)分別為2810,12 230和14 646.我們分別在屬于C1,C2和C3的系數(shù)中嵌入2000個消息位,產(chǎn)生三個載體視頻,并產(chǎn)生如圖1中的整體失真.可以看出將數(shù)據(jù)嵌入到C1中的系數(shù)中可以引入最小失真.
在糾錯編碼理論中,卷積碼應(yīng)用在通信系統(tǒng)的前向糾錯中.本文算法利用了卷積碼在短碼及隨機(jī)誤碼方面優(yōu)良的糾錯性能,有效提高了針對隨機(jī)誤碼情形下算法的魯棒性,相比與一般傳統(tǒng)的加密算法更能有效恢復(fù)原始視頻信息[11].
圖1 3種集合整體失真的比較
卷積碼用(n,k,K)來表示,即把k個信息比特編碼n個信息比特,碼率為k/n,并且約束長度為K.編碼生成的n個碼元不僅和當(dāng)前的k個碼元相關(guān),而且同樣與之前的K個輸入的碼元相關(guān).這就是卷積碼記憶特性.假定給出的編碼器輸入M=(m1m2···mn),卷積編碼后的輸出序列為M′=(m1m2···m2n),則編碼器卷積編碼后的輸出序列可以由M′=M·G∞給出,其中G∞為生成矩陣.
卷積碼的編碼器有3種主要元件構(gòu)成:移位寄存器、模加法器和一個旋轉(zhuǎn)開關(guān).其中寄存器位數(shù)為一個碼組中信息位位數(shù)k的整數(shù)倍.寄存器可以看做是一個FIFO的隊列.信息比特序列依次由入口移入寄存器,移位開始時寄存器空閑高位補0,移位結(jié)束時寄存器空閑低位補0.信息比特序列每移動一次,取位于寄存器中的一段碼字與卷積碼生成矩陣模2乘,得到卷積碼輸出碼元序列.卷積碼的譯碼主要釆用的是維特比(Viterbi)譯碼算法[12,13].
圖2給出了本文提出方法的嵌入流程,算法在H.264/AVC視頻p幀的亮度塊中嵌入信息.為了實現(xiàn)信息隱藏,設(shè)計了如下算法:
具體嵌入規(guī)則如下:
本文我們將數(shù)據(jù)嵌入在p幀的亮度部分,經(jīng)過DCT變換和量化以后,選擇 4×4的數(shù)據(jù)塊在系數(shù)集合C1上嵌入秘密信息m,首先定義以下的映射規(guī)則S:
圖2 嵌入算法流程圖
原始DCT系數(shù)C按照如下嵌入規(guī)則進(jìn)行變換,同時如果原始DCT系數(shù)C中存在非零系數(shù),我們在非零系數(shù)上不進(jìn)行數(shù)據(jù)嵌入操作.通過對非零系數(shù)的修改消除二義性.
秘密信息的嵌入算法:
(1) 對待嵌入的信息序列M,根據(jù)給定的生成矩陣進(jìn)行卷積編碼,得到卷積后的信息序列
(2) 對原始的H.264/AVC視頻序列進(jìn)行熵解碼,獲取p幀亮度塊的預(yù)測信息,量化殘差DCT系數(shù),量化步長等信息;
(3) 根據(jù)2.1中幀間漂移失真的分析,將每個宏塊的DCT系數(shù)分為C1C2C3三個不同等級的系數(shù)集合,選取嵌入失真小的C1集合中的DCT系數(shù)作為嵌入系數(shù);
(4)根據(jù)預(yù)先規(guī)定的映射算法將秘密信息序列M'嵌入到所選擇的亮度DCT系數(shù)中.
圖3給出了方法的提取流程,算法在H.264/AVC視頻的p幀亮度塊中提取隱秘信息.
圖3 提取算法流程圖
(1) 在解碼端對視頻流部分熵解碼,獲取p幀亮度塊的預(yù)測信息,量化殘差DCT系數(shù)等信息,提取原始DCT系數(shù)C.
(2) 根據(jù)載密系數(shù)C'提取出秘密信息M',然后使用維比特譯碼對秘密信息M',進(jìn)行譯碼;恢復(fù)原始的秘密信息序列.
信息提取和恢復(fù)算法:
(1) 對載密的H.264/AVC視頻流進(jìn)行熵解碼獲取其中的殘差系數(shù);
(2) 根據(jù)公式(16)(17)從DCT系數(shù)中提取嵌入數(shù)據(jù)恢復(fù)原始視頻;
(3) 對提取的嵌入數(shù)據(jù)再進(jìn)行維特比譯碼,輸出真正嵌入的數(shù)據(jù).
本文提出的方法在4 G內(nèi)存的64位臺式電腦VS 2013編程環(huán)境下根據(jù)H.264/AVC標(biāo)準(zhǔn)編解碼軟件JM8.5進(jìn)行測試.每個測試視頻編碼為300個幀,編碼幀率為30 fps,量化參數(shù)QP為28,文件編碼時的GOP結(jié)構(gòu)為IPPPPPPPPP;每個視頻序列只有第一幀編碼為I幀,其余均為P幀編碼.在測試中,采用3段標(biāo)準(zhǔn)的CIF視頻測試序列,分別為:foreman,mobile,akiyo.
實驗中,通常采用PSNR來衡量載體視頻的漂移失真,若失真失真越小PSNR越大,視頻視覺質(zhì)量越好.表1與文獻(xiàn)[7]方法進(jìn)行對比,給出在嵌入率為50%的情況下,不同的QP值所對應(yīng)的嵌入容量和PSNR.從表中可以得出:QP越小,PSNR越高視頻的視覺質(zhì)量就越好,漂移失真就越小.運動越劇烈圖像越復(fù)雜的視頻圖像,PSNR相對較低,視頻質(zhì)量有所下降.
表1 不同QP下PSNR的比較
表1和表2是從客觀PSNR和嵌入容量兩方面反映出本文提出算法的優(yōu)越性,圖4列出三個測試視頻第20幀的圖像,從主觀質(zhì)量方面反映出本文在提高嵌入容量的前提下,不會影響視頻的視覺質(zhì)量.從以下圖像的對比可以看出本文提出的算法維持了視覺質(zhì)量前后的清晰度.人眼無法察覺的視頻質(zhì)量的變化.
表2 不同QP下嵌入容量的比較
圖4 原始圖像與載密圖像對比
從表2中可以得出:嵌入容量取決于視頻內(nèi)容和QP的值.QP相同的情況下,視頻圖像中的物體運動越劇烈環(huán)境越復(fù)雜,非零量化DCT系數(shù)越多,嵌入容量越小;隨著QP的增加,此時會產(chǎn)生更多量化的零DCT系數(shù),本文的嵌入位置就是在零量化DCT系數(shù)上,所以嵌入容量也隨之增加,兩者呈正比關(guān)系.
魯棒性是視頻數(shù)據(jù)隱藏的重點特性,擁有魯棒性在數(shù)據(jù)隱藏過程中可以抵抗一些比如包丟失,重壓縮等攻擊.劉云霞等人[14]采用秘密共享技術(shù)將秘密信息分為n部分,分別對其進(jìn)行處理,提高視頻魯棒性,但是視頻容量較低,與文獻(xiàn)[15,16]中提出的隱藏算法均不適和用于實時應(yīng)用中.我們使用存活率來評價嵌入算法的魯棒性.其中,存活率為正確提取的信息比特數(shù)和實際嵌入的比特數(shù)之比.本方法中QP值為28,表3提出的在不同丟包率的條件下,未作任何處理,分別加入BCH編碼[7]和本文所使用卷積碼的條件下展示的視頻序列存活率.可以看出隨著丟包率的增加存活率在減小.相比于BCH編碼本文引入的卷積碼幾乎可以完整地恢復(fù)原始視頻信息.雖然會存在小部分誤差,但是恢復(fù)的視頻在人眼可接受范圍內(nèi),不會影響視頻視覺質(zhì)量.結(jié)合本文中的嵌入算法,便可以實現(xiàn)一個漂移失真小,嵌入容量大,魯棒性強的視頻隱寫算法.
表3 不同丟包率下魯棒性的比較
本文針對H.264/AVC數(shù)據(jù)隱藏過程中產(chǎn)生的幀間漂移失真問題,提出一種通過選擇不同優(yōu)先級的DCT系數(shù)集合同時引入卷積編碼的思想,實現(xiàn)視頻信息隱藏.使用本文提出的方法一方面可以減小幀間失真漂移,通過預(yù)先映射的嵌入規(guī)則提高嵌入容量;另一方面通過卷積編碼提高視頻的魯棒性,使得視頻在傳輸過程中能夠抵抗各種諸如包丟失重壓縮等攻擊.但是,在數(shù)據(jù)隱藏過程中,提高嵌入容量,維持良好的視覺質(zhì)量,增強魯棒性依然是一個研究熱點.
1 Liu YX,Hu MS,Ma XJ.A new robust data hiding method for H.264/AVC without intra-frame distortion drift.Neurocomputing,2015,151:1076-1085.[doi:10.1016/j.neu com.2014.03.089]
2 Ma XJ,Li ZT,Tu H.A data hiding algorithm for H.264/AVC video streams without intra-frame distortion drift.IEEE Transactions on Circuits and Systems for Video Technology,2010,20(10):1320-1330.[doi:10.1109/TCSVT.2010.2070950]
3 Gujjunoori S,Amberker BB.DCT based reversible data embedding for MPEG-4 video using HVS characteristics.Journal of Information Security and Applications,2013,18(4):157-166.[doi:10.1016/j.istr.2013.01.002]
4 Bouchama S,Aliane H,Hamami L.Reversible data hiding scheme for the H.264/AVC codec.Proceedings of 2013 International Conference on Information Science and Applications (ICISA).Suwon,South Korea.2013.1-4.
5 Liu YX,Chen L,Hu MS.A reversible data hiding method for H.264 with Shamir’s (t,n)-threshold secret sharing.Neurocomputing,2016,188:63-70.[doi:10.1016/j.neucom.2014.10.109]
6 Liu CH,Chen OTC.Data hiding in inter and intra prediction modes of H.264/AVC.Proceedings of IEEE International Symposium on Circuits and Systems.Seattle,USA.2008.3025-3028.
7 Yao YZ,Zhang WM,Yu NH.Inter-frame distortion drift analysis for reversible data hiding in encrypted H.264/AVC video bitstreams.Signal Processing,2016,128:531-545.[doi:10.1016/j.sigpro.2016.05.004]
8 Cheung SCS,Venkatesh MV,Paruchuri JK.Protecting and managing privacy information in video surveillance systems.Protecting Privacy in Video Surveillance.London UK:Springer,2009.11-33.
9 Paruchuri JK,Cheung SCS,Hail MW.Video data hiding for managing privacy information in surveillance systems.Eurasip Journal on Information Security,2009,2009:236139.[doi:10.1186/1687-417X-2009-236139]
10 王麗娜,翟黎明,邵強,等.一種改進(jìn)的H.264視頻防失真漂移隱寫算法.第十一屆全國信息隱藏暨多媒體信息安全學(xué)術(shù)大會CIHW2013論文集.西安,中國.2013.71-79.
11 徐達(dá)文.一種加密域H.264/AVC視頻數(shù)據(jù)隱藏方法:中國,CN103442253A,2013-12-11.
12 Song GH,Li ZT,Zhao J,et al.A data hiding algorithm for 3D videos based on inter-MBs.Proceedings of the 10th International Conference on Intelligent Computing Theory.Taiyuan,China.2014.541-552.
13 劉云霞,賈遂民,胡明生,等.一種基于多秘密共享的H.264視頻無失真漂移魯棒隱寫方法.計算機(jī)應(yīng)用研究,2015,32(8):2433-2436.
14 王家驥,王讓定,李偉,等.一種基于幀內(nèi)預(yù)測模式的HEVC視頻信息隱藏算法.光電子·激光,2014,25(8):1578-1585.
15 王讓定,胡陸建,徐達(dá)文,等.一種面向H.264/AVC視頻的信息隱藏方法:中國,CN102223540B,2012-12-05.
16 Zhang Y,Tang YL,Cheng HL.Efficient video cutout by paint selection.Journal of Computer Science and Technology,2015,30(3):467-477.[doi:10.1007/s11390-015-1537-y]