唐洪瓊, 張英男, 楊曉元
(武警工程大學密碼工程學院,西安 710086)
以數(shù)字圖像為媒介的信息隱藏取得了廣泛的研究[1],隨著網(wǎng)絡技術和視頻編碼技術的成熟,數(shù)字視頻水印技術和數(shù)字視頻隱寫技術[2-4]同樣得到了廣泛研究。目前視頻隱寫主要根據(jù)嵌入位置的不同分為前置嵌入、內(nèi)置嵌入和后置嵌入[3]。前置嵌入通常需要結合糾錯編碼;后置嵌入主要對壓縮的視頻流碼字進行操作,嵌入容量有限;內(nèi)置嵌入具有豐富的嵌入載體,相關研究最為深入。
主流的內(nèi)置嵌入主要集中在視頻編碼的幀內(nèi)預測、運動估計、運動矢量和殘差壓縮過程。其中,基于運動矢量的視頻隱寫算法被廣泛研究。Xu等[5]提出對具有較大幅度的運動矢量分量的最低有效位(least significant bit,LSB)進行信息嵌入。Aly[6]選擇具有較高預測誤差的宏塊運動矢量的LSB作為信息嵌入的載體。Cao等[7]引入濕紙編碼(wet paper codes,WPC)對運動估計過程進行擾動,算法有較好的安全性。Cao等[8]研究發(fā)現(xiàn)編碼器端對運動矢量進行修改在解碼端仍有可能滿足局部最優(yōu)性,并設計失真代價函數(shù),引入校驗格編碼STC對運動矢量進行信息嵌入。Yao等[9]將時域的統(tǒng)計分布變化和預測誤差變化相結合,設計失真代價函數(shù)并利用雙層STC進行信息的嵌入,提高了隱寫安全性,并具有較好的視頻質(zhì)量。Zhang等[10]將在一定搜索范圍內(nèi)滿足局部最優(yōu)性并與原始運動矢量奇偶性相反的運動矢量作為隱寫載體,隱寫后的運動矢量仍然具備局部最優(yōu)性。王麗娜等[11]形式化證明對宏塊復雜度小的宏塊運動矢量進行修改有利于保持局部最優(yōu)性,提出了一種基于宏塊復雜的自適應(adaptive macroblock complexity,AMC)視頻運動矢量隱寫算法。
目前針對基于運動矢量隱寫的隱寫分析從運動矢量局部最優(yōu)性異常和運動矢量相關性異常進行特征構造。Wang等[12]提出的AoSO(add-or-subtract-one)特征用于局部最優(yōu)性異常分析。王麗娜等[13]提出一種基于共生頻率異常的運動矢量相關性度量方法,并提出基于相關性異常的隱寫分析方法,具有較高的檢測正確率和速度。
目前基于運動矢量的視頻隱寫方法,無論是基于隱寫載體直接修改[5-6,11],還是基于最小化失真框架[8-10],都未考慮到對運動矢量不同分量的修改會造成統(tǒng)計特性的不同程度變化,而是認為運動矢量分量的修改對統(tǒng)計特性的變化是無差別的。實驗研究表明,運動矢量不同分量的隨機修改會造成分量的統(tǒng)計特性不同程度的變化?;诖?,引入歸一化互信息(normalized mutual information,NMI)[14]對運動矢量分量的相關性進行衡量,并通過選擇策略選擇相鄰相關性小的分量LSB作為隱寫載體,為了能夠盡量保持運動矢量的局部最優(yōu)性,定義了宏塊復雜度測度函數(shù),并將其作為修改運動矢量的代價,在最小化失真框架下[15]進行信息的嵌入。
圖1 視頻幀間壓縮Fig.1 Video inter-frame compression
基于運動矢量的隱寫以嵌入操作Emb(·)對運動矢量進行修改,如式(1),常見的有LSB修改、隨機匹配修改和編碼修改等。編碼器通過攜密運動矢量(h′,v′)獲得新的參考塊并計算殘差,然后進行量化和編碼。運動矢量改變后,殘差和參考塊相應的被重新編碼,因此隱寫視頻質(zhì)量不會造成明顯的失真,即隱寫視頻主觀上具有不可感知性。另外,視頻壓縮將產(chǎn)生的運動矢量,為隱寫提供了豐富的載體。
(h′,v′)=Emb (h,v)
(1)
目前針對運動矢量隱寫的分析主要通過運動矢量的局部最優(yōu)性[12]異常和相鄰相關性[13]異常進行特征構造,其設計思路借鑒圖像隱寫分析中的“預處理+特征提取+分類”處理流程[16]。通過運動估計匹配的參考塊在匹配范圍內(nèi)滿足匹配準則的局部最優(yōu)性,一般通過當前塊和匹配塊之間的絕對誤差和(sum of absolute differences,SAD)選擇最優(yōu)的參考塊。改變運動矢量會導致參考塊發(fā)生變化,破壞運動矢量最優(yōu)性,產(chǎn)生最優(yōu)性異常。為了對視頻進行有效的壓縮,視頻幀會被劃分成若干宏塊,理論上來說,相鄰宏塊具有相同或近似的運動矢量[13]。隱寫對運動矢量進行修改,從而使之與相鄰的矢量不再強相關,出現(xiàn)相鄰相關性異常。
以文獻[11]AMC隱寫算法為例,在運動矢量損壞比(corrupted MV ratio,CMVR)為0.2下進行信息嵌入。引入相對熵來衡量隱寫前后運動矢量的分布差異變化,相對熵也稱為KL散度(Kullback Leibler divergence),定義為
(2)
式(2)中:P和Q分別為真實分布和擬合分布。對4段視頻序列bus、city、mobile、silent進行隱寫,按式(2)計算視頻每幀的不同分量隱寫前后的KL散度并繪制隱寫視頻所有幀的KL散度的箱形圖,結果如圖2所示,紅色點為異常的KL散度值(即隱寫算法對幀的分量分布造成了明顯破壞),紅色虛線代表所有KL散度均值,綠色虛線代表KL散度中位數(shù)??梢钥闯?,隱寫對不同視頻序列的運動矢量分布會產(chǎn)生不同的影響;對同一序列不同分量分布也會產(chǎn)生不同影響。改變運動矢量分布情況,必然造成相鄰相關性異常。實驗證明,隱寫算法對運動矢量不同分量的統(tǒng)計特性影響程度存在差異,這一發(fā)現(xiàn)為后面載體選擇提供了依據(jù)。
圖2 隱寫對不同分量分布的影響Fig.2 The effect of steganography on the distribution of different components
運動矢量隱寫會造成運動矢量與相鄰未隱寫的運動矢量出現(xiàn)相關性異常。如圖2所示,KL散度分布越分散,相鄰相關性破壞越嚴重。為了衡量運動矢量之間的相鄰相關性,引入信息論中的歸一化互信息,互信息可以用來衡量兩個變量之間的相關性,離散變量X和Y的互信息定義為
(3)
式(3)中:ξ、ψ分別為X和Y的樣本空間;p(x)、p(y)為樣本空間的邊緣分布;p(x,y)為ξ、ψ的聯(lián)合概率分布。進一步的,歸一化互信息定義為
(4)
式(4)中:H(X)、H(Y)為X、Y的信息熵。宏塊在運動估計時會參考相鄰已編碼宏塊的運動矢量并構造自己匹配塊搜索起點,主要考慮4個方向上的相鄰相關性,方向集合記作D={→,↓,,},分別表示從左向右、從上往下、右下、左下4個方向。通過運動估計和運動補償,當前幀的所有運動矢量組成一個運動矢量矩陣M。對M的2個分量從4個方向進行掃描得到分量掃描鏈[13],即
(5)
(6)
式中:Sh和Sv分別為水平分量和垂直分量的掃描鏈集合。將運動矢量分量的相關性可定義為掃描鏈集合的歸一化互信息的均值,公式表達為
(7)
如圖3所示,給出了隱寫算法AMC[11]對序列mobile進行隱寫后,原始視頻運動矢量垂直分量的歸一化互信息和隱寫前后垂直分量KL散度的聯(lián)合分布圖。可以看出,隱寫前后運動分量分布的KL散度與未隱寫運動分量的相鄰相關性(歸一化互信息)存在正相關關系。如果對具有較大相鄰相關性的分量進行隱寫,會導致隱寫前后分量分布的KL散度更大,統(tǒng)計特性破壞更加明顯。因此,在隱寫時應該選擇相鄰相關性更小的運動矢量分量進行隱寫,能夠減少對分量分布的破壞。
圖3 分量歸一化互信息和隱寫分量分布變化關系Fig.3 Relationship between NMI of component and distribution of steganographic components
(8)
不失一般性,設m≥n,可以將重建塊進一步劃分成N=m/n個大小為n×n的子圖像塊。Hi表示使用Hilbert空間填充曲線對第i個子圖像塊進行掃描得到的像素序列。
STC是一種基于最小化失真框架的編碼,能夠在給定嵌入失真代價函數(shù)條件下最小化加性失真[15]。嵌入和提取如式(9)和式(10)所示。
(9)
ExtSTC(y)=Hy=m
(10)
式中:x為隱寫載體;y為攜密載體;Γ為代價向量,即修改載體的代價;m={0,1}αn為待嵌信息,α為嵌入率,n為載體長度,安全的隱寫嵌入率一般不超過0.5,使用CMVR作為嵌入率;c(m)為m對應的陪集;H為通信雙方通信秘鑰確定的奇偶校驗矩陣;D(x,y)為隱寫載體x修改為y所付出的代價和。
選擇運動矢量分量的最低有效位作為隱寫載體,進行信息嵌入后,對原始載體進行LSB匹配修改以滿足嵌入要求,規(guī)則如式(11)所示:
(11)
式(11)中:E(·)為原始載體的均值;c和s為隱寫前后的運動矢量分量。如果第i個運動分量需要被修改,則根據(jù)當前分量的值和原始分量的均值大小關系按式(11)進行LSB匹配修改。
隱寫算法描述如下。
步驟1循環(huán)遍歷當前幀的所有宏塊,對其進行正常的運動估計和和補償,記錄下相應重建宏塊的復雜度和運動矢量。
步驟2以重建宏塊的復雜度構造隱寫失真代價。
步驟3根據(jù)式(4)和式(5)對水平分量和垂直分量進行掃描得到Sh、Sv。
步驟4根據(jù)式(7)計算Sh、Sv相關性,并選擇相關性小的掃描鏈對應的分量構造隱寫載體x。
步驟5根據(jù)步驟2得到的失真代價函數(shù),使用STC編碼進行信息嵌入,得到攜密載體y。
步驟6根據(jù)得到的攜密載體對原始的運動分量進行LSB匹配修改,如式(11)所示。
步驟7對運動矢量被修改的宏塊進行運動補償?shù)玫叫畔⒌闹亟ê陦K。
步驟8完成一幀的信息嵌入,得到重建幀。
實際上,通信接收方提取時需要知道信息被嵌入到運動矢量水平分量還是垂直分量。其實并不難,可以根據(jù)通信雙方的密鑰來決定而非通過式(7)決定,后續(xù)幀按照式(7)選擇嵌入分量,并將選擇信息同秘密信息嵌入到前一幀中,因此在提取并解密出秘密消息后,后一幀的嵌入分量隨之獲得。另外,還可將第一幀的嵌入分量信息按照約定的格式混淆到待嵌信息并嵌入到第一幀,接受方分別對第一幀的水平和垂直分量進行信息提取并解密,通過約定的格式便可判斷信息嵌入的分量,進一步的獲取后續(xù)幀的嵌入分量。
提取流程相對簡單,只需要使用通信秘鑰產(chǎn)生奇偶校驗矩陣,然后對隱寫視頻的隱寫分量的最低有效位按照式(10)進行提取即可。通常,為了提高嵌入信息的安全性,嵌入之前會對秘密信息借助密碼學手段進行加密操作,因此提取信息后還需要進行解密操作才可以獲得真正的秘密信息。
圖4 全部測試視頻序列Fig.4 All of the test video sequences
實驗樣本為34段CIF YUV420格式未壓縮的視頻序列,如圖4所示。本文算法及對比算法基于Xvid-1.3.2開源MPEG-4編解碼框架實現(xiàn)。為了保證算法對比的有效性,對所有嵌入幀的宏塊大小統(tǒng)一為16×16,無特殊說明,壓縮碼率為1 000 Kb/s,以運動矢量損壞比CMVR表示嵌入率α,每種算法都在CMVR={0.1,0.2,0.3,0.4}進行信息嵌入。對比算法來自文獻[5-7,10-11]。綜合嵌入容量、安全性等因素,文獻[5]和文獻[6]嵌入閾值為0,即文獻[5]選擇運動矢量分量絕對值大于0的宏塊,文獻[6]選擇殘差大于0的宏塊,文獻[7]的次優(yōu)閾值選取為1.1。
隱寫算法首要性能要求是隱寫視頻必須具備不可感知性。通常,可以從主觀和客觀兩個方面進行測試,從客觀指標進行不可感知測量。常見的評價指標包括峰值信噪比PSNR和結構相似性SSIM,其定義如式(12)和式(13)所示。
(12)
(13)
式中:MSE(x,y)為均方誤差;MAX為像素的最大值255;μx、σx和μy、σy分別為圖像x、y的均值和方差;σxy為協(xié)方差;c1、c2為常數(shù)。
為了更加清晰比較隱寫視頻的PSNR和SSIM相對于原始視頻的變化程度,使用DPSNR和DSSIM表示其變化率,定義為
(14)
(15)
式中:o為未壓縮的視頻序列;c和s分別為原始壓縮視頻和隱寫視頻。
如圖5所示,給出了對比算法和本文算法在嵌入率CMVR={0.2,0.4}下,部分隱寫視頻的PSNR變化和SSIM變化情況。其中橫坐標1~6分別代表視頻序列highway、night、bridge、crew、football和walk的序號。可以看出,不同隱寫算法對PSNR和SSIM影響程度存在差異??傮w來說,文獻[5]算法和文獻[6]算法表現(xiàn)較差,文獻[7]算法和文獻[11]算法次之,本文算法和文獻[10]算法保持一致。在CMVR=0.2時,DPSNR和DSSIM不超過0.25%和0.20%;在較高嵌入率CMVR=0.4時,本文算法在5號(football)序列表現(xiàn)略差于文獻[10]算法,但DPSNR還是DSSIM都好于其他對比算法。因此,本文算法對視頻進行隱寫后能夠保持較高的視覺質(zhì)量,滿足隱寫不可感知性的要求。
圖5 部分測試視頻PSNR和SSIM變化Fig.5 PSNR and SSIM variationfor parts of sequences
隱寫不僅對隱寫視頻視覺質(zhì)量會產(chǎn)生影響,由于修改運動矢量可能導致殘差增大,需要更多的比特對量化殘差進行編碼,因此還會造成視頻比特率(bit rate,BR)的增加。因此,定義比特率增長(BR increment,BRI)率來刻畫這一變化,其定義為
(16)
式(16)中:BRc和BRs分別為隱前后視頻的比特率。由于視頻編碼器會動態(tài)的改變殘差塊的量化參數(shù)以調(diào)節(jié)壓縮強度,從而達到以目標比特率進行壓縮的要求。因此,為了有效地反映出隱寫算法對視頻比特率的影響,排除編碼器動態(tài)改變壓縮強度造成的比特率波動,在算法進行信息嵌入時,將量化參數(shù)統(tǒng)一設置為4,保證所有宏塊的殘差以相同的壓縮強度進行壓縮。
表1給出了3.2節(jié)中的6段視頻序列使用不同隱寫算法以嵌入率CMVR={0.2,0.4}進行隱寫后,比特率相比于未隱寫視頻的比特率增長情況。可以看出,除文獻[10]算法外,本文算法的比特率表現(xiàn)好于其他對比算法。在低嵌入率CMVR=0.2下,本文算法的比特率增長控制在0.31%~0.70%,與文獻[10]算法0.17%~1.27%的增長相比,基本一致。在高嵌入率CMVR=0.4條件下,本文算法在4號序列(bridge)上的比特增長最高為2.35%,與文獻[11]算法的2.03%和文獻[10]算法的2.16%不相上下,但在其他視頻序列上,本文算法的比特增長僅次于文獻[10]算法,優(yōu)于其他對比算法。因此,本文算法對視頻的比特率并不會產(chǎn)生明顯的影響。
表1 比特率增長對比
基于前文分析,運動矢量隱寫會導致運動矢量的相關性和最優(yōu)性的異常,可能被已知或潛在的隱寫分析方法所檢測,導致隱蔽通信這一事實暴露。因此,隱寫算法應該具備一定的抗隱寫檢測能力以保證算法的安全性。本節(jié)進行了隱寫檢測實驗,通過在不同比特率BR={500 Kb/s,1 000 Kb/s}壓縮下使用不同嵌入率CMVR={0.1,0.2,0.3,0.4}對視頻進行隱寫。分別使用針對運動矢量局部最優(yōu)性異常AoSO[12](18維)和相鄰相關性異常[13](392維)的特征提取器對隱寫視頻進行特征提取,使用LibSVM[17]工具箱對特征進行分類模型的訓練,兩種特征訓練時都采用高斯核進行分類器的訓練。
為了保證足夠的訓練和測試樣本,壓縮編碼時僅將第一幀設置為關鍵幀,因此每個模型的訓練和測試共有7 886(32×239+149+89)幀可以進行隱寫特征的提取。首先將34段YUV視頻隨機等分為訓練樣本和測試樣本,并將訓練樣本和測試樣本在比特率BR下進行壓縮生成原始視頻。然后,隱寫算法在BR和CMVR的不同組合下進行隱寫,生成隱寫視頻。最后提取所有視頻的最優(yōu)性異常特征AoSO[12]和相關性異常特征[13],對算法在不同嵌入條件下(即比特率和嵌入率的不同組合)的訓練集進行單獨的分類模型訓練,共得到96(2×2×4×6)分類器模型。得到模型后,對相應的測試集進行分類,以測試相應算法的抗隱寫檢測能力。
如圖6所示,給出了不同隱寫算法在比特率BR={500 Kb/s、1 000 Kb/s},嵌入率CMVR=0.1條件下的最優(yōu)性異常特征分類器和相關性異常特征分類器的接受者操作特征曲線(receiver operating characteristic curve,ROC)。ROC曲線越偏離隨機猜測曲線(圖6中灰色的對角線),則表明對應的隱寫算法越容易被檢測,反之則表明隱寫算法能夠更好的保持視頻的相應特征,不容易被檢測,隱寫安全性越高。
圖6 CMVR=0.1時分類模型的ROC曲線Fig.6 ROC curve of classification model while CMVR=0.1
可以看出,在嵌入率CMVR=0.1時,本文算法無論在比特率為500 Kb/s還是1 000 Kb/s,使用相關性異常[13]特征分類模型都不能有效區(qū)分隱寫視頻和原始視頻,本文算法抗相關性異常特征檢測的結果明顯優(yōu)于所有對比算法。在抗最優(yōu)性異常[12]特征檢測時,本文算法在低比特率下,和文獻[10]算法具有相同的性能表現(xiàn);在BR=1 000 Kb/s時,抗最優(yōu)性異常[12]特征檢測表現(xiàn)略次于文獻[10]算法。綜合來看,本文算法在抗最優(yōu)性異常檢測和相關性異常特征檢測方面好于其他對比算法,因此本文算法具有較好的抗隱寫分析能力,算法安全性較好。
圖7 抗隱寫分析檢測錯誤率Fig.7 Detection error rate against anti-steganalysis
為了更加詳細對算法在不同嵌入條件下的抗隱寫分析能力進行對比,圖7給出了4種嵌入率和2種比特率下抗最優(yōu)性異常[12]特征和相關性異常[13]特征檢測的表現(xiàn),縱坐標為隱寫算法被隱寫特征檢測的錯誤率,其值越高代表該算法抵抗相應的隱寫分析能力越強??梢钥闯?,本文算法在抗相關性異常特征檢測時,無論在何種嵌入率和比特率之下,都具有最高的檢測錯誤率,即算法抗相關性異常檢測表現(xiàn)最優(yōu),算法能保持運動矢量的相鄰相關性,即本文提出的對相鄰相關性小的分量進行信息嵌入的思路是正確的。在較高的比特率下,算法的抗隱寫檢測表現(xiàn)相對更好。在抗最優(yōu)性異常特征檢測時,本文算法在低嵌入率下能夠保持與文獻[10]算法一致的檢測錯誤率,但隨著嵌入率的提升,算法抗最優(yōu)性異常特征檢測的表現(xiàn)相比于文獻[10]算法有一定的差距,但仍然優(yōu)于其他對比算法。
由于視頻本身存在大量的運動矢量,完全可以滿足信息的嵌入容量要求,通常為了提高隱蔽通信的安全性,算法一般不進行高強度的信息嵌入。因此,本文雖然在高嵌入條件下抗局部最優(yōu)性異常特征檢測表現(xiàn)弱于文獻[10]的算法,但仍然優(yōu)于其他所有對比算法,因此具有較強的實用性。
提出了一種能夠保持運動矢量相鄰相關性的視頻隱寫算法。首先證明隱寫前后的運動分量分布的KL散度與未隱寫運動分量的相鄰相關性存在一定程度的正相關,然后引入歸一化互信息對分量相鄰相關性進行衡量,同時為了嵌入盡量保持運動矢量的局部最優(yōu)性,定義宏塊復雜度作為失真代價函數(shù),并基于最小化失真框架和STC進行隱寫,最后進行LSB匹配修改。
本文算法完全滿足不可感知性要求,PSNR和SSIM降低最壞不超過0.4%,一般低于0.25%;比特率增加控制在0.29%~2.35%;抗相關性異常隱寫分析表現(xiàn)優(yōu)于對比算法,抗最優(yōu)性異常隱寫分析具有較高的錯誤率??傮w來看,本文算法性能指標均衡,具有較高的隱寫安全性和較強的實用性。