基于脆弱水印的錯誤檢測技術(shù)在H.264中的應用
摘 要:針對H.264編碼比特流,本文提出了一種在壓縮比特流中使用脆弱水印技術(shù)來(lái)檢測傳輸中錯誤宏塊的檢測方案。在編碼端的DCT非零系數的最低有效位(LSB)以數字水印的形式嵌入特定的信息,然后在解碼端提取這些信息來(lái)判斷所接收的比特流是否出錯。
關(guān)鍵詞:錯誤檢測;脆弱水印;最低有效位;比特流
引言
在壓縮視頻流中,每個(gè)比特都是非常重要的,在傳輸過(guò)程中發(fā)生的錯誤會(huì )嚴重影響解碼后的視頻效果。所以,在所接收的視頻流中進(jìn)行錯誤檢測在實(shí)際工作中是非常重要的。只有解碼器在所接收的比特流中檢測到誤碼,才能采用相應的策略對它進(jìn)行錯誤恢復和錯誤隱藏,因此,選擇一種行之有效的誤碼檢測方法是致關(guān)重要的。
數字水印技術(shù)在近年來(lái)發(fā)展很快,已發(fā)展出用于數據監控的脆弱水印,以檢驗數據的完整性。本文提出了一種基于脆弱水印的錯誤檢測方法。
錯誤檢測方案
為了克服傳統檢測方法的不足,本文采用在編碼端嵌入水印信息的辦法,并使水印信息和視頻數據之間建立某些強制關(guān)系。如果在解碼時(shí)發(fā)現這些約定關(guān)系不被滿(mǎn)足,則可判斷接收到的數據遭到篡改,即發(fā)生傳輸錯誤。本文根據H.264的協(xié)議語(yǔ)句設計水印信息,并把水印信息嵌入到非零DCT系數中。
檢測原理
在H.264視頻壓縮標準中,一個(gè)宏塊的壓縮數據可以分為兩個(gè)部分。第一部分包括圖像頭、宏塊類(lèi)型、幀內預測模式以及運動(dòng)矢量等;第二部分包括塊編碼模式(CBP,Coded Block Pattern)和該塊的所有DCT系數。如果第一部分數據發(fā)生錯誤,將對解碼端的圖像解碼過(guò)程造成非常嚴重的影響,甚至不能解碼。但值得慶幸的是,第一部分的數據與CBP數據在碼流中的比特數非常少,所以其發(fā)生錯誤的概率與DCT系數相比非常小。數字水印檢測技術(shù)正是針對每個(gè)DCT變換塊進(jìn)行一些特殊處理,使編碼后的碼流數據攜帶一些特定的特征,即水印。而碼流中的這些特征對信道的干擾非常敏感,在信號傳輸過(guò)程中,即使遇到輕微的信道干擾,這些特征也會(huì )丟失。解碼端通過(guò)檢測解碼數據是否存在水印,就能達到錯誤檢測的目的。
圖1 嵌入水印流程圖
水印設計和嵌入位置
在編碼端,首先對每個(gè)DCT塊內的非零系數的最低有效位進(jìn)行判別,DCT塊經(jīng)過(guò)字變換(zia-zia)掃描之后,如果非零系數在偶數位置,則將最低有效位置0,即LSB=0;如果非零系數在奇數位置,則將最低有效位置1,即LSB=1。因為DCT系數中直流分量攜帶的信息量很大,如果對直流分量進(jìn)行處理,將會(huì )導致圖像的PSNR值急劇下降,嚴重影響解碼后的圖像效果,所以,本文只對交流系數進(jìn)行處理。在解碼端,對這些位置的交流系數進(jìn)行檢查。在奇數位置,如果DCT系數為偶數,則說(shuō)明該編碼塊出錯;在偶數位置,如果DCT系數為奇數,則說(shuō)明該編碼塊出錯。其方法如下:
非零DCT交流系數在偶數位置時(shí):
非零DCT交流系數在奇數位置時(shí):
AC為DCT變換后的交流系數,ACW為加載脆弱數字水印后的DCT交流系數,為符號函數。本方案采用在最低有效位嵌入水印模式,因此不需要額外的比特進(jìn)行編碼。圖1即為幀內宏塊嵌入水印模式的流程圖。
由于H.264標準采用了幀內和幀間預測來(lái)參與對某一宏塊的編解碼。為了保證編解碼端參與預測的數據一致性(因為解碼端不可能使用未嵌入水印的原始數據參與預測),避免數據失配造成圖像質(zhì)量惡化,水印嵌入操作必須放到運動(dòng)補償循環(huán)內,即量化之后、熵編碼之前進(jìn)行,如圖2所示。
圖2 數字水印檢測編碼器的實(shí)現流程圖
實(shí)驗結果
本文的編解碼系統以H.264的標準測試模型JM86為測試平臺,在編碼端加入了數字水印,加入起始點(diǎn)為DCT系數的第6個(gè)數。本文采用VCEG模擬信道傳輸模型來(lái)模擬碼流錯誤。
圖3為取標準測試集foreman.yuv的前30幀,在碼率為128Kbps、逐幀編碼條件下,對嵌入數字水印和未嵌入數字水印這兩種情況下在沒(méi)有傳輸錯誤時(shí)重建圖像PSNR值的對比圖。由圖可見(jiàn),水印對圖像質(zhì)量的影響很小。
表1和表2為標準測試序列在不同編碼比特率下對兩種錯誤檢測方案的對比。每個(gè)序列選取30幀,圖像格式為QCIF(采樣比率為4:2:0)。首先用嵌入水印后的編碼器得到一個(gè)基準碼流,然后用VCEG模擬信道引入錯誤,最后在解碼端提取這些信息來(lái)判斷相應的語(yǔ)法元素是否滿(mǎn)足語(yǔ)法結構或約定關(guān)系。
由表1和表2可以看出,基于脆弱水印方法和基于語(yǔ)法的錯誤檢測相比,前者在付出較小的PSNR值代價(jià)的情況下,其錯誤檢測率提高了近一倍。但隨著(zhù)編碼序列運動(dòng)復雜度的增加,細節更多的情況下,數字水印的PSNR值會(huì )下降。
圖3 無(wú)錯情形下PSNR值對比
結語(yǔ)
通過(guò)對編碼端的非零DCT系數加入脆弱水印信息,形成傳輸數據與加入信息的特定強制關(guān)系,在解碼端校驗約定的強制關(guān)系來(lái)判斷數據的完整性這種錯誤檢測方法,相對基于語(yǔ)法的傳統錯誤檢測方法有更高的錯誤檢測率,而且這種檢測方法在傳輸比特流中不會(huì )增加額外的開(kāi)銷(xiāo)而影響傳輸效率,但該方法的PSNR值會(huì )有少量降低,若從人眼視覺(jué)分辨能力考慮,少量的PSNR值降低不會(huì )影響視頻效果?!?/P>
參考文獻:
1畢厚杰,新一代視頻壓縮編碼標準-H264/AVC[M].人民郵電出版社,2005.
2 余兆明,查日勇等,圖像編碼標準袶.264技術(shù)[M].人民郵電出版社,2006.
3 范文杰,H.264數字視頻差錯控制技術(shù)的研究[D].成都,成都理工大學(xué)檔案館,2006.
評論