專利名稱:一種基于預(yù)測模式的h.264/avc視頻信息隱藏方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種視頻的信息隱藏技術(shù),尤其是涉及一種基于預(yù)測模式的H.264/AVC 視頻信息隱藏方法。
背景技術(shù):
信息隱藏技術(shù)作為數(shù)字媒體的版權(quán)保護(hù)、內(nèi)容認(rèn)證以及隱秘通信的有效手段,已經(jīng) 成為多媒體信息安全領(lǐng)域研究的熱點。信息隱藏技術(shù)是利用人類感知特性及數(shù)字媒體自 身的冗余,將隱秘信息或版權(quán)信息嵌入到宿主載體信號中,宿主載體信號可以是圖像、 音頻、視頻、文本等等。與加密技術(shù)相比,信息隱藏技術(shù)除通信雙方以外的任何第三方 并不知道秘密通信的存在,因而具有更大的隱蔽性和安全性。
目前,絕大多數(shù)的視頻信息隱藏方法是在未壓縮的視頻載體中進(jìn)行,這類視頻信息 隱藏方法不能有效地抵抗壓縮攻擊,即未壓縮的視頻載體嵌入隱秘信息后再經(jīng)過壓縮編 碼后將無法正確地提取出隱秘信息;另一方面,由于未壓縮的視頻載體往往數(shù)據(jù)量巨大, 這樣對其的存儲和傳輸造成了極大的不便,因此目前數(shù)字視頻載體大都是以壓縮編碼的
格式出現(xiàn),對壓縮的視頻載體如果仍使用這類應(yīng)用于未壓縮的視頻載體的信息隱藏方
法,勢必需要先將壓縮的視頻載體從壓縮域還原到未壓縮域,然后才能進(jìn)行隱秘信息的
嵌入和提取,這將使這類視頻信息隱藏方法的計算復(fù)雜度和計算量顯著增加,且也難以
滿足實時性方面的要求。
為解決上述應(yīng)用于未壓縮的視頻載體的信息隱藏方法存在的缺陷,相關(guān)研究人員開
始了針對壓縮視頻的信息隱藏技術(shù)的研究,研究得出的壓縮視頻的信息隱藏方法中絕大 多數(shù)是通過調(diào)整DCT (Discrete Cosine Transform,離散余弦變換)系數(shù)和運動矢量來嵌 入隱秘信息的。然而,具有高效壓縮編碼性能的&264/八¥(:視頻壓縮編碼標(biāo)準(zhǔn)的出現(xiàn)大 大增加了隱秘信息嵌入和提取的難度,預(yù)測殘差數(shù)據(jù)經(jīng)DCT變換和量化后,非零DCT 系數(shù)稀少,且非零DCT系數(shù)幅值偏小,通過修改DCT系數(shù)進(jìn)行隱秘信息嵌入的方法很 難適用于H.264/AVC標(biāo)準(zhǔn)的視頻載體。為此,研究者也探索基于H.264/AVC視頻壓縮 編碼標(biāo)準(zhǔn)新特性的視頻信息隱藏技術(shù),其中一類方法是通過修改IPCM(Intra-frame Pulse Code Modulation)宏塊中的亮度和色度樣本低比特位來嵌入隱秘信息,但是IPCM宏塊 的個數(shù)非常少,這樣使得隱秘信息的嵌入容量較小,若強制將某些宏塊進(jìn)行IPCM編碼, 則會降低編碼效率;另外一些方法是通過限定幀間或幀內(nèi)的宏塊類型來嵌入隱秘信息,
9這類方法的隱秘信息隱藏容量較小,即每個宏塊只能嵌入l比特位信息,且宏塊類型的 改變將會對視頻質(zhì)量和編碼碼率產(chǎn)生較大的影響。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種能夠與H.264/AVC視頻壓縮編碼標(biāo)準(zhǔn)相兼 容,并具有較高的信息隱藏容量,且能夠有效保證隱秘信息的安全性和不可感知性的基 于預(yù)測模式的H.264/AVC視頻信息隱藏方法。
本發(fā)明解決上述技術(shù)問題所采用的技術(shù)方案為 一種基于預(yù)測模式的H.264/AVC視 頻信息隱藏方法,R264/AVC視頻主要由I幀圖像、B幀圖像和P幀圖像組成,所述的 I幀圖像包括至少一個I片,所述的B幀圖像包括至少一個B片,所述的P幀圖像包括 至少一個P片,所述的I片主要由若干個I宏塊組成,所述的B片主要由若干個B宏塊 和若干個I宏塊組成,所述的P片主要由若干個P宏塊和若干個I宏塊組成,所述的I 宏塊的編碼模式分為Intra—4x4和Intra_16xl6兩類,Intra_4x4編碼模式用數(shù)字9標(biāo)識, Intra—16x16編碼模式用數(shù)字10標(biāo)識,當(dāng)所述的I宏塊使用Intra—44編碼模式時,所述 的I宏塊分為16個4x4亮度塊,所述的4x4亮度塊具有DC預(yù)測模式和八種方向預(yù)測 模式,所述的DC預(yù)測模式用數(shù)字2標(biāo)識,所述的八種方向預(yù)測模式包括垂直、水平、 下左對角線、下右對角線、右垂直、下水平、左垂直和上水平方向預(yù)測模式,所述的垂 直方向預(yù)測模式用數(shù)字O標(biāo)識,所述的水平方向預(yù)測模式用數(shù)字1標(biāo)識,所述的下左對 角線方向預(yù)測模式用數(shù)字3標(biāo)識,所述的下右對角線方向預(yù)測模式用數(shù)字4標(biāo)識,所述 的右垂直方向預(yù)測模式用數(shù)字5標(biāo)識,所述的下水平方向預(yù)測模式用數(shù)字6標(biāo)識,所述 的左垂直方向預(yù)測模式用數(shù)字7標(biāo)識,所述的上水平方向預(yù)測模式用數(shù)字8標(biāo)識,所述 的B宏塊的編碼模式分為DIRECT、 Inter—16x16、 Inter—16x 8、 Inter—8x16及Inter—8x8 五類,所述的DIRECT編碼模式用數(shù)字0標(biāo)識,所述的Inter—16x16編碼模式用數(shù)字1 標(biāo)識,所述的Inter—16x8編碼模式用數(shù)字2標(biāo)識,所述的Inter—8><16編碼模式用數(shù)字3 標(biāo)識,所述的Inter—8x8編碼模式用數(shù)字8標(biāo)識,所述的P宏塊的編碼模式分為SKIP、 Inter—16x16、 Inter—16x8及Inter—8x16、 Inter—8x8五類,所述的SKIP編碼模式用數(shù)字0 標(biāo)識,所述的Inter_16xl6編碼模式用數(shù)字1標(biāo)識,所述的Inter—16x8編碼模式用數(shù)字2 標(biāo)識,所述的Inter—8x16編碼模式用數(shù)字3標(biāo)識,所述的Inter—8><8編碼模式用數(shù)字8 標(biāo)識,基于預(yù)測模式的H.264/AVC視頻信息隱藏方法包括以下步驟
①-l、在隱秘信息嵌入端,對于當(dāng)前需嵌入隱秘信息的R264/AVC視頻以宏塊為單 位進(jìn)行隱秘信息的嵌入和編碼,定義當(dāng)前正在處理的宏塊為當(dāng)前宏塊,判斷當(dāng)前宏塊是 否屬于I片,如果是,則繼續(xù)執(zhí)行,否則,執(zhí)行步驟①-8;
①-2、判斷當(dāng)前宏塊的編碼模式為Intra一4x4編碼模式還是Intra—16"6編碼模式,如果當(dāng)前宏塊的編碼模式為Intra—16x16編碼模式,則對當(dāng)前宏塊不進(jìn)行隱秘信息的嵌 入,然后利用IntraJ6xl6編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-ll;如果 當(dāng)前宏塊的編碼模式為Intra_4x4編碼模式,則先對當(dāng)前宏塊中的16個4X4亮度塊進(jìn) 行編號,對每個4X4亮度塊設(shè)置一個用于標(biāo)志各個4X4亮度塊的預(yù)測模式的模式標(biāo)志
p"vjntra4x4—prW—mode ,然后隨機選定一個用于唯一確定一個混沌序列的初始值 &,并保存初始值^,利用初始值^生成一個長度為16的第一混沌序列S,將 第一混沌序列S中的每個元素乘以16并向下取整,得到一個取值范圍在[1,16]的 第一整數(shù)序列&,再從第一整數(shù)序列&中選取"個互不相等的元素,得到第一下
標(biāo)序列&,^ ,利用第 一 下標(biāo)序列Sm(fex從當(dāng)前宏塊中選擇與第 一 下標(biāo)序列中的
各個元素相對應(yīng)的4x4亮度塊,并將所選擇的4x4亮度塊作為隱藏塊,其中,12 w S16 , 再繼續(xù)執(zhí)行;
①-3、定義當(dāng)前宏塊中當(dāng)前待處理的4X4亮度塊為當(dāng)前4X4亮度塊,定義與當(dāng)前 4X4亮度塊相鄰且位于當(dāng)前4X4亮度塊左方的4x4亮度塊為左相鄰塊,定義與當(dāng)前4 X4亮度塊相鄰且位于當(dāng)前4X4亮度塊上方的4x4亮度塊為上相鄰塊,獲取當(dāng)前4X4 亮度塊采用的預(yù)測模式和最可能模式M戶M,具體過程為a.首先遍歷當(dāng)前4X4亮度 塊具有的DC預(yù)測模式和八種方向預(yù)測模式,計算當(dāng)前4X4亮度塊在各個預(yù)測模式下 的率失真開銷,并保存計算得到的各個率失真開銷,然后按大小順序?qū)Ω鱾€率失真開銷 進(jìn)行排序,將率失真開銷最小的預(yù)測模式確定為當(dāng)前4X4亮度塊的最優(yōu)預(yù)測模式
—^mode ,將率失真開銷次小的預(yù)測模式確定為當(dāng)前4X4亮度塊的次優(yōu)預(yù)測模式,
再將當(dāng)前4X4亮度塊的最優(yōu)預(yù)測模式6W—^mode作為當(dāng)前4X4亮度塊釆用的預(yù)測模
式;b.判斷當(dāng)前4X4亮度塊的左相鄰塊和上相鄰塊是否存在,當(dāng)當(dāng)前4X4亮度塊僅存 在左相鄰塊或僅存在上相鄰塊或左相鄰塊和上相鄰塊均不存在時,當(dāng)前4X4亮度塊的 最可能模式M戶M為DC預(yù)測模式,當(dāng)當(dāng)前4X4亮度塊的左相鄰塊和上相鄰塊均存在時, 根據(jù)當(dāng)前4X4亮度塊的左相鄰塊和上相鄰塊采用的預(yù)測模式,計算當(dāng)前4X4亮度塊的
最可能模式MPM-min(M。,M^,其中,M。為當(dāng)前4X4亮度塊的左相鄰塊采用的預(yù)
測模式,AfA為當(dāng)前4 X 4亮度塊的上相鄰塊采用的預(yù)測模式;
①-4、判斷當(dāng)前4X4亮度塊的最優(yōu)預(yù)測模式6eW —z;pmode與最可能模式Jl/戶M是否 相同,如果相同,則對當(dāng)前4X4亮度塊不進(jìn)行隱秘信息的嵌入,并將當(dāng)前4X4亮度塊的模式標(biāo)志; wv—intra4x4—p"c/ —mode置為1,保持當(dāng)前4X4亮度塊采用的預(yù)測模
式不變,然后利用當(dāng)前4X4亮度塊采用的預(yù)測模式對當(dāng)前4X4亮度塊進(jìn)行編碼,再將 下一個待處理的4X4亮度塊作為當(dāng)前4X4亮度塊,返回步驟①-3繼續(xù)執(zhí)行,否則,將
當(dāng)前4X4亮度塊的模式標(biāo)志/wev—intra4x4—jwed—mode置為0,并繼續(xù)執(zhí)行;
①-5、判斷當(dāng)前4X4亮度塊是否為隱藏塊,如果是,則對當(dāng)前4X4亮度塊進(jìn)行隱 秘信息的嵌入,并繼續(xù)執(zhí)行,否則,對當(dāng)前4X4亮度塊不進(jìn)行隱秘信息的嵌入,并保 持當(dāng)前4X4亮度塊采用的預(yù)測模式不變,然后利用當(dāng)前4X4亮度塊采用的預(yù)測模式對 當(dāng)前4X4亮度塊進(jìn)行編碼,再將下一個待處理的4X4亮度塊作為當(dāng)前4X4亮度塊, 返回步驟①-3繼續(xù)執(zhí)行;
①-6、根據(jù)待嵌入的隱秘信息中當(dāng)前需嵌入的比特值對當(dāng)前4X4亮度塊采用的預(yù) 測模式進(jìn)行修改,具體過程為判斷當(dāng)前需嵌入的比特值為l還是0,如果當(dāng)前需嵌入 的比特值為1,則再判斷當(dāng)前4X4亮度塊采用的預(yù)測模式的標(biāo)識為奇數(shù)還是0或偶數(shù), 當(dāng)當(dāng)前4X4亮度塊采用的預(yù)測模式的標(biāo)識為奇數(shù)時,保持當(dāng)前4X4亮度塊采用的預(yù)測 模式不變,然后利用當(dāng)前4X4亮度塊采用的預(yù)測模式對當(dāng)前4X4亮度塊進(jìn)行編碼,再 繼續(xù)執(zhí)行步驟①-7,當(dāng)當(dāng)前4X4亮度塊采用的預(yù)測模式的標(biāo)識為O或偶數(shù)時,判斷當(dāng) 前4X4亮度塊的次優(yōu)預(yù)測模式的標(biāo)識為奇數(shù)還是0或偶數(shù),如果當(dāng)前4X4亮度塊的次 優(yōu)預(yù)測模式的標(biāo)識為奇數(shù),則將當(dāng)前4X4亮度塊采用的預(yù)測模式從最優(yōu)預(yù)測模式修改 為次優(yōu)預(yù)測模式,然后利用次優(yōu)預(yù)測模式對當(dāng)前4X4亮度塊進(jìn)行編碼,再繼續(xù)執(zhí)行步 驟①-7,如果當(dāng)前4X4亮度塊的次優(yōu)預(yù)測模式的標(biāo)識為0或偶數(shù),則按序?qū)β适д骈_ 銷大于次優(yōu)預(yù)測模式的率失真開銷對應(yīng)的預(yù)測模式進(jìn)行判斷,直至獲得一個標(biāo)識為奇數(shù) 的預(yù)測模式,然后將當(dāng)前4X4亮度塊采用的預(yù)測模式從最優(yōu)預(yù)測模式修改為獲得的標(biāo) 識為奇數(shù)的預(yù)測模式,然后利用獲得的標(biāo)識為奇數(shù)的預(yù)測模式對當(dāng)前4X4亮度塊進(jìn)行 編碼,再繼續(xù)執(zhí)行步驟①-7;如果當(dāng)前需嵌入的比特值為O,則再判斷當(dāng)前4X4亮度塊 采用的預(yù)測模式的標(biāo)識為奇數(shù)還是0或偶數(shù),當(dāng)當(dāng)前4X4亮度塊采用的預(yù)測模式的標(biāo) 識為O或偶數(shù)時,保持當(dāng)前4X4亮度塊采用的預(yù)測模式不變,然后利用當(dāng)前4X4亮度 塊采用的預(yù)測模式對當(dāng)前4X4亮度塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-7,當(dāng)當(dāng)前4X4亮 度塊采用的預(yù)測模式的標(biāo)識為奇數(shù)時,判斷當(dāng)前4X4亮度塊的次優(yōu)預(yù)測模式的標(biāo)識為 奇數(shù)還是0或偶數(shù),如果當(dāng)前4X4亮度塊的次優(yōu)預(yù)測模式的標(biāo)識為0或偶數(shù),則將當(dāng) 前4X4亮度塊采用的預(yù)測模式從最優(yōu)預(yù)測模式修改為次優(yōu)預(yù)測模式,然后利用次優(yōu)預(yù) 測模式對當(dāng)前4X4亮度塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-7,如果當(dāng)前4X4亮度塊的次 優(yōu)編碼模式的標(biāo)識為奇數(shù),則按序?qū)β适д骈_銷大于次優(yōu)預(yù)測模式的率失真開銷對應(yīng)的 預(yù)測模式進(jìn)行判斷,直至獲得一個標(biāo)識為0或偶數(shù)的預(yù)測模式,然后將當(dāng)前4X4亮度 塊采用的預(yù)測模式從最優(yōu)預(yù)測模式修改為獲得的標(biāo)識為0或偶數(shù)的預(yù)測模式,然后利用獲得的標(biāo)識為0或偶數(shù)的預(yù)測模式對當(dāng)前4X4亮度塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-7;
①-7、將下一個待處理的4X4亮度塊作為當(dāng)前4X4亮度塊,然后返回執(zhí)行步驟① -3,直至處理完當(dāng)前宏塊中所有的4X4亮度塊,再繼續(xù)執(zhí)行步驟①-ll;
①-8、判斷當(dāng)前宏塊是否屬于B片,如果是,則繼續(xù)執(zhí)行,否則,執(zhí)行步驟①-10;
①-9、計算當(dāng)前宏塊在各個編碼模式下的率失真開銷,并保存計算得到的各個率失 真開銷,按大小順序?qū)Ω鱾€率失真開銷進(jìn)行排序,將率失真開銷最小的編碼模式確定為 當(dāng)前宏塊的最優(yōu)編碼模式,將率失真開銷次小的編碼模式確定為當(dāng)前宏塊的次優(yōu)編碼模 式,然后將當(dāng)前宏塊的最優(yōu)編碼模式作為當(dāng)前宏塊采用的編碼模式,再判斷當(dāng)前宏塊采 用的編碼模式是否為DIRECT編碼模式,如果是,則對當(dāng)前宏塊不進(jìn)行隱秘信息的嵌入, 然后利用當(dāng)前宏塊采用的編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-U,否則, 再判斷待嵌入的隱秘信息中當(dāng)前需嵌入的比特值為1還是O,如果當(dāng)前需嵌入的比特值 為1,則判斷當(dāng)前宏塊采用的編碼模式的標(biāo)識為奇數(shù)還是偶數(shù),當(dāng)當(dāng)前宏塊采用的編碼 模式的標(biāo)識為奇數(shù)時,保持當(dāng)前宏塊采用的編碼模式不變,然后利用當(dāng)前宏塊采用的編 碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11,當(dāng)當(dāng)前宏塊采用的編碼模式的標(biāo) 識為偶數(shù)時,判斷當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為奇數(shù)還是偶數(shù),如果當(dāng)前宏塊的次 優(yōu)編碼模式的標(biāo)識為奇數(shù),則將當(dāng)前宏塊采用的編碼模式從最優(yōu)編碼模式修改為次優(yōu)編 碼模式,然后利用當(dāng)前宏塊的次優(yōu)編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟① -11,如果當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為偶數(shù),則按序?qū)β适д骈_銷大于次優(yōu)編碼 模式的率失真開銷對應(yīng)的編碼模式進(jìn)行判斷,直至獲得一個標(biāo)識為奇數(shù)的編碼模式,然 后將當(dāng)前宏塊采用的編碼模式從最優(yōu)編碼模式修改為獲得的標(biāo)識為奇數(shù)的編碼模式,然 后利用獲得的標(biāo)識為奇數(shù)的編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-U,如 果當(dāng)前需嵌入的比特值為0,則判斷當(dāng)前宏塊采用的編碼模式的標(biāo)識為奇數(shù)還是偶數(shù), 當(dāng)當(dāng)前宏塊采用的編碼模式的標(biāo)識為偶數(shù)時,保持當(dāng)前宏塊采用的編碼模式不變,然后 利用當(dāng)前宏塊采用的編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11,當(dāng)當(dāng)前宏 塊采用的編碼模式的標(biāo)識為奇數(shù)時,判斷當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為奇數(shù)還是偶 數(shù),如果當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為偶數(shù),則將當(dāng)前宏塊采用的編碼模式從最優(yōu) 編碼模式修改為次優(yōu)編碼模式,然后利用當(dāng)前宏塊的次優(yōu)編碼模式對當(dāng)前宏塊進(jìn)行編 碼,再繼續(xù)執(zhí)行步驟①-11,如果當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為奇數(shù),則按序?qū)β?br>
失真開銷大于次優(yōu)編碼模式的率失真開銷對應(yīng)的編碼模式進(jìn)行判斷,直至獲得一個標(biāo)識 為偶數(shù)的編碼模式,然后將當(dāng)前宏塊采用的編碼模式從最優(yōu)編碼模式修改為獲得的標(biāo)識 為偶數(shù)的編碼模式,然后利用獲得的標(biāo)識為偶數(shù)的編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼 續(xù)執(zhí)行步驟①-ll;
①-10、計算當(dāng)前宏塊在各個編碼模式下的率失真開銷,并保存計算得到的各個率 失真開銷,按大小順序?qū)Ω鱾€率失真開銷進(jìn)行排序,將率失真開銷最小的編碼模式確定
13為當(dāng)前宏塊的最優(yōu)編碼模式,將率失真開銷次小的編碼模式確定為當(dāng)前宏塊的次優(yōu)編碼 模式,然后將當(dāng)前宏塊的最優(yōu)編碼模式作為當(dāng)前宏塊采用的編碼模式,再判斷當(dāng)前宏塊 采用的編碼模式是否為SKIP編碼模式,如果是,則對當(dāng)前宏塊不進(jìn)行隱秘信息的嵌入,
然后利用當(dāng)前宏塊采用的編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11,否則,
再判斷待嵌入的隱秘信息中當(dāng)前需嵌入的比特值為1還是0,如果當(dāng)前需嵌入的比特值 為1,則判斷當(dāng)前宏塊采用的編碼模式的標(biāo)識為奇數(shù)還是偶數(shù),當(dāng)當(dāng)前宏塊采用的編碼 模式的標(biāo)識為奇數(shù)時,保持當(dāng)前宏塊采用的編碼模式不變,然后利用當(dāng)前宏塊采用的編 碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11,當(dāng)當(dāng)前宏塊采用的編碼模式的標(biāo) 識為偶數(shù)時,判斷當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為奇數(shù)還是偶數(shù),如果當(dāng)前宏塊的次 優(yōu)編碼模式的標(biāo)識為奇數(shù),則將當(dāng)前宏塊采用的編碼模式從最優(yōu)編碼模式修改為次優(yōu)編 碼模式,然后利用當(dāng)前宏塊的次優(yōu)編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟① -11,如果當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為偶數(shù),則按序?qū)β适д骈_銷大于次優(yōu)編碼 模式的率失真開銷對應(yīng)的編碼模式進(jìn)行判斷,直至獲得一個標(biāo)識為奇數(shù)的編碼模式,然
后將當(dāng)前宏塊采用的編碼模式從最優(yōu)編碼模式修改為獲得的標(biāo)識為奇數(shù)的編碼模式,然 后利用獲得的標(biāo)識為奇數(shù)的編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-U,如 果當(dāng)前需嵌入的比特值為0,則判斷當(dāng)前宏塊采用的編碼模式的標(biāo)識為奇數(shù)還是偶數(shù), 當(dāng)當(dāng)前宏塊采用的編碼模式的標(biāo)識為偶數(shù)時,保持當(dāng)前宏塊采用的編碼模式不變,然后 利用當(dāng)前宏塊采用的編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11,當(dāng)當(dāng)前宏 塊采用的編碼模式的標(biāo)識為奇數(shù)時,判斷當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為奇數(shù)還是偶 數(shù),如果當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為偶數(shù),則將當(dāng)前宏塊采用的編碼模式從最優(yōu) 編碼模式修改為次優(yōu)編碼模式,然后利用當(dāng)前宏塊的次優(yōu)編碼模式對當(dāng)前宏塊進(jìn)行編 碼,再繼續(xù)執(zhí)行步驟①-11,如果當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為奇數(shù),則按序?qū)β?失真開銷大于次優(yōu)編碼模式的率失真開銷對應(yīng)的編碼模式進(jìn)行判斷,直至獲得一個標(biāo)識 為偶數(shù)的編碼模式,然后將當(dāng)前宏塊采用的編碼模式從最優(yōu)編碼模式修改為獲得的標(biāo)識 為偶數(shù)的編碼模式,然后利用獲得的標(biāo)識為偶數(shù)的編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼 續(xù)執(zhí)行步驟①-ll;
①-11、將下一個待處理的宏塊作為當(dāng)前宏塊,并返回步驟①-l繼續(xù)執(zhí)行,直至待 嵌入的隱秘信息中所有的比特值均嵌入完成,得到含隱秘信息的H.264/AVC視頻碼流;
① -12、隱秘信息嵌入端將含隱秘信息的H.264/AVC視頻碼流發(fā)送給隱秘信息提取
端;
② -l、在隱秘信息提取端,隱秘信息提取端利用H.264/AVC標(biāo)準(zhǔn)解碼器對其接收到 的含隱秘信息的H.264/AVC視頻碼流以宏塊為單位進(jìn)行解碼;
②-2、定義當(dāng)前解碼得到的宏塊為當(dāng)前宏塊,判斷當(dāng)前宏塊是否屬于I片,如果是, 則繼續(xù)執(zhí)行,否則,執(zhí)行步驟②-8;②-3、判斷當(dāng)前宏塊的編碼模式為Intra—4x4編碼模式還是Intra_16><16編碼模式, 如果當(dāng)前宏塊的編碼模式為Intra—16x16編碼模式,則對當(dāng)前宏塊不進(jìn)行隱秘信息的提 取,再執(zhí)行步驟②-ll;如果當(dāng)前宏塊的編碼模式為Intra—4x4編碼模式,則先對當(dāng)前宏
塊中的16個4X4亮度塊進(jìn)行編號,然后利用在隱秘信息嵌入端保存的初始值i^生成 一個與隱秘信息嵌入端的第一混沌序列^相同的第二混沌序列《,將第二混沌序 列《中的每個元素乘以16并向下取整,得到一個取值范圍在[1,16]的第二整數(shù)序 列S2 ,再從第二整數(shù)序列S2中選取與隱秘信息嵌入端的第一下標(biāo)序列中的元 素位置相對應(yīng)的w個互不相等的元素,得到第二下標(biāo)序列S',利用第二下標(biāo)序
列S'從當(dāng)前宏塊中選擇與第第二下標(biāo)序列S'中的各個元素相對應(yīng)的4x4亮度
塊,并將所選擇的4x4亮度塊作為判斷塊,其中,12"216,再繼續(xù)執(zhí)行;
②-4、定義當(dāng)前宏塊中當(dāng)前待處理的4X4亮度塊為當(dāng)前4X4亮度塊,判斷當(dāng)前4 X4亮度塊是否為判斷塊,如果是,則繼續(xù)執(zhí)行,否則,對當(dāng)前4X4亮度塊不進(jìn)行隱秘 信息的提取,并將下一個待處理的4X4亮度塊作為當(dāng)前4X4亮度塊,再重復(fù)執(zhí)行該步 驟;
②-5、判斷當(dāng)前4X4亮度塊的模式標(biāo)志,ev—intra4x4——mode為1還是0,
如果為l,則對當(dāng)前4X4亮度塊不進(jìn)行隱秘信息的提取,并執(zhí)行步驟②-7,如果為0, 則繼續(xù)執(zhí)行;
②-6、判斷當(dāng)前4X4亮度塊采用的預(yù)測模式的標(biāo)識為奇數(shù)還是偶數(shù),如果為奇數(shù), 則提取出嵌入的比特值l,然后執(zhí)行步驟②-7,如果為偶數(shù),則提取出嵌入的比特值0, 然后執(zhí)行步驟②-7;
②-7、將下一個待處理的4X4亮度塊作為當(dāng)前4X4亮度塊,再返回步驟②-4繼續(xù) 執(zhí)行,直至處理完當(dāng)前宏塊中所有的4X4亮度塊,再繼續(xù)執(zhí)行步驟②-ll;
②-8、判斷當(dāng)前宏塊是否屬于B片,如果是,則繼續(xù)執(zhí)行,否則,執(zhí)行步驟②-10;
②-9、判斷當(dāng)前宏塊采用的編碼模式是否為DIRECT編碼模式,如果是,則對當(dāng)前 宏塊不進(jìn)行隱秘信息的提取,然后執(zhí)行步驟②-11,否則,再判斷當(dāng)前宏塊采用的編碼 模式的標(biāo)識為奇數(shù)還是偶數(shù),當(dāng)當(dāng)前宏塊采用的編碼模式的標(biāo)識為奇數(shù)時,提取出嵌入 的比特值l,然后執(zhí)行步驟②-11,當(dāng)當(dāng)前宏塊采用的編碼模式的標(biāo)識為偶數(shù)時,提取出 嵌入的比特值O,然后執(zhí)行步驟②-ll;
②-10、判斷當(dāng)前宏塊采用的編碼模式是否為SKIP編碼模式,如果是,則對當(dāng)前宏 塊不進(jìn)行隱秘信息的提取,然后執(zhí)行步驟②-11,否則,再判斷當(dāng)前宏塊采用的編碼模式的標(biāo)識為奇數(shù)還是偶數(shù),當(dāng)當(dāng)前宏塊采用的編碼模式的標(biāo)識為奇數(shù)時,提取出嵌入的 比特值l,然后執(zhí)行步驟②-U,當(dāng)當(dāng)前宏塊采用的編碼模式的標(biāo)識為偶數(shù)時,提取出嵌 入的比特值0,然后執(zhí)行步驟②-ll;
②-11、將下一個解碼得到的宏塊作為當(dāng)前宏塊,并返回步驟②-2重復(fù)執(zhí)行,直至 提取出含隱秘信息的H.264/AVC視頻碼流中嵌入的所有比特值。
在隱秘信息嵌入端,在嵌入隱秘信息之前先對待嵌入的隱秘信息進(jìn)行加密處理,以
增加攻擊的復(fù)雜度,具體過程為隨機選擇一個初始密鑰值《,并保存初始密鑰值&, 根據(jù)初始密鑰值《并利用Matlab中的randint()函數(shù)產(chǎn)生一個大小與待嵌入的隱秘
信息的大小相同的隨機矩陣,利用該隨機矩陣采用異或方式對待嵌入的隱秘信息 進(jìn)行加密,并采用現(xiàn)有的掃描方式將加密形成的二維矩陣轉(zhuǎn)換為一維序列。
在隱秘信息提取端,在提取出隱秘信息中所有的比特值后將提取出的隱秘信息轉(zhuǎn)換
為二維矩陣,然后根據(jù)保存的初始密鑰值《并利用Matlab中的randint()函數(shù)產(chǎn)生一
個大小與待嵌入的隱秘信息的大小相同的隨機矩陣,利用該隨機矩陣對二維矩陣 進(jìn)行解密,得到原始的隱秘信息。
與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點在于
1) 、對于I片中編碼模式為Intra—4x4的宏塊,在必須改變4X4亮度塊的預(yù)測模式 的情況下,通過將4X4亮度塊的預(yù)測模式從最優(yōu)預(yù)測模式向次優(yōu)預(yù)測模式方向調(diào)制, 對于P片及B片中編碼模式標(biāo)識不為0的宏塊,在必須改變宏塊的編碼模式的情況下, 通過將宏塊的編碼模式從最優(yōu)編碼模式向次優(yōu)編碼模式方向調(diào)制,在保證能夠有效實現(xiàn) 隱秘信息隱藏的同時,可以盡量減小預(yù)測模式或編碼模式的改變對視頻客觀質(zhì)量的影 響;另一方面,由于隱秘信息不僅可以嵌入在編碼模式為Intra_4x4且屬于I片中的I 宏塊中,也可以嵌入在P片和B片中編碼模式標(biāo)識不為O的宏塊中,因而可取得較大的 隱藏容量,同時,用戶可根據(jù)隱藏數(shù)據(jù)量的大小和視覺效果的需要,選擇I片中編碼模 式為Intra—4x4的宏塊中用于嵌入隱秘信息的4><4亮度塊的個數(shù),具有較好的靈活性。
2) 、對于I片中編碼模式為Intra—4x4的宏塊,通過使用混沌序列來選擇嵌入隱秘信 息的位置,由混沌映射對初始值的極端敏感性可知,在沒有得到初始值的情況下,無法 推測出正確的混沌序列,從而不可能定位隱秘信息隱藏的位置,提高了安全性。
3) 、在嵌入隱秘信息之前通過利用初始密鑰值對待嵌入的隱秘信息進(jìn)行加密處理, 這樣使得在初始密鑰值未知的前提下,非授權(quán)者無法獲取嵌入的隱秘信息,增加了攻擊 的復(fù)雜度,提高了安全性。
4) 、隱秘信息的嵌入與提取的實現(xiàn)過程簡單、快速,可以方便地集成在R264/AVC 編碼器中,最終生成的碼流仍可正常解碼;在隱秘信息提取端,隱秘信息的提取過程不 需要原始載體視頻,也無需對含隱秘信息的視頻碼流進(jìn)行完全解碼,只需對各宏塊的預(yù)測模式或編碼模式進(jìn)行解碼即可,具有較高的實時性和實用性。
圖1為根據(jù)JM模型對Intra—4x4編碼模式的宏塊中的16個4X4亮度塊進(jìn)行編號的 示意圖2為在16個4X4亮度塊中確定隱藏塊的過程示意圖; 圖3為隱秘信息嵌入的流程框圖4為QCIF格式的標(biāo)準(zhǔn)測試序列Container的第一幀圖像;
圖5為代表待嵌入的隱秘信息的二值圖像;
圖6為對圖5所示的二值圖像進(jìn)行加密后得到的結(jié)果示意圖7為當(dāng)前4X4亮度塊E與其左相鄰塊A及上相鄰塊B之間的位置示意圖8為解碼測試序列Container的第一幀圖像進(jìn)行編碼后的圖像得到的圖像;
圖9為恢復(fù)的代表隱秘信息的二值圖像。
具體實施例方式
以下結(jié)合附圖實施例對本發(fā)明作進(jìn)一步詳細(xì)描述。
R264/AVC視頻主要由I幀圖像、B幀圖像和P幀圖像組成,I幀圖像包括至少一 個I片,B幀圖像包括至少一個B片,P幀圖像包括至少一個P片,I片包括I宏塊,B 片可包括B宏塊和I宏塊,P片可包括P宏塊和I宏塊,在R264/AVC幀內(nèi)模式中,I 宏塊的編碼模式分為Intra_4x4和Intra_16xl6兩類,Intra_4x4編碼模式用數(shù)字9標(biāo)識, Intra—16x16編碼模式用數(shù)字10標(biāo)識,當(dāng)I宏塊使用Intra—4x4編碼模式時,I宏塊分為 16個4><4亮度塊,4x4亮度塊具有DC預(yù)測模式和八種方向預(yù)測模式,DC預(yù)測模式用 數(shù)字2標(biāo)識,八種方向預(yù)測模式包括垂直、水平、下左對角線、下右對角線、右垂直、 下水平、左垂直和上水平方向預(yù)測模式,垂直方向預(yù)測模式用數(shù)字O標(biāo)識,水平方向預(yù) 測模式用數(shù)字l標(biāo)識,下左對角線方向預(yù)測模式用數(shù)字3標(biāo)識,下右對角線方向預(yù)測模 式用數(shù)字4標(biāo)識,右垂直方向預(yù)測模式用數(shù)字5標(biāo)識,下水平方向預(yù)測模式用數(shù)字6標(biāo) 識,左垂直方向預(yù)測模式用數(shù)字7標(biāo)識,上水平方向預(yù)測模式用數(shù)字8標(biāo)識,在 H.264/AVC幀間模式中,B宏塊的編碼模式分為DIRECT、 Inter—16x16、 Inter_16x8、 Inter—8x16及Inter—8x8五類,DIRECT編碼模式用數(shù)字0標(biāo)識,Inter—16x16編碼模式用 數(shù)字l標(biāo)識,Inter—16x8編碼模式用數(shù)字2標(biāo)識,Inter_8xl6編碼模式用數(shù)字3標(biāo)識, Inter—8x8編碼模式用數(shù)字8標(biāo)識,P宏塊的編碼模式分為SKIP、 Inter—16x16、 Inter_16x8 及Inter—8x16、 Inter—8x8五類,SKIP編碼模式用數(shù)字0標(biāo)識,Inter—16x16編碼模式用
17數(shù)字1標(biāo)識,Inter—16x8編碼模式用數(shù)字2標(biāo)識,Inter—8x16編碼模式用數(shù)字3標(biāo)識, Inter—8x8編碼模式用數(shù)字8標(biāo)識。
本發(fā)明的基于預(yù)測模式的H264/AVC視頻信息隱藏方法,在隱秘信息嵌入端,選擇 在I片中編碼模式為Intra—4x4的宏塊、P片中編碼模式不為SKIP編碼模式的宏塊及B 片中編碼模式不為DIRECT編碼模式的宏塊中進(jìn)行隱秘信息的嵌入;對于I片中編碼模 式為Intra—4x4的宏塊,通過調(diào)整宏塊中16個4x4亮度塊的預(yù)測模式來嵌入隱秘信息, 為了增強隱秘信息的安全性,利用混沌序列來選擇需要隱藏隱秘信息的位置,每個宏塊 中可以隨機選擇多個4x4亮度塊進(jìn)行隱秘信息的嵌入,從而在隱藏隱秘信息容量方面有 很大的靈活性,能夠在視頻感知質(zhì)量和隱藏容量之間得到比較好的平衡;對于P片中編 碼模式不為SKIP編碼模式的宏塊及B片中編碼模式不為DIRECT編碼模式的宏塊,則 直接調(diào)制宏塊的編碼模式來嵌入隱秘信息,即將宏塊的編碼模式的標(biāo)識的奇偶性調(diào)制為 與待嵌入的隱秘信息中當(dāng)前需嵌入的比特值一致;在隱秘信息提取端,根據(jù)解碼得到 宏塊的編碼模式即可實現(xiàn)隱秘信息的提取,可滿足實時性需求。
在描述本發(fā)明的具體實施過程之前,先說明在此具體實施例中采用的原始載體視頻 及待嵌入的隱秘信息。在此具體實施例中原始載體視頻采用QCIF格式的標(biāo)準(zhǔn)測試序列 Container,該測試序列Container的分辨率為176x144,幀率為30幀/秒,圖像組設(shè)定 "IBPBPBPBPB"結(jié)構(gòu),該測試序列Container的第一幀圖像如圖4所示;待嵌入的隱 秘信息采用大小為64x64的二值圖像,如圖5所示。除在此該出的測試序列外,也可采 用QCIF格式的其他測試序列,也可采用其他格式如CIF格式的其他標(biāo)準(zhǔn)測試序列;隱 秘信息也可采用二值隨機序列,采用的二值圖像的大小或二值隨機序列的長度與原始載 體視頻的幀數(shù)、圖像組結(jié)構(gòu)以及視頻圖像的復(fù)雜度等有關(guān),若隱秘信息太大,則不能全 部嵌入。在實際應(yīng)用過程中可根據(jù)實際情況確定, 一般199幀"IBPBPBPBPB"結(jié)構(gòu)的 視頻序列,可采用的隱秘信息大小為4096比特。
在上述說明的基礎(chǔ)上詳細(xì)描述本發(fā)明方法的具體步驟
①-l、在隱秘信息嵌入端,為了提高隱秘通信的安全性,在嵌入隱秘信息之前可先 對待嵌入的隱秘信息進(jìn)行加密處理,這樣能夠增加攻擊的復(fù)雜度,使外界很難進(jìn)行破解。
對待嵌入的隱秘信息進(jìn)行加密處理的具體過程為隨機選擇一個初始密鑰值&,初始 密鑰值&可以是任意數(shù), 一般情況下采用整數(shù),并保存初始密鑰值《,根據(jù)初始
密鑰值&并利用Matlab中的randint()函數(shù)產(chǎn)生一個大小為64x64的隨機矩陣,該
隨機矩陣的大小與待嵌入的隱秘信息的大小(隱秘信息的大小為64x64)相同, 利用該隨機矩陣采用異或方式對待嵌入的隱秘信息進(jìn)行加密,對圖5所示的隱秘 信息進(jìn)行加密后的結(jié)果如圖6所示。同時為了方便隱秘信息的嵌入,采用現(xiàn)有的 掃描方式將加密形成的二維矩陣轉(zhuǎn)換為一維序列,共64x64=4096比特,在此現(xiàn)有的掃描方式可以為按列掃描,也可以是按行掃描,也可以是按對角線的方式進(jìn)行掃描,也可 采用其他現(xiàn)有的成熟的掃描方式。
對待嵌入的隱秘信息進(jìn)行加密后,對于當(dāng)前需嵌入隱秘信息的H.264/AVC視頻以宏 塊為單位進(jìn)行隱秘信息的嵌入和編碼,隱秘信息嵌入的過程如圖3所示。定義當(dāng)前正在 處理的宏塊為當(dāng)前宏塊,判斷當(dāng)前宏塊是否屬于I片,如果是,則繼續(xù)執(zhí)行,否則,執(zhí) 行步驟①-8。
①-2、判斷當(dāng)前宏塊的編碼模式為Intra—4x4編碼模式還是Intra一16x16編碼模式, 如果當(dāng)前宏塊的編碼模式為Intra—16x16編碼模式,則對當(dāng)前宏塊不進(jìn)行隱秘信息的嵌 入,然后利用Intra—16x16編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11。如果 當(dāng)前宏塊的編碼模式為Intra—4x4編碼模式,則先對當(dāng)前宏塊中的16個4X4亮度塊進(jìn) 行編號,編號方式如圖l所示,對每個4X4亮度塊設(shè)置一個用于標(biāo)志各個4X4亮度塊
的預(yù)測模式的模式標(biāo)志;^^一1加^4><4_;^^一1110(1"然后隨機選定一個用于唯一確定 一個混沌序列如Logistic序列的初始值^,初始值A(chǔ)可以是任意數(shù), 一般情況下采 用整數(shù),并保存初始值《2,利用初始值《生成一個長度為16的第一混沌序列^, 將第一混沌序列S,中的每個元素乘以16并向下取整,得到一個取值范圍在[1,16] 的第一整數(shù)序列&,再從第一整數(shù)序列&中選取w個互不相等的元素,得到第一
下標(biāo)序列S,"^,利用第一下標(biāo)序列S,,^從當(dāng)前宏塊中選擇與第一下標(biāo)序列^^中 的各個元素相對應(yīng)的4x4亮度塊,并將所選擇的4x4亮度塊作為隱藏塊,如圖2所示, 再繼續(xù)執(zhí)行。在此,1《"216,具體的"值可根據(jù)需要設(shè)定,"越大,信息隱藏容量 越大,但是碼率也會越大, 一般情況下用戶可以根據(jù)隱藏數(shù)據(jù)量的大小和視覺效果的需 要選擇用于嵌入隱秘信息的4x4亮度塊的個數(shù),具有較好的靈活性;Logistic序列映射
的初始值^可以作為整個信息隱藏的密鑰,在恢復(fù)時,僅需要密鑰即可方便、準(zhǔn)
確的定位隱藏位置。
在此,由于Intra—4x4編碼模式適用于圖像細(xì)節(jié)變化比較明顯的區(qū)域,而 Intra—16x16編碼模式適合于圖像中的平滑區(qū)域,再加上人眼對圖像細(xì)節(jié)區(qū)域敏感度低于 平滑區(qū)域,因此在本發(fā)明中選擇編碼模式為Intra_4x4編碼模式的宏塊進(jìn)行隱秘信息的 嵌入,而編碼模式為Intra—16x16的宏塊則保持不變,即不進(jìn)行隱秘信息的嵌入,直接 進(jìn)行編碼,編碼模式為Intra—16x16的宏塊具有4種預(yù)測模式,在編碼之前先需計算宏 塊在各個預(yù)測模式下的率失真開銷,將率失真開銷最小的預(yù)測模式作為宏塊采用的預(yù)測 模式,利用確定的預(yù)測模式對該宏塊進(jìn)行編碼。步驟①-l中使用了初始密鑰值對要嵌入的隱秘信息進(jìn)行了加密處理,在步驟①-2中 使用了混沌序列來選擇嵌入隱秘信息的位置,兩者的結(jié)合構(gòu)成了雙重密鑰,大大增加了 系統(tǒng)的安全性。
①-3、定義當(dāng)前宏塊中當(dāng)前待處理的4X4亮度塊為當(dāng)前4X4亮度塊,定義與當(dāng)前 4X4亮度塊相鄰且位于當(dāng)前4X4亮度塊左方的4x4亮度塊為左相鄰塊,定義與當(dāng)前4 X4亮度塊相鄰且位于當(dāng)前4X4亮度塊上方的4x4亮度塊為上相鄰塊,獲取當(dāng)前4X4 亮度塊采用的預(yù)測模式和最可能模式MPM,具體過程為a.首先遍歷當(dāng)前4X4亮度 塊具有的DC預(yù)測模式和八種方向預(yù)測模式,即采用全搜索方式,計算當(dāng)前4X4亮度 塊在各個預(yù)測模式下的率失真開銷,并保存計算得到的各個率失真開銷,然后按大小順 序?qū)Ω鱾€率失真開銷進(jìn)行排序,將率失真開銷最小的預(yù)測模式確定為當(dāng)前4X4亮度塊
的最優(yōu)預(yù)測模式6eW—^mode,將率失真開銷次小的預(yù)測模式確定為當(dāng)前4X4亮度塊
的次優(yōu)預(yù)測模式,再將當(dāng)前4X4亮度塊的最優(yōu)預(yù)測模式&W —^mode作為當(dāng)前4X4亮
度塊采用的預(yù)測模式;b.判斷當(dāng)前4X4亮度塊的左相鄰塊和上相鄰塊是否存在,當(dāng)當(dāng) 前4X4亮度塊僅存在左相鄰塊或僅存在上相鄰塊或左相鄰塊和上相鄰塊均不存在時, 當(dāng)前4X4亮度塊的最可能模式M戶M為DC預(yù)測模式,當(dāng)當(dāng)前4X4亮度塊的左相鄰塊 和上相鄰塊均存在時,根據(jù)當(dāng)前4X4亮度塊的左相鄰塊和上相鄰塊采用的預(yù)測模式,
計算當(dāng)前4X4亮度塊的最可能模式M尸M二min(Ma,M^,其中,il《為當(dāng)前4X4亮度
塊的左相鄰塊采用的預(yù)測模式,M6為當(dāng)前4X4亮度塊的上相鄰塊采用的預(yù)測模式。圖
7給出了一個4X4亮度塊E與其左相鄰塊A及上相鄰塊B的位置示意圖。 率失真開銷函數(shù)為
J(s, c, I g尸,4艦)=SSD(;y, c, /MOD£ | g戶)+.及(s, c, | gi5),
其中,e {"http:// m'"e /"&"4 x 4 modes} , g戶代表量化參數(shù),/^OD£為Lagrange
乘數(shù)(4,=0.85><2,12)/3), s和c分別代表原始塊和重建塊,及為編碼當(dāng)前預(yù)測模式 所需的比特數(shù),SSD為誤差平方和,其計算如下式,5幼=2[艱_/)-啦_/)]2 ,力',_/)
"乂
表示原始塊中坐標(biāo)為(/,力的像素的像素值,ca力表示重建塊中坐標(biāo)為(/,力的像素的像 素值。
①-4、判斷當(dāng)前4X4亮度塊的最優(yōu)預(yù)測模式6eW—0mode與最可能模式JUTPM是否 相同,如果相同,則對當(dāng)前4X4亮度塊不進(jìn)行隱秘信息的嵌入,并將當(dāng)前4X4亮度塊 的模式標(biāo)志i rev—intra4x4—/7wc/ —mode置為1,保持當(dāng)前4X4亮度塊采用的預(yù)測模
20式不變,然后利用當(dāng)前4X4亮度塊采用的預(yù)測模式對當(dāng)前4X4亮度塊進(jìn)行編碼,再將 下一個待處理的4X4亮度塊作為當(dāng)前4X4亮度塊,返回步驟①-3繼續(xù)執(zhí)行,否則,將
當(dāng)前4X4亮度塊的模式標(biāo)志; wv—intra4x4 ——mode置為0,并繼續(xù)執(zhí)行。
①-5、判斷當(dāng)前4X4亮度塊是否為隱藏塊,如果是,則對當(dāng)前4X4亮度塊進(jìn)行隱 秘信息的嵌入,并繼續(xù)執(zhí)行,否則,對當(dāng)前4X4亮度塊不進(jìn)行隱秘信息的嵌入,并保 持當(dāng)前4X4亮度塊采用的預(yù)測模式不變,然后利用當(dāng)前4X4亮度塊采用的預(yù)測模式對 當(dāng)前4X4亮度塊進(jìn)行編碼,再將下一個待處理的4X4亮度塊作為當(dāng)前4X4亮度塊, 返回步驟①-3繼續(xù)執(zhí)行。
①-6、根據(jù)待嵌入的隱秘信息中當(dāng)前需嵌入的比特值對當(dāng)前4X4亮度塊采用的預(yù) 測模式進(jìn)行修改,具體過程為判斷當(dāng)前需嵌入的比特值為l還是0,如果當(dāng)前需嵌入 的比特值為1,則再判斷當(dāng)前4X4亮度塊采用的預(yù)測模式的標(biāo)識為奇數(shù)還是0或偶數(shù), 當(dāng)當(dāng)前4X4亮度塊采用的預(yù)測模式的標(biāo)識為奇數(shù)時,保持當(dāng)前4X4亮度塊采用的預(yù)測 模式不變,然后利用當(dāng)前4X4亮度塊采用的預(yù)測模式對當(dāng)前4X4亮度塊進(jìn)行編碼,再 繼續(xù)執(zhí)行步驟①-7,當(dāng)當(dāng)前4X4亮度塊采用的預(yù)測模式的標(biāo)識為0或偶數(shù)時,判斷當(dāng) 前4X4亮度塊的次優(yōu)預(yù)測模式的標(biāo)識為奇數(shù)還是0或偶數(shù),如果當(dāng)前4X4亮度塊的次 優(yōu)預(yù)測模式的標(biāo)識為奇數(shù),則將當(dāng)前4X4亮度塊采用的預(yù)測模式從最優(yōu)預(yù)測模式修改 為次優(yōu)預(yù)測模式,然后利用次優(yōu)預(yù)測模式對當(dāng)前4X4亮度塊進(jìn)行編碼,再繼續(xù)執(zhí)行步 驟①-7,如果當(dāng)前4X4亮度塊的次優(yōu)預(yù)測模式的標(biāo)識為0或偶數(shù),則按序?qū)β适д骈_ 銷大于次優(yōu)預(yù)測模式的率失真開銷對應(yīng)的預(yù)測模式進(jìn)行判斷,直至獲得一個標(biāo)識為奇數(shù) 的預(yù)測模式,然后將當(dāng)前4X4亮度塊采用的預(yù)測模式從最優(yōu)預(yù)測模式修改為獲得的標(biāo) 識為奇數(shù)的預(yù)測模式,然后利用獲得的標(biāo)識為奇數(shù)的預(yù)測模式對當(dāng)前4X4亮度塊進(jìn)行 編碼,再繼續(xù)執(zhí)行步驟①-7。如果當(dāng)前需嵌入的比特值為0,則嵌入方式與嵌入比特值 1時相類似,不同的是當(dāng)前需嵌入的比特值為0時需將當(dāng)前4X4亮度塊的預(yù)測模式的標(biāo) 識調(diào)制為O或偶數(shù),其具體過程為判斷當(dāng)前4X4亮度塊采用的預(yù)測模式的標(biāo)識為奇 數(shù)還是O或偶數(shù),當(dāng)當(dāng)前4X4亮度塊采用的預(yù)測模式的標(biāo)識為0或偶數(shù)時,保持當(dāng)前4 X4亮度塊采用的預(yù)測模式不變,然后利用當(dāng)前4X4亮度塊采用的預(yù)測模式對當(dāng)前4X 4亮度塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-7,當(dāng)當(dāng)前4X4亮度塊采用的預(yù)測模式的標(biāo)識為 奇數(shù)時,判斷當(dāng)前4X4亮度塊的次優(yōu)預(yù)測模式的標(biāo)識為奇數(shù)還是0或偶數(shù),如果當(dāng)前4 X4亮度塊的次優(yōu)預(yù)測模式的標(biāo)識為0或偶數(shù),則將當(dāng)前4X4亮度塊采用的預(yù)測模式從 最優(yōu)預(yù)測模式修改為次優(yōu)預(yù)測模式,然后利用次優(yōu)預(yù)測模式對當(dāng)前4X4亮度塊進(jìn)行編 碼,再繼續(xù)執(zhí)行步驟①-7,如果當(dāng)前4X4亮度塊的次優(yōu)編碼模式的標(biāo)識為奇數(shù),則按 序?qū)β适д骈_銷大于次優(yōu)預(yù)測模式的率失真開銷對應(yīng)的預(yù)測模式進(jìn)行判斷,直至獲得一
個標(biāo)識為0或偶數(shù)的預(yù)測模式,然后將當(dāng)前4X4亮度塊采用的預(yù)測模式從最優(yōu)預(yù)測模 式修改為獲得的標(biāo)識為0或偶數(shù)的預(yù)測模式,然后利用獲得的標(biāo)識為0或偶數(shù)的預(yù)測模式對當(dāng)前4X4亮度塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-7。
舉例說明,假設(shè)當(dāng)前需嵌入的比特值為O,而當(dāng)前被選中的當(dāng)前4x4亮度塊的預(yù)測 模式為7,此時需要對當(dāng)前4x4亮度塊的預(yù)測模式進(jìn)行調(diào)整,計算其次優(yōu)預(yù)測模式,假 設(shè)次優(yōu)預(yù)測模式為0,此時,次優(yōu)預(yù)測模式的奇偶性滿足嵌入規(guī)則,因此將次優(yōu)預(yù)測模 式0作為當(dāng)前44亮度塊的預(yù)測模式,也即隱秘信息的嵌入需將當(dāng)前4x4亮度塊的預(yù)測 模式從7替換為0,最終利用預(yù)測模式0對當(dāng)前4x4亮度塊進(jìn)行編碼。
①-7、將下一個待處理的4X4亮度塊作為當(dāng)前4X4亮度塊,然后返回執(zhí)行步驟① -3,直至處理完當(dāng)前宏塊中所有的4X4亮度塊,再繼續(xù)執(zhí)行步驟①-11。
①-8、判斷當(dāng)前宏塊是否屬于B片,如果是,則繼續(xù)執(zhí)行,否則,執(zhí)行步驟①-10。
①-9、計算當(dāng)前宏塊在各個編碼模式下的率失真開銷,并保存計算得到的各個率失 真開銷,按大小順序?qū)Ω鱾€率失真開銷進(jìn)行排序,將率失真開銷最小的編碼模式確定為 當(dāng)前宏塊的最優(yōu)編碼模式,將率失真開銷次小的編碼模式確定為當(dāng)前宏塊的次優(yōu)編碼模 式,然后將當(dāng)前宏塊的最優(yōu)編碼模式作為當(dāng)前宏塊采用的編碼模式,再判斷當(dāng)前宏塊采 用的編碼模式是否為DIRECT編碼模式,如果是,則對當(dāng)前宏塊不進(jìn)行隱秘信息的嵌入, 然后利用當(dāng)前宏塊采用的編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11,否則, 再判斷待嵌入的隱秘信息中當(dāng)前需嵌入的比特值為1還是O,如果當(dāng)前需嵌入的比特值 為1,則判斷當(dāng)前宏塊采用的編碼模式的標(biāo)識為奇數(shù)還是偶數(shù),當(dāng)當(dāng)前宏塊采用的編碼 模式的標(biāo)識為奇數(shù)時,保持當(dāng)前宏塊采用的編碼模式不變,然后利用當(dāng)前宏塊采用的編 碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11,當(dāng)當(dāng)前宏塊采用的編碼模式的標(biāo) 識為偶數(shù)時,判斷當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為奇數(shù)還是偶數(shù),如果當(dāng)前宏塊的次 優(yōu)編碼模式的標(biāo)識為奇數(shù),則將當(dāng)前宏塊采用的編碼模式從最優(yōu)編碼模式修改為次優(yōu)編 碼模式,然后利用當(dāng)前宏塊的次優(yōu)編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟① -11,如果當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為偶數(shù),則按序?qū)β适д骈_銷大于次優(yōu)編碼 模式的率失真開銷對應(yīng)的編碼模式進(jìn)行判斷,直至獲得一個標(biāo)識為奇數(shù)的編碼模式,然
后將當(dāng)前宏塊采用的編碼模式從最優(yōu)編碼模式修改為獲得的標(biāo)識為奇數(shù)的編碼模式,然 后利用獲得的標(biāo)識為奇數(shù)的編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11,如 果當(dāng)前需嵌入的比特值為O,則嵌入方式與嵌入比特值1時相類似,不同的是當(dāng)前需嵌 入的比特值為O時需將當(dāng)前宏塊的預(yù)測模式的標(biāo)識調(diào)制為偶數(shù),其具體過程為則判斷 當(dāng)前宏塊采用的編碼模式的標(biāo)識為奇數(shù)還是偶數(shù),當(dāng)當(dāng)前宏塊采用的編碼模式的標(biāo)識為 偶數(shù)時,保持當(dāng)前宏塊采用的編碼模式不變,然后利用當(dāng)前宏塊采用的編碼模式對當(dāng)前 宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11,當(dāng)當(dāng)前宏塊采用的編碼模式的標(biāo)識為奇數(shù)時, 判斷當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為奇數(shù)還是偶數(shù),如果當(dāng)前宏塊的次優(yōu)編碼模式的 標(biāo)識為偶數(shù),則將當(dāng)前宏塊采用的編碼模式從最優(yōu)編碼模式修改為次優(yōu)編碼模式,然后 利用當(dāng)前宏塊的次優(yōu)編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11,如果當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為奇數(shù),則按序?qū)β适д骈_銷大于次優(yōu)編碼模式的率失真開 銷對應(yīng)的編碼模式進(jìn)行判斷,直至獲得一個標(biāo)識為偶數(shù)的編碼模式,然后將當(dāng)前宏塊采 用的編碼模式從最優(yōu)編碼模式修改為獲得的標(biāo)識為偶數(shù)的編碼模式,然后利用獲得的標(biāo) 識為偶數(shù)的編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-U。
舉例說明,假設(shè)當(dāng)前需嵌入的比特值為O,若當(dāng)前宏塊的編碼模式為Inter—8x8,其 標(biāo)識為8,則編碼模式保持不變;若當(dāng)前宏塊的編碼模式為Inter_8xl6,其標(biāo)識為3,而 次優(yōu)編碼模式為Inter—8x8,則將當(dāng)前宏塊的編碼模式從Inter—8x16變?yōu)镮nter—8x8,也 即利用編碼模式Inter_8x8對當(dāng)前宏塊進(jìn)行編碼。
在此,由于當(dāng)前宏塊屬于B片,因此當(dāng)前宏塊可能為B宏塊,也有可能為I宏塊, 這樣的話在計算當(dāng)前宏塊在各個編碼模式下的率失真開銷過程中,遍歷的是七個編碼模 式,即DIRECT、 Inter—16x16、 Inter—16x8、 Inter—8x16、 Inter_8x8、 Intra—4x4及Intra—16x16 編碼模式。
①-10、計算當(dāng)前宏塊在各個編碼模式下的率失真開銷,并保存計算得到的各個率 失真開銷,按大小順序?qū)Ω鱾€率失真開銷進(jìn)行排序,將率失真開銷最小的編碼模式確定 為當(dāng)前宏塊的最優(yōu)編碼模式,將率失真開銷次小的編碼模式確定為當(dāng)前宏塊的次優(yōu)編碼 模式,然后將當(dāng)前宏塊的最優(yōu)編碼模式作為當(dāng)前宏塊采用的編碼模式,再判斷當(dāng)前宏塊 采用的編碼模式是否為SKIP編碼模式,如果是,則對當(dāng)前宏塊不進(jìn)行隱秘信息的嵌入, 然后利用當(dāng)前宏塊采用的編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11,否則, 再判斷待嵌入的隱秘信息中當(dāng)前需嵌入的比特值為l還是O,如果當(dāng)前需嵌入的比特值 為1,則判斷當(dāng)前宏塊采用的編碼模式的標(biāo)識為奇數(shù)還是偶數(shù),當(dāng)當(dāng)前宏塊采用的編碼 模式的標(biāo)識為奇數(shù)時,保持當(dāng)前宏塊采用的編碼模式不變,然后利用當(dāng)前宏塊采用的編 碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11,當(dāng)當(dāng)前宏塊采用的編碼模式的標(biāo) 識為偶數(shù)時,判斷當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為奇數(shù)還是偶數(shù),如果當(dāng)前宏塊的次 優(yōu)編碼模式的標(biāo)識為奇數(shù),則將當(dāng)前宏塊采用的編碼模式從最優(yōu)編碼模式修改為次優(yōu)編 碼模式,然后利用當(dāng)前宏塊的次優(yōu)編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟① -11,如果當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為偶數(shù),則按序?qū)β适д骈_銷大于次優(yōu)編碼 模式的率失真開銷對應(yīng)的編碼模式進(jìn)行判斷,直至獲得一個標(biāo)識為奇數(shù)的編碼模式,然
后將當(dāng)前宏塊采用的編碼模式從最優(yōu)編碼模式修改為獲得的標(biāo)識為奇數(shù)的編碼模式,然 后利用獲得的標(biāo)識為奇數(shù)的編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11,如 果當(dāng)前需嵌入的比特值為0,則判斷當(dāng)前宏塊采用的編碼模式的標(biāo)識為奇數(shù)還是偶數(shù), 當(dāng)當(dāng)前宏塊采用的編碼模式的標(biāo)識為偶數(shù)時,保持當(dāng)前宏塊采用的編碼模式不變,然后 利用當(dāng)前宏塊采用的編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11,當(dāng)當(dāng)前宏 塊采用的編碼模式的標(biāo)識為奇數(shù)時,判斷當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為奇數(shù)還是偶 數(shù),如果當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為偶數(shù),則將當(dāng)前宏塊采用的編碼模式從最優(yōu)編碼模式修改為次優(yōu)編碼模式,然后利用當(dāng)前宏塊的次優(yōu)編碼模式對當(dāng)前宏塊進(jìn)行編 碼,再繼續(xù)執(zhí)行步驟①-U,如果當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為奇數(shù),則按序?qū)β?失真開銷大于次優(yōu)編碼模式的率失真開銷對應(yīng)的編碼模式進(jìn)行判斷,直至獲得一個標(biāo)識
為偶數(shù)的編碼模式,然后將當(dāng)前宏塊采用的編碼模式從最優(yōu)編碼模式修改為獲得的標(biāo)識 為偶數(shù)的編碼模式,然后利用獲得的標(biāo)識為偶數(shù)的編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼 續(xù)執(zhí)行步驟①-11。
在此,由于當(dāng)前宏塊屬于P片,因此當(dāng)前宏塊可能為P宏塊,也有可能為I宏塊, 這樣的話在計算當(dāng)前宏塊在各個編碼模式下的率失真開銷過程中,遍歷的是七個編碼模 式,艮卩SKIP、 Inter一16x16、 Inter—16x8、 Inter—8><16、 Inter—8x8、 Intra—4x4及Intra—16x16
編碼模式。
①-11、將下一個待處理的宏塊作為當(dāng)前宏塊,并返回步驟①-l繼續(xù)執(zhí)行,直至4096 比特的隱秘信息中全部嵌入完成,得到含隱秘信息的H.264/AVC視頻碼流。
① -12、隱秘信息嵌入端將含隱秘信息的H.264/AVC視頻碼流發(fā)送給隱秘信息提取端。
隱秘信息嵌入端對4x4亮度塊的預(yù)測模式的調(diào)制修改或?qū)陦K的編碼模式的調(diào)制 修改即實現(xiàn)了隱秘信息的嵌入。
② -l、在隱秘信息提取端,隱秘信息提取端利用H.264/AVC標(biāo)準(zhǔn)解碼器對其接收到 的含隱秘信息的H.264/AVC視頻碼流以宏塊為單位進(jìn)行解碼,解碼嵌入有隱秘信息的第 一幀圖像,得到的結(jié)果如圖8所示,從圖8中可以看出嵌入隱秘信息前后視頻圖像沒有 可察覺的變化。
②-2、定義當(dāng)前解碼得到的宏塊為當(dāng)前宏塊,判斷當(dāng)前宏塊是否屬于I片,如果是, 則繼續(xù)執(zhí)行,否則,執(zhí)行步驟②-8。
②-3、判斷當(dāng)前宏塊的編碼模式為Intra—4x4編碼模式還是Intra—16x16編碼模式, 如果當(dāng)前宏塊的編碼模式為Intra_16xl6編碼模式,則對當(dāng)前宏塊不進(jìn)行隱秘信息的提 取,再執(zhí)行步驟②-ll;如果當(dāng)前宏塊的編碼模式為Intra—4x4編碼模式,則先根據(jù)JM 模型對當(dāng)前宏塊中的16個4X4亮度塊進(jìn)行編號,編號方式如圖l所示,然后利用在隱
秘信息嵌入端保存的初始值^生成一個與隱秘信息嵌入端的第一混沌序列S相同 的第二混沌序列《,將第二混沌序列《中的每個元素乘以16并向下取整,得到 一個取值范圍在[1,16]的第二整數(shù)序列《,再從第二整數(shù)序列《中選取與隱秘信 息嵌入端的第一下標(biāo)序列S,"^中的元素位置相對應(yīng)的w個互不相等的元素,得到 第二下標(biāo)序列S',利用第二下標(biāo)序列^從當(dāng)前宏塊中選擇與第第二下標(biāo)序列
24S'中的各個元素相對應(yīng)的4x4亮度塊,并將所選擇的4x4亮度塊作為判斷塊,其中,
lSw216,再繼續(xù)執(zhí)行。
②-4、定義當(dāng)前宏塊中當(dāng)前待處理的4X4亮度塊為當(dāng)前4X4亮度塊,判斷當(dāng)前4 X4亮度塊是否為判斷塊,如果是,則繼續(xù)執(zhí)行,否則,對當(dāng)前4X4亮度塊不進(jìn)行隱秘 信息的提取,并將下一個待處理的4X4亮度塊作為當(dāng)前4X4亮度塊,再重復(fù)執(zhí)行該步 驟。
②-5、判斷當(dāng)前4X4亮度塊的模式標(biāo)志; rev—intra4x4 —prW —mode為1還是0,
如果為l,則對當(dāng)前4X4亮度塊不進(jìn)行隱秘信息的提取,并執(zhí)行步驟②-7,如果為0, 則繼續(xù)執(zhí)行。
②-6、判斷當(dāng)前4X4亮度塊采用的預(yù)測模式的標(biāo)識為奇數(shù)還是偶數(shù),如果為奇數(shù), 則提取出嵌入的比特值l,然后執(zhí)行步驟②-7,如果為偶數(shù),則提取出嵌入的比特值0, 然后執(zhí)行步驟②-7。
②-7、將下一個待處理的4X4亮度塊作為當(dāng)前4X4亮度塊,再返回步驟②-4繼續(xù) 執(zhí)行,直至處理完當(dāng)前宏塊中所有的4X4亮度塊,再繼續(xù)執(zhí)行步驟②-11。
②-8、判斷當(dāng)前宏塊是否屬于B片,如果是,則繼續(xù)執(zhí)行,否則,執(zhí)行步驟②-10。
②-9、判斷當(dāng)前宏塊采用的編碼模式是否為DIRECT編碼模式,如果是,則對當(dāng)前 宏塊不進(jìn)行隱秘信息的提取,然后執(zhí)行步驟②-11,否則,再判斷當(dāng)前宏塊采用的編碼 模式的標(biāo)識為奇數(shù)還是偶數(shù),當(dāng)當(dāng)前宏塊采用的編碼模式的標(biāo)識為奇數(shù)時,提取出嵌入 的比特值l,然后執(zhí)行步驟②-U,當(dāng)當(dāng)前宏塊采用的編碼模式的標(biāo)識為偶數(shù)時,提取出 嵌入的比特值O,然后執(zhí)行步驟②-11。
②-10、判斷當(dāng)前宏塊采用的編碼模式是否為SKIP編碼模式,如果是,則對當(dāng)前宏 塊不進(jìn)行隱秘信息的提取,然后執(zhí)行步驟②-11,否則,再判斷當(dāng)前宏塊采用的編碼模 式的標(biāo)識為奇數(shù)還是偶數(shù),當(dāng)當(dāng)前宏塊采用的編碼模式的標(biāo)識為奇數(shù)時,提取出嵌入的 比特值l,然后執(zhí)行步驟②-U,當(dāng)當(dāng)前宏塊采用的編碼模式的標(biāo)識為偶數(shù)時,提取出嵌 入的比特值O,然后執(zhí)行步驟②-11。
②-11、將下一個解碼得到的宏塊作為當(dāng)前宏塊,并返回步驟②-2重復(fù)執(zhí)行,直至 提取出含隱秘信息的H.264/AVC視頻碼流中嵌入的比特值。在提取出4096比特的隱秘 信息后將提取出的隱秘信息轉(zhuǎn)換為大小為64x64的二維矩陣,然后根據(jù)保存的初始密鑰
值《并利用Matlab中的randint()函數(shù)產(chǎn)生一個大小與待嵌入的隱秘信息的大小
相同的隨機矩陣,利用該隨機矩陣對二維矩陣進(jìn)行解密,得到原始的隱秘信息, 恢復(fù)得到的代表隱秘信息的二值圖像如圖9所示。
權(quán)利要求
1、一種基于預(yù)測模式的H.264/AVC視頻信息隱藏方法,H.264/AVC視頻主要由I幀圖像、B幀圖像和P幀圖像組成,所述的I幀圖像包括至少一個I片,所述的B幀圖像包括至少一個B片,所述的P幀圖像包括至少一個P片,所述的I片主要由若干個I宏塊組成,所述的B片主要由若干個B宏塊和若干個I宏塊組成,所述的P片主要由若干個P宏塊和若干個I宏塊組成,所述的I宏塊的編碼模式分為Intra_4×4和Intra_16×16兩類,當(dāng)所述的I宏塊使用Intra_4×4編碼模式時,所述的I宏塊分為16個4×4亮度塊,所述的4×4亮度塊具有DC預(yù)測模式和八種方向預(yù)測模式,所述的DC預(yù)測模式用數(shù)字2標(biāo)識,所述的八種方向預(yù)測模式包括垂直、水平、下左對角線、下右對角線、右垂直、下水平、左垂直和上水平方向預(yù)測模式,所述的垂直方向預(yù)測模式用數(shù)字0標(biāo)識,所述的水平方向預(yù)測模式用數(shù)字1標(biāo)識,所述的下左對角線方向預(yù)測模式用數(shù)字3標(biāo)識,所述的下右對角線方向預(yù)測模式用數(shù)字4標(biāo)識,所述的右垂直方向預(yù)測模式用數(shù)字5標(biāo)識,所述的下水平方向預(yù)測模式用數(shù)字6標(biāo)識,所述的左垂直方向預(yù)測模式用數(shù)字7標(biāo)識,所述的上水平方向預(yù)測模式用數(shù)字8標(biāo)識,所述的B宏塊的編碼模式分為DIRECT、Inter_16×16、Inter_16×8、Inter_8×16及Inter_8×8五類,所述的DIRECT編碼模式用數(shù)字0標(biāo)識,所述的Inter_16×16編碼模式用數(shù)字1標(biāo)識,所述的Inter_16×8編碼模式用數(shù)字2標(biāo)識,所述的Inter_8×16編碼模式用數(shù)字3標(biāo)識,所述的Inter_8×8編碼模式用數(shù)字8標(biāo)識,所述的P宏塊的編碼模式分為SKIP、Inter_16×16、Inter_16×8及Inter_8×16、Inter_8×8五類,所述的SKIP編碼模式用數(shù)字0標(biāo)識,所述的Inter_16×16編碼模式用數(shù)字1標(biāo)識,所述的Inter_16×8編碼模式用數(shù)字2標(biāo)識,所述的Inter_8×16編碼模式用數(shù)字3標(biāo)識,所述的Inter_8×8編碼模式用數(shù)字8標(biāo)識,其特征在于基于預(yù)測模式的H.264/AVC視頻信息隱藏方法包括以下步驟①-1、在隱秘信息嵌入端,對于當(dāng)前需嵌入隱秘信息的H.264/AVC視頻以宏塊為單位進(jìn)行隱秘信息的嵌入和編碼,定義當(dāng)前正在處理的宏塊為當(dāng)前宏塊,判斷當(dāng)前宏塊是否屬于I片,如果是,則繼續(xù)執(zhí)行,否則,執(zhí)行步驟①-8;①-2、判斷當(dāng)前宏塊的編碼模式為Intra_4×4編碼模式還是Intra_16×16編碼模式,如果當(dāng)前宏塊的編碼模式為Intra_16×16編碼模式,則對當(dāng)前宏塊不進(jìn)行隱秘信息的嵌入,然后利用Intra_16×16編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11;如果當(dāng)前宏塊的編碼模式為Intra_4×4編碼模式,則先對當(dāng)前宏塊中的16個4×4亮度塊進(jìn)行編號,對每個4×4亮度塊設(shè)置一個用于標(biāo)志各個4×4亮度塊的預(yù)測模式的模式標(biāo)志prev_intra4×4_pred_mode,然后隨機選定一個用于唯一確定一個混沌序列的初始值K2,并保存初始值K2,利用初始值K2生成一個長度為16的第一混沌序列S1,將第一混沌序列S1中的每個元素乘以16并向下取整,得到一個取值范圍在[1,16]的第一整數(shù)序列S2,再從第一整數(shù)序列S2中選取n個互不相等的元素,得到第一下標(biāo)序列Sindex,利用第一下標(biāo)序列Sindex從當(dāng)前宏塊中選擇與第一下標(biāo)序列Sindex中的各個元素相對應(yīng)的4×4亮度塊,并將所選擇的4×4亮度塊作為隱藏塊,其中,1≤n≤16,再繼續(xù)執(zhí)行;①-3、定義當(dāng)前宏塊中當(dāng)前待處理的4×4亮度塊為當(dāng)前4×4亮度塊,定義與當(dāng)前4×4亮度塊相鄰且位于當(dāng)前4×4亮度塊左方的4×4亮度塊為左相鄰塊,定義與當(dāng)前4×4亮度塊相鄰且位于當(dāng)前4×4亮度塊上方的4×4亮度塊為上相鄰塊,獲取當(dāng)前4×4亮度塊采用的預(yù)測模式和最可能模式MPM,具體過程為a.首先遍歷當(dāng)前4×4亮度塊具有的DC預(yù)測模式和八種方向預(yù)測模式,計算當(dāng)前4×4亮度塊在各個預(yù)測模式下的率失真開銷,并保存計算得到的各個率失真開銷,然后按大小順序?qū)Ω鱾€率失真開銷進(jìn)行排序,將率失真開銷最小的預(yù)測模式確定為當(dāng)前4×4亮度塊的最優(yōu)預(yù)測模式best_ip mod e,將率失真開銷次小的預(yù)測模式確定為當(dāng)前4×4亮度塊的次優(yōu)預(yù)測模式,再將當(dāng)前4×4亮度塊的最優(yōu)預(yù)測模式best_ip mode作為當(dāng)前4×4亮度塊采用的預(yù)測模式;b.判斷當(dāng)前4×4亮度塊的左相鄰塊和上相鄰塊是否存在,當(dāng)當(dāng)前4×4亮度塊僅存在左相鄰塊或僅存在上相鄰塊或左相鄰塊和上相鄰塊均不存在時,當(dāng)前4×4亮度塊的最可能模式MPM為DC預(yù)測模式,當(dāng)當(dāng)前4×4亮度塊的左相鄰塊和上相鄰塊均存在時,根據(jù)當(dāng)前4×4亮度塊的左相鄰塊和上相鄰塊采用的預(yù)測模式,計算當(dāng)前4×4亮度塊的最可能模式MPM=min{Ma,Mb},其中,Ma為當(dāng)前4×4亮度塊的左相鄰塊采用的預(yù)測模式,Mb為當(dāng)前4×4亮度塊的上相鄰塊采用的預(yù)測模式;①-4、判斷當(dāng)前4×4亮度塊的最優(yōu)預(yù)測模式best_ip mod e與最可能模式MPM是否相同,如果相同,則對當(dāng)前4×4亮度塊不進(jìn)行隱秘信息的嵌入,并將當(dāng)前4×4亮度塊的模式標(biāo)志prev_intra4×4_pred_mode置為1,保持當(dāng)前4×4亮度塊采用的預(yù)測模式不變,然后利用當(dāng)前4×4亮度塊采用的預(yù)測模式對當(dāng)前4×4亮度塊進(jìn)行編碼,再將下一個待處理的4×4亮度塊作為當(dāng)前4×4亮度塊,返回步驟①-3繼續(xù)執(zhí)行,否則,將當(dāng)前4×4亮度塊的模式標(biāo)志prev_intra4×4_pred_mode置為0,并繼續(xù)執(zhí)行;①-5、判斷當(dāng)前4×4亮度塊是否為隱藏塊,如果是,則對當(dāng)前4×4亮度塊進(jìn)行隱秘信息的嵌入,并繼續(xù)執(zhí)行,否則,對當(dāng)前4×4亮度塊不進(jìn)行隱秘信息的嵌入,并保持當(dāng)前4×4亮度塊采用的預(yù)測模式不變,然后利用當(dāng)前4×4亮度塊采用的預(yù)測模式對當(dāng)前4×4亮度塊進(jìn)行編碼,再將下一個待處理的4×4亮度塊作為當(dāng)前4×4亮度塊,返回步驟①-3繼續(xù)執(zhí)行;①-6、根據(jù)待嵌入的隱秘信息中當(dāng)前需嵌入的比特值對當(dāng)前4×4亮度塊采用的預(yù)測模式進(jìn)行修改,具體過程為判斷當(dāng)前需嵌入的比特值為1還是0,如果當(dāng)前需嵌入的比特值為1,則再判斷當(dāng)前4×4亮度塊采用的預(yù)測模式的標(biāo)識為奇數(shù)還是0或偶數(shù),當(dāng)當(dāng)前4×4亮度塊采用的預(yù)測模式的標(biāo)識為奇數(shù)時,保持當(dāng)前4×4亮度塊采用的預(yù)測模式不變,然后利用當(dāng)前4×4亮度塊采用的預(yù)測模式對當(dāng)前4×4亮度塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-7,當(dāng)當(dāng)前4×4亮度塊采用的預(yù)測模式的標(biāo)識為0或偶數(shù)時,判斷當(dāng)前4×4亮度塊的次優(yōu)預(yù)測模式的標(biāo)識為奇數(shù)還是0或偶數(shù),如果當(dāng)前4×4亮度塊的次優(yōu)預(yù)測模式的標(biāo)識為奇數(shù),則將當(dāng)前4×4亮度塊采用的預(yù)測模式從最優(yōu)預(yù)測模式修改為次優(yōu)預(yù)測模式,然后利用次優(yōu)預(yù)測模式對當(dāng)前4×4亮度塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-7,如果當(dāng)前4×4亮度塊的次優(yōu)預(yù)測模式的標(biāo)識為0或偶數(shù),則按序?qū)β适д骈_銷大于次優(yōu)預(yù)測模式的率失真開銷對應(yīng)的預(yù)測模式進(jìn)行判斷,直至獲得一個標(biāo)識為奇數(shù)的預(yù)測模式,然后將當(dāng)前4×4亮度塊采用的預(yù)測模式從最優(yōu)預(yù)測模式修改為獲得的標(biāo)識為奇數(shù)的預(yù)測模式,然后利用獲得的標(biāo)識為奇數(shù)的預(yù)測模式對當(dāng)前4×4亮度塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-7;如果當(dāng)前需嵌入的比特值為0,則再判斷當(dāng)前4×4亮度塊采用的預(yù)測模式的標(biāo)識為奇數(shù)還是0或偶數(shù),當(dāng)當(dāng)前4×4亮度塊采用的預(yù)測模式的標(biāo)識為0或偶數(shù)時,保持當(dāng)前4×4亮度塊采用的預(yù)測模式不變,然后利用當(dāng)前4×4亮度塊采用的預(yù)測模式對當(dāng)前4×4亮度塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-7,當(dāng)當(dāng)前4×4亮度塊采用的預(yù)測模式的標(biāo)識為奇數(shù)時,判斷當(dāng)前4×4亮度塊的次優(yōu)預(yù)測模式的標(biāo)識為奇數(shù)還是0或偶數(shù),如果當(dāng)前4×4亮度塊的次優(yōu)預(yù)測模式的標(biāo)識為0或偶數(shù),則將當(dāng)前4×4亮度塊采用的預(yù)測模式從最優(yōu)預(yù)測模式修改為次優(yōu)預(yù)測模式,然后利用次優(yōu)預(yù)測模式對當(dāng)前4×4亮度塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-7,如果當(dāng)前4×4亮度塊的次優(yōu)編碼模式的標(biāo)識為奇數(shù),則按序?qū)β适д骈_銷大于次優(yōu)預(yù)測模式的率失真開銷對應(yīng)的預(yù)測模式進(jìn)行判斷,直至獲得一個標(biāo)識為0或偶數(shù)的預(yù)測模式,然后將當(dāng)前4×4亮度塊采用的預(yù)測模式從最優(yōu)預(yù)測模式修改為獲得的標(biāo)識為0或偶數(shù)的預(yù)測模式,然后利用獲得的標(biāo)識為0或偶數(shù)的預(yù)測模式對當(dāng)前4×4亮度塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-7;①-7、將下一個待處理的4×4亮度塊作為當(dāng)前4×4亮度塊,然后返回執(zhí)行步驟①-3,直至處理完當(dāng)前宏塊中所有的4×4亮度塊,再繼續(xù)執(zhí)行步驟①-11;①-8、判斷當(dāng)前宏塊是否屬于B片,如果是,則繼續(xù)執(zhí)行,否則,執(zhí)行步驟①-10;①-9、計算當(dāng)前宏塊在各個編碼模式下的率失真開銷,并保存計算得到的各個率失真開銷,按大小順序?qū)Ω鱾€率失真開銷進(jìn)行排序,將率失真開銷最小的編碼模式確定為當(dāng)前宏塊的最優(yōu)編碼模式,將率失真開銷次小的編碼模式確定為當(dāng)前宏塊的次優(yōu)編碼模式,然后將當(dāng)前宏塊的最優(yōu)編碼模式作為當(dāng)前宏塊采用的編碼模式,再判斷當(dāng)前宏塊采用的編碼模式是否為DIRECT編碼模式,如果是,則對當(dāng)前宏塊不進(jìn)行隱秘信息的嵌入,然后利用當(dāng)前宏塊采用的編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11,否則,再判斷待嵌入的隱秘信息中當(dāng)前需嵌入的比特值為1還是0,如果當(dāng)前需嵌入的比特值為1,則判斷當(dāng)前宏塊采用的編碼模式的標(biāo)識為奇數(shù)還是偶數(shù),當(dāng)當(dāng)前宏塊采用的編碼模式的標(biāo)識為奇數(shù)時,保持當(dāng)前宏塊采用的編碼模式不變,然后利用當(dāng)前宏塊采用的編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11,當(dāng)當(dāng)前宏塊采用的編碼模式的標(biāo)識為偶數(shù)時,判斷當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為奇數(shù)還是偶數(shù),如果當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為奇數(shù),則將當(dāng)前宏塊采用的編碼模式從最優(yōu)編碼模式修改為次優(yōu)編碼模式,然后利用當(dāng)前宏塊的次優(yōu)編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11,如果當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為偶數(shù),則按序?qū)β适д骈_銷大于次優(yōu)編碼模式的率失真開銷對應(yīng)的編碼模式進(jìn)行判斷,直至獲得一個標(biāo)識為奇數(shù)的編碼模式,然后將當(dāng)前宏塊采用的編碼模式從最優(yōu)編碼模式修改為獲得的標(biāo)識為奇數(shù)的編碼模式,然后利用獲得的標(biāo)識為奇數(shù)的編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11,如果當(dāng)前需嵌入的比特值為0,則判斷當(dāng)前宏塊采用的編碼模式的標(biāo)識為奇數(shù)還是偶數(shù),當(dāng)當(dāng)前宏塊采用的編碼模式的標(biāo)識為偶數(shù)時,保持當(dāng)前宏塊采用的編碼模式不變,然后利用當(dāng)前宏塊采用的編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11,當(dāng)當(dāng)前宏塊采用的編碼模式的標(biāo)識為奇數(shù)時,判斷當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為奇數(shù)還是偶數(shù),如果當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為偶數(shù),則將當(dāng)前宏塊采用的編碼模式從最優(yōu)編碼模式修改為次優(yōu)編碼模式,然后利用當(dāng)前宏塊的次優(yōu)編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11,如果當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為奇數(shù),則按序?qū)β适д骈_銷大于次優(yōu)編碼模式的率失真開銷對應(yīng)的編碼模式進(jìn)行判斷,直至獲得一個標(biāo)識為偶數(shù)的編碼模式,然后將當(dāng)前宏塊采用的編碼模式從最優(yōu)編碼模式修改為獲得的標(biāo)識為偶數(shù)的編碼模式,然后利用獲得的標(biāo)識為偶數(shù)的編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11;①-10、計算當(dāng)前宏塊在各個編碼模式下的率失真開銷,并保存計算得到的各個率失真開銷,按大小順序?qū)Ω鱾€率失真開銷進(jìn)行排序,將率失真開銷最小的編碼模式確定為當(dāng)前宏塊的最優(yōu)編碼模式,將率失真開銷次小的編碼模式確定為當(dāng)前宏塊的次優(yōu)編碼模式,然后將當(dāng)前宏塊的最優(yōu)編碼模式作為當(dāng)前宏塊采用的編碼模式,再判斷當(dāng)前宏塊采用的編碼模式是否為SKIP編碼模式,如果是,則對當(dāng)前宏塊不進(jìn)行隱秘信息的嵌入,然后利用當(dāng)前宏塊采用的編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11,否則,再判斷待嵌入的隱秘信息中當(dāng)前需嵌入的比特值為1還是0,如果當(dāng)前需嵌入的比特值為1,則判斷當(dāng)前宏塊采用的編碼模式的標(biāo)識為奇數(shù)還是偶數(shù),當(dāng)當(dāng)前宏塊采用的編碼模式的標(biāo)識為奇數(shù)時,保持當(dāng)前宏塊采用的編碼模式不變,然后利用當(dāng)前宏塊采用的編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11,當(dāng)當(dāng)前宏塊采用的編碼模式的標(biāo)識為偶數(shù)時,判斷當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為奇數(shù)還是偶數(shù),如果當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為奇數(shù),則將當(dāng)前宏塊采用的編碼模式從最優(yōu)編碼模式修改為次優(yōu)編碼模式,然后利用當(dāng)前宏塊的次優(yōu)編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11,如果當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為偶數(shù),則按序?qū)β适д骈_銷大于次優(yōu)編碼模式的率失真開銷對應(yīng)的編碼模式進(jìn)行判斷,直至獲得一個標(biāo)識為奇數(shù)的編碼模式,然后將當(dāng)前宏塊采用的編碼模式從最優(yōu)編碼模式修改為獲得的標(biāo)識為奇數(shù)的編碼模式,然后利用獲得的標(biāo)識為奇數(shù)的編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11,如果當(dāng)前需嵌入的比特值為0,則判斷當(dāng)前宏塊采用的編碼模式的標(biāo)識為奇數(shù)還是偶數(shù),當(dāng)當(dāng)前宏塊采用的編碼模式的標(biāo)識為偶數(shù)時,保持當(dāng)前宏塊采用的編碼模式不變,然后利用當(dāng)前宏塊采用的編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11,當(dāng)當(dāng)前宏塊采用的編碼模式的標(biāo)識為奇數(shù)時,判斷當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為奇數(shù)還是偶數(shù),如果當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為偶數(shù),則將當(dāng)前宏塊采用的編碼模式從最優(yōu)編碼模式修改為次優(yōu)編碼模式,然后利用當(dāng)前宏塊的次優(yōu)編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11,如果當(dāng)前宏塊的次優(yōu)編碼模式的標(biāo)識為奇數(shù),則按序?qū)β适д骈_銷大于次優(yōu)編碼模式的率失真開銷對應(yīng)的編碼模式進(jìn)行判斷,直至獲得一個標(biāo)識為偶數(shù)的編碼模式,然后將當(dāng)前宏塊采用的編碼模式從最優(yōu)編碼模式修改為獲得的標(biāo)識為偶數(shù)的編碼模式,然后利用獲得的標(biāo)識為偶數(shù)的編碼模式對當(dāng)前宏塊進(jìn)行編碼,再繼續(xù)執(zhí)行步驟①-11;①-11、將下一個待處理的宏塊作為當(dāng)前宏塊,并返回步驟①-1繼續(xù)執(zhí)行,直至待嵌入的隱秘信息中所有的比特值均嵌入完成,得到含隱秘信息的H.264/AVC視頻碼流;①-12、隱秘信息嵌入端將含隱秘信息的H.264/AVC視頻碼流發(fā)送給隱秘信息提取端;②-1、在隱秘信息提取端,隱秘信息提取端利用H.264/AVC標(biāo)準(zhǔn)解碼器對其接收到的含隱秘信息的H.264/AVC視頻碼流以宏塊為單位進(jìn)行解碼;②-2、定義當(dāng)前解碼得到的宏塊為當(dāng)前宏塊,判斷當(dāng)前宏塊是否屬于I片,如果是,則繼續(xù)執(zhí)行,否則,執(zhí)行步驟②-8;②-3、判斷當(dāng)前宏塊的編碼模式為Intra_4×4編碼模式還是Intra_16×16編碼模式,如果當(dāng)前宏塊的編碼模式為Intra_16×16編碼模式,則對當(dāng)前宏塊不進(jìn)行隱秘信息的提取,再執(zhí)行步驟②-11;如果當(dāng)前宏塊的編碼模式為Intra_4×4編碼模式,則先對當(dāng)前宏塊中的16個4×4亮度塊進(jìn)行編號,然后利用在隱秘信息嵌入端保存的初始值K2生成一個與隱秘信息嵌入端的第一混沌序列S1相同的第二混沌序列S′1,將第二混沌序列S′1中的每個元素乘以16并向下取整,得到一個取值范圍在[1,16]的第二整數(shù)序列S′2,再從第二整數(shù)序列S′2中選取與隱秘信息嵌入端的第一下標(biāo)序列Sindex中的元素位置相對應(yīng)的n個互不相等的元素,得到第二下標(biāo)序列S′index,利用第二下標(biāo)序列S′index從當(dāng)前宏塊中選擇與第第二下標(biāo)序列S′index中的各個元素相對應(yīng)的4×4亮度塊,并將所選擇的4×4亮度塊作為判斷塊,其中,1≤n≤16,再繼續(xù)執(zhí)行;②-4、定義當(dāng)前宏塊中當(dāng)前待處理的4×4亮度塊為當(dāng)前4×4亮度塊,判斷當(dāng)前4×4亮度塊是否為判斷塊,如果是,則繼續(xù)執(zhí)行,否則,對當(dāng)前4×4亮度塊不進(jìn)行隱秘信息的提取,并將下一個待處理的4×4亮度塊作為當(dāng)前4×4亮度塊,再重復(fù)執(zhí)行該步驟;②-5、判斷當(dāng)前4×4亮度塊的模式標(biāo)志prev_intra4×4_pred_mode為1還是0,如果為1,則對當(dāng)前4×4亮度塊不進(jìn)行隱秘信息的提取,并執(zhí)行步驟②-7,如果為0,則繼續(xù)執(zhí)行;②-6、判斷當(dāng)前4×4亮度塊采用的預(yù)測模式的標(biāo)識為奇數(shù)還是偶數(shù),如果為奇數(shù),則提取出嵌入的比特值1,然后執(zhí)行步驟②-7,如果為偶數(shù),則提取出嵌入的比特值0,然后執(zhí)行步驟②-7;②-7、將下一個待處理的4×4亮度塊作為當(dāng)前4×4亮度塊,再返回步驟②-4繼續(xù)執(zhí)行,直至處理完當(dāng)前宏塊中所有的4×4亮度塊,再繼續(xù)執(zhí)行步驟②-11;②-8、判斷當(dāng)前宏塊是否屬于B片,如果是,則繼續(xù)執(zhí)行,否則,執(zhí)行步驟②-10;②-9、判斷當(dāng)前宏塊采用的編碼模式是否為DIRECT編碼模式,如果是,則對當(dāng)前宏塊不進(jìn)行隱秘信息的提取,然后執(zhí)行步驟②-11,否則,再判斷當(dāng)前宏塊采用的編碼模式的標(biāo)識為奇數(shù)還是偶數(shù),當(dāng)當(dāng)前宏塊采用的編碼模式的標(biāo)識為奇數(shù)時,提取出嵌入的比特值1,然后執(zhí)行步驟②-11,當(dāng)當(dāng)前宏塊采用的編碼模式的標(biāo)識為偶數(shù)時,提取出嵌入的比特值0,然后執(zhí)行步驟②-11;②-10、判斷當(dāng)前宏塊采用的編碼模式是否為SKIP編碼模式,如果是,則對當(dāng)前宏塊不進(jìn)行隱秘信息的提取,然后執(zhí)行步驟②-11,否則,再判斷當(dāng)前宏塊采用的編碼模式的標(biāo)識為奇數(shù)還是偶數(shù),當(dāng)當(dāng)前宏塊采用的編碼模式的標(biāo)識為奇數(shù)時,提取出嵌入的比特值1,然后執(zhí)行步驟②-11,當(dāng)當(dāng)前宏塊采用的編碼模式的標(biāo)識為偶數(shù)時,提取出嵌入的比特值0,然后執(zhí)行步驟②-11;②-11、將下一個解碼得到的宏塊作為當(dāng)前宏塊,并返回步驟②-2重復(fù)執(zhí)行,直至提取出含隱秘信息的H.264/AVC視頻碼流中嵌入的所有比特值。
2、 根據(jù)權(quán)利要求1所述的一種基于預(yù)測模式的H.264/AVC視頻信息隱藏方法,其 特征在于在隱秘信息嵌入端,在嵌入隱秘信息之前先對待嵌入的隱秘信息進(jìn)行加密處理,以增加攻擊的復(fù)雜度,具體過程為隨機選擇一個初始密鑰值《,并保存初始密鑰值《,根據(jù)初始密鑰值《并利用Matlab中的mndint()函數(shù)產(chǎn)生一個大小與待嵌入的隱秘信息的大小相同的隨機矩陣,利用該隨機矩陣采用異或方式對待嵌入的 隱秘信息進(jìn)行加密,并采用現(xiàn)有的掃描方式將加密形成的二維矩陣轉(zhuǎn)換為一維序列。
3、 根據(jù)權(quán)利要求2所述的一種基于預(yù)測模式的H.264/AVC視頻信息隱藏方法,其 特征在于在隱秘信息提取端,在提取出隱秘信息中所有的比特值后將提取出的隱秘信息轉(zhuǎn)換為二維矩陣,然后根據(jù)保存的初始密鑰值&并利用Matlab中的randint()函數(shù)產(chǎn)生一個大小與待嵌入的隱秘信息的大小相同的隨機矩陣,利用該隨機矩陣對二維 矩陣進(jìn)行解密,得到原始的隱秘信息。
全文摘要
本發(fā)明公開了一種基于預(yù)測模式的H.264/AVC視頻信息隱藏方法,對于I片中編碼模式為Intra_4×4的宏塊,在必須改變4×4亮度塊的預(yù)測模式的情況下,通過將4×4亮度塊的預(yù)測模式從最優(yōu)預(yù)測模式向次優(yōu)預(yù)測模式方向調(diào)制,對于P片及B片中編碼模式標(biāo)識不為0的宏塊,在必須改變宏塊的編碼模式的情況下,通過將宏塊的編碼模式從最優(yōu)編碼模式向次優(yōu)編碼模式方向調(diào)制,在保證能夠有效實現(xiàn)隱秘信息隱藏的同時,可以盡量減小預(yù)測模式或編碼模式的改變對視頻客觀質(zhì)量的影響;另一方面,由于隱秘信息不僅可以嵌入在I片中編碼模式為Intra_4×4的宏塊中,也可以嵌入在P片和B片中編碼模式標(biāo)識不為0的宏塊中,因而可取得較大的隱藏容量。
文檔編號H04N7/26GK101621692SQ200910101249
公開日2010年1月6日 申請日期2009年7月27日 優(yōu)先權(quán)日2009年7月27日
發(fā)明者徐達(dá)文, 朱洪留, 王讓定 申請人:寧波大學(xué)