本發(fā)明涉及一種可逆數(shù)據(jù)隱藏技術(shù),尤其是涉及一種H.264/AVC視頻可逆數(shù)據(jù)隱藏方法。
背景技術(shù):
因特網(wǎng)的普及和多媒體技術(shù)的快速發(fā)展,使得數(shù)字多媒體的應(yīng)用達(dá)到了前所未有的廣度和深度。人們不僅可以方便地下載和拷貝數(shù)字多媒體作品,而且還能憑借功能強(qiáng)大的多媒體工具對(duì)原始數(shù)據(jù)內(nèi)容加以修改,甚至以所有者的身份進(jìn)行分發(fā)和傳播。如何保證數(shù)字媒體不被盜用和非法傳播,如何確定數(shù)字媒體內(nèi)容的真實(shí)性和完整性、防止惡意篡改以及如何監(jiān)控未授權(quán)用戶,已經(jīng)成為亟待解決的熱點(diǎn)問題。信息隱藏是一種隱蔽通信、版權(quán)保護(hù)和內(nèi)容完整性認(rèn)證的有效技術(shù)手段??赡嫘畔㈦[藏是信息隱藏領(lǐng)域的一個(gè)重要分支,其能夠?qū)⑻囟ㄐ畔⑶度氲捷d體,并允許合法用戶在提取信息后無失真地恢復(fù)出原始載體,因而在軍事、遙感、醫(yī)學(xué)、司法等對(duì)內(nèi)容敏感的領(lǐng)域受到了廣泛關(guān)注。
鑒于H.264/AVC高效的編碼性能和良好的網(wǎng)絡(luò)適應(yīng)性,是目前應(yīng)用最普及的視頻編碼標(biāo)準(zhǔn),而視頻數(shù)據(jù)隱藏要考慮視頻壓縮編碼的影響,因此,對(duì)利用H.264/AVC視頻進(jìn)行可逆數(shù)據(jù)隱藏的方法的研究有著特別重要的意義。雖然圖像可逆數(shù)據(jù)隱藏得到了快速發(fā)展,但是如何結(jié)合H.264/AVC視頻數(shù)據(jù)特點(diǎn)實(shí)現(xiàn)高效的可逆數(shù)據(jù)隱藏,國內(nèi)外的研究也才剛剛開始,可逆數(shù)據(jù)隱藏和視頻編碼的結(jié)合還有很多難點(diǎn)問題有待解決。目前,現(xiàn)有的H.264/AVC視頻可逆數(shù)據(jù)隱藏方法主要是對(duì)量化殘差系數(shù)采用一維直方圖移位方式進(jìn)行數(shù)據(jù)嵌入,這種方法的嵌入容量還有進(jìn)一步提升的空間。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是提供一種H.264/AVC視頻可逆數(shù)據(jù)隱藏方法,其在與H.264/AVC視頻壓縮編碼標(biāo)準(zhǔn)相兼容的前提下進(jìn)行可逆數(shù)據(jù)隱藏,且計(jì)算復(fù)雜度低、對(duì)H.264/AVC視頻碼流的碼率影響很小、嵌入容量高,其能夠保證隱秘信息有效地被提取出,并且在提取隱秘信息后可以完全恢復(fù)原始視頻。
本發(fā)明解決上述技術(shù)問題所采用的技術(shù)方案為:一種H.264/AVC視頻可逆數(shù)據(jù)隱藏方法,其特征在于包括H.264/AVC視頻可逆數(shù)據(jù)隱藏、隱秘信息提取和原始視頻恢復(fù)兩部分;
所述的H.264/AVC視頻可逆數(shù)據(jù)隱藏的具體過程為:
①_1、對(duì)H.264/AVC視頻的碼流進(jìn)行熵解碼,解碼得到H.264/AVC視頻中預(yù)測模式為Intra_4×4預(yù)測模式的每個(gè)宏塊中的每個(gè)4×4子塊中的所有的殘差系數(shù);
①_2、將H.264/AVC視頻中預(yù)測模式為Intra_4×4預(yù)測模式的第m個(gè)宏塊定義為當(dāng)前宏塊,其中,1≤m≤M,M表示H.264/AVC視頻中包含的預(yù)測模式為Intra_4×4預(yù)測模式的宏塊的總個(gè)數(shù);
①_3、將當(dāng)前宏塊中的第n個(gè)4×4子塊定義為當(dāng)前子塊,其中,1≤n≤N,N表示當(dāng)前宏塊中包含的4×4子塊的總個(gè)數(shù);
①_4、按照Zig-Zag順序掃描當(dāng)前子塊中的所有的殘差系數(shù),同時(shí)按0,1,…,15的順序?qū)Ξ?dāng)前子塊中的所有的殘差系數(shù)進(jìn)行編號(hào);然后確定當(dāng)前子塊對(duì)應(yīng)的隱秘信息嵌入?yún)^(qū)域,記為Rm,n,Rm,n=[Tm,n,1,Tm,n,2],其中,符號(hào)“[]”為區(qū)間表示符號(hào),Tm,n,1和Tm,n,2均表示當(dāng)前子塊中的殘差系數(shù)的編號(hào),Tm,n,1和Tm,n,2的取值范圍3≤Tm,n,1<Tm,n,2≤15;
①_5、從當(dāng)前子塊中的所有的殘差系數(shù)中提取出編號(hào)屬于Rm,n的所有的殘差系數(shù),并構(gòu)成一個(gè)殘差系數(shù)子集;然后對(duì)當(dāng)前子塊對(duì)應(yīng)的殘差系數(shù)子集中的殘差系數(shù)進(jìn)行兩兩組合配對(duì),具體為:當(dāng)該殘差系數(shù)子集中非零的殘差系數(shù)的總個(gè)數(shù)為偶數(shù)時(shí),按序?qū)⒃摎埐钕禂?shù)子集中非零的殘差系數(shù)兩兩組合配對(duì);當(dāng)該殘差系數(shù)子集中非零的殘差系數(shù)的總個(gè)數(shù)為奇數(shù)時(shí),除該殘差系數(shù)子集中的第1個(gè)非零的殘差系數(shù)外按序?qū)⑹S嗟姆橇愕臍埐钕禂?shù)兩兩組合配對(duì);并將任一個(gè)配對(duì)記為其中,表示中的前一個(gè)殘差系數(shù),表示中的后一個(gè)殘差系數(shù);
①_6、對(duì)當(dāng)前子塊對(duì)應(yīng)的殘差系數(shù)子集中前后兩個(gè)殘差系數(shù)均大于或等于2的每個(gè)配對(duì)進(jìn)行移位以空出隱秘信息嵌入空間,對(duì)于如果且則對(duì)和均進(jìn)行加1移位;然后在移位的基礎(chǔ)上在當(dāng)前子塊對(duì)應(yīng)的殘差系數(shù)子集中的每個(gè)配對(duì)中嵌入隱秘信息,對(duì)于如果且或且則在中嵌入2個(gè)比特隱秘信息00或01或10或11;如果且或且則在中嵌入1個(gè)比特隱秘信息0或1,將嵌入隱秘信息后的配對(duì)記為
對(duì)當(dāng)前子塊對(duì)應(yīng)的殘差系數(shù)子集中前一個(gè)殘差系數(shù)小于或等于-2且后一個(gè)殘差系數(shù)大于或等于2的每個(gè)配對(duì)進(jìn)行移位以空出隱秘信息嵌入空間,對(duì)于如果且則對(duì)進(jìn)行減1移位,對(duì)進(jìn)行加1移位;然后在移位的基礎(chǔ)上在當(dāng)前子塊對(duì)應(yīng)的殘差系數(shù)子集中的每個(gè)配對(duì)中嵌入隱秘信息,對(duì)于如果且或且則在中嵌入2個(gè)比特隱秘信息00或01或10或11;如果且或且則在中嵌入1個(gè)比特隱秘信息0或1,將嵌入隱秘信息后的配對(duì)記為
對(duì)當(dāng)前子塊對(duì)應(yīng)的殘差系數(shù)子集中前一個(gè)殘差系數(shù)大于或等于2且后一個(gè)殘差系數(shù)小于或等于-2的每個(gè)配對(duì)進(jìn)行移位以空出隱秘信息嵌入空間,對(duì)于如果且則對(duì)進(jìn)行加1移位,對(duì)均進(jìn)行減1移位;然后在移位的基礎(chǔ)上在當(dāng)前子塊對(duì)應(yīng)的殘差系數(shù)子集中的每個(gè)配對(duì)中嵌入隱秘信息,對(duì)于如果且或且則在中嵌入2個(gè)比特隱秘信息00或01或10或11;如果且或且則在中嵌入1個(gè)比特隱秘信息0或1,將嵌入隱秘信息后的配對(duì)記為
對(duì)當(dāng)前子塊對(duì)應(yīng)的殘差系數(shù)子集中前后兩個(gè)殘差系數(shù)均小于或等于-2的每個(gè)配對(duì)進(jìn)行移位以空出隱秘信息嵌入空間,對(duì)于如果且則對(duì)和均進(jìn)行減1移位;然后在移位的基礎(chǔ)上在當(dāng)前子塊對(duì)應(yīng)的殘差系數(shù)子集中的每個(gè)配對(duì)中嵌入隱秘信息,對(duì)于如果且或且則在中嵌入2個(gè)比特隱秘信息00或01或10或11;如果且或且則在中嵌入1個(gè)比特隱秘信息0或1,將嵌入隱秘信息后的配對(duì)記為
①_7、令n=n+1,將當(dāng)前宏塊中的下一個(gè)4×4子塊作為當(dāng)前子塊,然后返回步驟①_4繼續(xù)執(zhí)行,直至當(dāng)前宏塊中的所有4×4子塊處理完畢;其中,n=n+1中的“=”為賦值符號(hào);
①_8、令m=m+1,將H.264/AVC視頻中預(yù)測模式為Intra_4×4預(yù)測模式的下一個(gè)宏塊作為當(dāng)前宏塊,然后返回步驟①_3繼續(xù)執(zhí)行,直至H.264/AVC視頻中預(yù)測模式為Intra_4×4預(yù)測模式的所有宏塊處理完畢;其中,m=m+1中的“=”為賦值符號(hào);
①_9、將H.264/AVC視頻中預(yù)測模式為Intra_4×4預(yù)測模式的每個(gè)宏塊中的每個(gè)4×4子塊對(duì)應(yīng)的隱秘信息嵌入?yún)^(qū)域的兩個(gè)端點(diǎn),發(fā)送到隱秘信息提取和原始視頻恢復(fù)端;
所述的隱秘信息提取和原始視頻恢復(fù)的具體過程為:
②_1、對(duì)含隱秘信息的H.264/AVC視頻的碼流進(jìn)行熵解碼,解碼得到含隱秘信息的H.264/AVC視頻中預(yù)測模式為Intra_4×4預(yù)測模式的每個(gè)宏塊中的每個(gè)4×4子塊中的所有的殘差系數(shù);
②_2、將含隱秘信息的H.264/AVC視頻中預(yù)測模式為Intra_4×4預(yù)測模式的第m個(gè)宏塊定義為當(dāng)前宏塊,其中,1≤m≤M,M亦表示含隱秘信息的H.264/AVC視頻中包含的預(yù)測模式為Intra_4×4預(yù)測模式的宏塊的總個(gè)數(shù);
②_3、將當(dāng)前宏塊中的第n個(gè)4×4子塊定義為當(dāng)前子塊,其中,1≤n≤N,N亦表示當(dāng)前宏塊中包含的4×4子塊的總個(gè)數(shù);
②_4、按照Zig-Zag順序掃描當(dāng)前子塊中的所有的殘差系數(shù),同時(shí)按0,1,…,15的順序?qū)Ξ?dāng)前子塊中的所有的殘差系數(shù)進(jìn)行編號(hào);然后確定當(dāng)前子塊對(duì)應(yīng)的隱秘信息提取區(qū)域,記為R'm,n,R'm,n=[T'm,n,1,T'm,n,2],其中,T'm,n,1和T'm,n,2均表示當(dāng)前子塊中的殘差系數(shù)的編號(hào),T'm,n,1=Tm,n,1,T'm,n,2=Tm,n,2;
②_5、從當(dāng)前子塊中的所有的殘差系數(shù)中提取出編號(hào)屬于R'm,n的所有的殘差系數(shù),并構(gòu)成一個(gè)殘差系數(shù)子集;然后對(duì)當(dāng)前子塊對(duì)應(yīng)的殘差系數(shù)子集中的殘差系數(shù)進(jìn)行兩兩組合配對(duì),具體為:當(dāng)該殘差系數(shù)子集中非零的殘差系數(shù)的總個(gè)數(shù)為偶數(shù)時(shí),按序?qū)⒃摎埐钕禂?shù)子集中非零的殘差系數(shù)兩兩組合配對(duì);當(dāng)該殘差系數(shù)子集中非零的殘差系數(shù)的總個(gè)數(shù)為奇數(shù)時(shí),除該殘差系數(shù)子集中的第1個(gè)非零的殘差系數(shù)外按序?qū)⑹S嗟姆橇愕臍埐钕禂?shù)兩兩組合配對(duì);并將任一個(gè)配對(duì)記為其中,表示中的前一個(gè)殘差系數(shù),表示中的后一個(gè)殘差系數(shù);
②_6、在當(dāng)前子塊對(duì)應(yīng)的殘差系數(shù)子集中的每個(gè)配對(duì)中提取出隱秘信息,對(duì)于若或或則從中提取出2個(gè)比特隱秘信息00;若或或則從中提取出2個(gè)比特隱秘信息01;若或或則從中提取出2個(gè)比特隱秘信息10;若或或則從中提取出2個(gè)比特隱秘信息11;若或或或則從中提取出1個(gè)比特隱秘信息0;若或或或則從中提取出1個(gè)比特隱秘信息1;其中,符號(hào)“||”為取絕對(duì)值符號(hào),為大于2的整數(shù),為大于2的整數(shù),為小于-2的整數(shù),為大于2的整數(shù);
②_7、對(duì)當(dāng)前子塊對(duì)應(yīng)的殘差系數(shù)子集中的每個(gè)配對(duì)進(jìn)行原始數(shù)據(jù)恢復(fù),對(duì)于將經(jīng)原始數(shù)據(jù)恢復(fù)后得到的配對(duì)記為若或或或則令且若或或或則令且若或或或則令且若或則令且若或則令且若或則令且若或則令且若且則令且其中,sign()為取符號(hào)函數(shù),
②_8、令n=n+1,將當(dāng)前宏塊中的下一個(gè)4×4子塊作為當(dāng)前子塊,然后返回步驟②_4繼續(xù)執(zhí)行,直至當(dāng)前宏塊中的所有4×4子塊處理完畢;其中,n=n+1中的“=”為賦值符號(hào);
②_9、令m=m+1,將含隱秘信息的H.264/AVC視頻中預(yù)測模式為Intra_4×4預(yù)測模式的下一個(gè)宏塊作為當(dāng)前宏塊,然后返回步驟②_3繼續(xù)執(zhí)行,直至含隱秘信息的H.264/AVC視頻中預(yù)測模式為Intra_4×4預(yù)測模式的所有宏塊處理完畢;其中,m=m+1中的“=”為賦值符號(hào)。
所述的步驟①_6中對(duì)當(dāng)前子塊對(duì)應(yīng)的殘差系數(shù)子集中的部分配對(duì)進(jìn)行移位的具體過程為:
若且則令以實(shí)現(xiàn)和的移位,其中,中的“=”為賦值符號(hào);
若則令以實(shí)現(xiàn)和的移位,其中,中的“=”為賦值符號(hào);
若且則令以實(shí)現(xiàn)和的移位,其中,中的“=”為賦值符號(hào);
若且則令以實(shí)現(xiàn)和的移位,其中,中的“=”為賦值符號(hào)。
所述的步驟①_6中在中嵌入隱秘信息,得到的具體過程為:
①_6a、若且則在中嵌入2個(gè)比特隱秘信息,當(dāng)待嵌入的2個(gè)比特隱秘信息為00時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為01時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為10時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為11時(shí),令
若且則在中嵌入2個(gè)比特隱秘信息,當(dāng)待嵌入的2個(gè)比特隱秘信息為00時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為01時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為10時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為11時(shí),令
若且則在中嵌入2個(gè)比特隱秘信息,當(dāng)待嵌入的2個(gè)比特隱秘信息為00時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為01時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為10時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為11時(shí),令
若且則在中嵌入1個(gè)比特隱秘信息,當(dāng)待嵌入的1個(gè)比特隱秘信息為0時(shí),令當(dāng)待嵌入的1個(gè)比特隱秘信息為1時(shí),令其中,x1為大于2的整數(shù);
若且則在中嵌入1個(gè)比特隱秘信息,當(dāng)待嵌入的1個(gè)比特隱秘信息為0時(shí),令當(dāng)待嵌入的1個(gè)比特隱秘信息為1時(shí),令其中,y1為大于2的整數(shù);
①_6b、若且則在中嵌入2個(gè)比特隱秘信息,當(dāng)待嵌入的2個(gè)比特隱秘信息為00時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為01時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為10時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為11時(shí),令
若且則在中嵌入2個(gè)比特隱秘信息,當(dāng)待嵌入的2個(gè)比特隱秘信息為00時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為01時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為10時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為11時(shí),令
若且則在中嵌入2個(gè)比特隱秘信息,當(dāng)待嵌入的2個(gè)比特隱秘信息為00時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為01時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為10時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為11時(shí),令
若且則在中嵌入1個(gè)比特隱秘信息,當(dāng)待嵌入的1個(gè)比特隱秘信息為0時(shí),令當(dāng)待嵌入的1個(gè)比特隱秘信息為1時(shí),令其中,x2為小于-2的整數(shù);
若且則在中嵌入1個(gè)比特隱秘信息,當(dāng)待嵌入的1個(gè)比特隱秘信息為0時(shí),令當(dāng)待嵌入的1個(gè)比特隱秘信息為1時(shí),令其中,y2為大于2的整數(shù);
①_6c、若且則在中嵌入2個(gè)比特隱秘信息,當(dāng)待嵌入的2個(gè)比特隱秘信息為00時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為01時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為10時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為11時(shí),令
若且則在中嵌入2個(gè)比特隱秘信息,當(dāng)待嵌入的2個(gè)比特隱秘信息為00時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為01時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為10時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為11時(shí),令
若且則在中嵌入2個(gè)比特隱秘信息,當(dāng)待嵌入的2個(gè)比特隱秘信息為00時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為01時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為10時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為11時(shí),令
若且則在中嵌入1個(gè)比特隱秘信息,當(dāng)待嵌入的1個(gè)比特隱秘信息為0時(shí),令當(dāng)待嵌入的1個(gè)比特隱秘信息為1時(shí),令其中,x3為大于2的整數(shù);
若且則在中嵌入1個(gè)比特隱秘信息,當(dāng)待嵌入的1個(gè)比特隱秘信息為0時(shí),令當(dāng)待嵌入的1個(gè)比特隱秘信息為1時(shí),令其中,y3為小于-2的整數(shù);
①_6d、若且則在中嵌入2個(gè)比特隱秘信息,當(dāng)待嵌入的2個(gè)比特隱秘信息為00時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為01時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為10時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為11時(shí),令
若且則在中嵌入2個(gè)比特隱秘信息,當(dāng)待嵌入的2個(gè)比特隱秘信息為00時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為01時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為10時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為11時(shí),令
若且則在中嵌入2個(gè)比特隱秘信息,當(dāng)待嵌入的2個(gè)比特隱秘信息為00時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為01時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為10時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為11時(shí),令
若且則在中嵌入1個(gè)比特隱秘信息,當(dāng)待嵌入的1個(gè)比特隱秘信息為0時(shí),令當(dāng)待嵌入的1個(gè)比特隱秘信息為1時(shí),令其中,x4為小于-2的整數(shù);
若且則在中嵌入1個(gè)比特隱秘信息,當(dāng)待嵌入的1個(gè)比特隱秘信息為0時(shí),令當(dāng)待嵌入的1個(gè)比特隱秘信息為1時(shí),令其中,y4為小于-2的整數(shù)。
所述的步驟②_6中從中提取出隱秘信息的具體過程為:
②_6a、若或或則從中提取出2個(gè)比特隱秘信息00;
若或或則從中提取出2個(gè)比特隱秘信息01;
若或或則從中提取出2個(gè)比特隱秘信息10;
若或或則從中提取出2個(gè)比特隱秘信息11;
若或則從中提取出1個(gè)比特隱秘信息0;其中,x1'為大于2的整數(shù),y1'為大于2的整數(shù);
若或則從中提取出1個(gè)比特隱秘信息1;
②_6b、若或或則從中提取出2個(gè)比特隱秘信息00;
若或或則從中提取出2個(gè)比特隱秘信息01;
若或或則從中提取出2個(gè)比特隱秘信息10;
若或或則從中提取出2個(gè)比特隱秘信息11;
若或則從中提取出1個(gè)比特隱秘信息0;其中,x2'為小于-2的整數(shù),y2'為大于2的整數(shù);
若或則從中提取出1個(gè)比特隱秘信息1;
②_6c、若或或則從中提取出2個(gè)比特隱秘信息00;
若或或則從中提取出2個(gè)比特隱秘信息01;
若或或則從中提取出2個(gè)比特隱秘信息10;
若或或則從中提取出2個(gè)比特隱秘信息11;
若或則從中提取出1個(gè)比特隱秘信息0;其中,x3'為大于2的整數(shù),y3'為小于-2的整數(shù);
若或則從中提取出1個(gè)比特隱秘信息1;
②_6d、若或或則從中提取出2個(gè)比特隱秘信息00;
若或或則從中提取出2個(gè)比特隱秘信息01;
若或或則從中提取出2個(gè)比特隱秘信息10;
若或或則從中提取出2個(gè)比特隱秘信息11;
若或則從中提取出1個(gè)比特隱秘信息0;其中,x4'為小于-2的整數(shù),y4'為小于-2的整數(shù);
若或則從中提取出1個(gè)比特隱秘信息1。
所述的步驟②_7中對(duì)進(jìn)行原始數(shù)據(jù)恢復(fù),得到的具體過程為:
②_7a、若或或或則令且
若或或或則令且
若或或或則令且
若或則令且
若或則令且
若且則令且
②_7b、若或或或則令且
若或或或則令且
若或或或則令且
若或則令且
若或則令且
若且則令且
②_7c、若或或或則令且
若或或或則令且
若或或或則令且
若或則令且
若或則令且
若且則令且
②_7d、若或或或則令且
若或或或則令且
若或或或則令且
若或則令且
若或則令且
若且則令且
與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于:
1)本發(fā)明方法在與H.264/AVC視頻壓縮編碼標(biāo)準(zhǔn)相兼容的前提下選擇4×4子塊中的殘差系數(shù)進(jìn)行擴(kuò)展或者移位實(shí)現(xiàn)可逆數(shù)據(jù)隱藏,不僅計(jì)算復(fù)雜度低,能夠滿足實(shí)時(shí)視頻的應(yīng)用需求,而且數(shù)據(jù)隱藏對(duì)H.264/AVC視頻碼流的碼率影響很小。
2)本發(fā)明方法將鄰近的兩個(gè)非零的殘差系數(shù)配對(duì)作為基本的嵌入單元,通過修改二維殘差系數(shù)直方圖來對(duì)殘差系數(shù)配對(duì)做擴(kuò)展或者移位實(shí)現(xiàn)隱秘信息的嵌入,出現(xiàn)頻率大的殘差系數(shù)對(duì)嵌入隱秘信息的比特位數(shù)多,在保持較好感知質(zhì)量的同時(shí),能夠提供高嵌入容量。
3)本發(fā)明方法能夠保證隱秘信息有效地被提取出,并且在提取隱秘信息后可以完全恢復(fù)原始視頻,可應(yīng)用于軍事、遙感、醫(yī)學(xué)、司法等重要領(lǐng)域。
附圖說明
圖1a為本發(fā)明方法中的H.264/AVC視頻可逆數(shù)據(jù)隱藏的總體實(shí)現(xiàn)框圖;
圖1b為本發(fā)明方法中的隱秘信息提取和原始視頻恢復(fù)的總體實(shí)現(xiàn)框圖;
圖2為本發(fā)明方法中隱秘信息嵌入和提取的示例圖。
具體實(shí)施方式
以下結(jié)合附圖實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)描述。
本發(fā)明提出的一種H.264/AVC視頻可逆數(shù)據(jù)隱藏方法,其包括H.264/AVC視頻可逆數(shù)據(jù)隱藏、隱秘信息提取和原始視頻恢復(fù)兩部分。
如圖1a所示,所述的H.264/AVC視頻可逆數(shù)據(jù)隱藏的具體過程為:
①_1、對(duì)H.264/AVC視頻的碼流進(jìn)行熵解碼,解碼得到H.264/AVC視頻中預(yù)測模式為Intra_4×4預(yù)測模式的每個(gè)宏塊中的每個(gè)4×4子塊中的所有的殘差系數(shù)。
①_2、將H.264/AVC視頻中預(yù)測模式為Intra_4×4預(yù)測模式的第m個(gè)宏塊定義為當(dāng)前宏塊,其中,1≤m≤M,M表示H.264/AVC視頻中包含的預(yù)測模式為Intra_4×4預(yù)測模式的宏塊的總個(gè)數(shù)。
①_3、將當(dāng)前宏塊中的第n個(gè)4×4子塊定義為當(dāng)前子塊,其中,1≤n≤N,N表示當(dāng)前宏塊中包含的4×4子塊的總個(gè)數(shù),由于宏塊的尺寸大小為16×16,因此N=16。
①_4、按照Zig-Zag順序掃描當(dāng)前子塊中的所有的殘差系數(shù),同時(shí)按0,1,…,15的順序?qū)Ξ?dāng)前子塊中的所有的殘差系數(shù)進(jìn)行編號(hào);然后確定當(dāng)前子塊對(duì)應(yīng)的隱秘信息嵌入?yún)^(qū)域,記為Rm,n,Rm,n=[Tm,n,1,Tm,n,2],其中,符號(hào)“[]”為區(qū)間表示符號(hào),Tm,n,1和Tm,n,2均表示當(dāng)前子塊中的殘差系數(shù)的編號(hào),Tm,n,1和Tm,n,2的取值范圍3≤Tm,n,1<Tm,n,2≤15,限定將隱秘信息嵌入中高頻殘差系數(shù)中。
①_5、從當(dāng)前子塊中的所有的殘差系數(shù)中提取出編號(hào)屬于Rm,n的所有的殘差系數(shù),并構(gòu)成一個(gè)殘差系數(shù)子集;然后對(duì)當(dāng)前子塊對(duì)應(yīng)的殘差系數(shù)子集中的殘差系數(shù)進(jìn)行兩兩組合配對(duì),具體為:當(dāng)該殘差系數(shù)子集中非零的殘差系數(shù)的總個(gè)數(shù)為偶數(shù)時(shí),按序?qū)⒃摎埐钕禂?shù)子集中非零的殘差系數(shù)兩兩組合配對(duì);當(dāng)該殘差系數(shù)子集中非零的殘差系數(shù)的總個(gè)數(shù)為奇數(shù)時(shí),除該殘差系數(shù)子集中的第1個(gè)非零的殘差系數(shù)外按序?qū)⑹S嗟姆橇愕臍埐钕禂?shù)兩兩組合配對(duì);并將任一個(gè)配對(duì)記為其中,表示中的前一個(gè)殘差系數(shù),表示中的后一個(gè)殘差系數(shù)。
①_6、對(duì)當(dāng)前子塊對(duì)應(yīng)的殘差系數(shù)子集中前后兩個(gè)殘差系數(shù)均大于或等于2的每個(gè)配對(duì)進(jìn)行移位以空出隱秘信息嵌入空間,對(duì)于如果且則對(duì)和均進(jìn)行加1移位;然后在移位的基礎(chǔ)上在當(dāng)前子塊對(duì)應(yīng)的殘差系數(shù)子集中的每個(gè)配對(duì)中嵌入隱秘信息,對(duì)于如果且或且則在中嵌入2個(gè)比特隱秘信息00或01或10或11;如果且或且則在中嵌入1個(gè)比特隱秘信息0或1,將嵌入隱秘信息后的配對(duì)記為
對(duì)當(dāng)前子塊對(duì)應(yīng)的殘差系數(shù)子集中前一個(gè)殘差系數(shù)小于或等于-2且后一個(gè)殘差系數(shù)大于或等于2的每個(gè)配對(duì)進(jìn)行移位以空出隱秘信息嵌入空間,對(duì)于如果且則對(duì)進(jìn)行減1移位,對(duì)進(jìn)行加1移位;然后在移位的基礎(chǔ)上在當(dāng)前子塊對(duì)應(yīng)的殘差系數(shù)子集中的每個(gè)配對(duì)中嵌入隱秘信息,對(duì)于如果且或且則在中嵌入2個(gè)比特隱秘信息00或01或10或11;如果且或且則在中嵌入1個(gè)比特隱秘信息0或1,將嵌入隱秘信息后的配對(duì)記為
對(duì)當(dāng)前子塊對(duì)應(yīng)的殘差系數(shù)子集中前一個(gè)殘差系數(shù)大于或等于2且后一個(gè)殘差系數(shù)小于或等于-2的每個(gè)配對(duì)進(jìn)行移位以空出隱秘信息嵌入空間,對(duì)于如果且則對(duì)進(jìn)行加1移位,對(duì)均進(jìn)行減1移位;然后在移位的基礎(chǔ)上在當(dāng)前子塊對(duì)應(yīng)的殘差系數(shù)子集中的每個(gè)配對(duì)中嵌入隱秘信息,對(duì)于如果且或且則在中嵌入2個(gè)比特隱秘信息00或01或10或11;如果且或且則在中嵌入1個(gè)比特隱秘信息0或1,將嵌入隱秘信息后的配對(duì)記為
對(duì)當(dāng)前子塊對(duì)應(yīng)的殘差系數(shù)子集中前后兩個(gè)殘差系數(shù)均小于或等于-2的每個(gè)配對(duì)進(jìn)行移位以空出隱秘信息嵌入空間,對(duì)于如果且則對(duì)和均進(jìn)行減1移位;然后在移位的基礎(chǔ)上在當(dāng)前子塊對(duì)應(yīng)的殘差系數(shù)子集中的每個(gè)配對(duì)中嵌入隱秘信息,對(duì)于如果且或且則在中嵌入2個(gè)比特隱秘信息00或01或10或11;如果且或且則在中嵌入1個(gè)比特隱秘信息0或1,將嵌入隱秘信息后的配對(duì)記為
在此具體實(shí)施例中,參見圖2,步驟①_6中對(duì)當(dāng)前子塊對(duì)應(yīng)的殘差系數(shù)子集中的部分配對(duì)進(jìn)行移位的具體過程為:
若且則令以實(shí)現(xiàn)和的移位,其中,中的“=”為賦值符號(hào);
若且則令以實(shí)現(xiàn)和的移位,其中,中的“=”為賦值符號(hào);
若且則令以實(shí)現(xiàn)和的移位,其中,中的“=”為賦值符號(hào);
若且則令以實(shí)現(xiàn)和的移位,其中,中的“=”為賦值符號(hào)。
在此具體實(shí)施例中,參見圖2,步驟①_6中在中嵌入隱秘信息,得到的具體過程為:
①_6a、若且則在中嵌入2個(gè)比特隱秘信息,當(dāng)待嵌入的2個(gè)比特隱秘信息為00時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為01時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為10時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為11時(shí),令
若且則在中嵌入2個(gè)比特隱秘信息,當(dāng)待嵌入的2個(gè)比特隱秘信息為00時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為01時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為10時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為11時(shí),令
若且則在中嵌入2個(gè)比特隱秘信息,當(dāng)待嵌入的2個(gè)比特隱秘信息為00時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為01時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為10時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為11時(shí),令
若且則在中嵌入1個(gè)比特隱秘信息,當(dāng)待嵌入的1個(gè)比特隱秘信息為0時(shí),令當(dāng)待嵌入的1個(gè)比特隱秘信息為1時(shí),令其中,x1為大于2的整數(shù)。
若且則在中嵌入1個(gè)比特隱秘信息,當(dāng)待嵌入的1個(gè)比特隱秘信息為0時(shí),令當(dāng)待嵌入的1個(gè)比特隱秘信息為1時(shí),令其中,y1為大于2的整數(shù)。
①_6b、若且則在中嵌入2個(gè)比特隱秘信息,當(dāng)待嵌入的2個(gè)比特隱秘信息為00時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為01時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為10時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為11時(shí),令
若且則在中嵌入2個(gè)比特隱秘信息,當(dāng)待嵌入的2個(gè)比特隱秘信息為00時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為01時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為10時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為11時(shí),令
若且則在中嵌入2個(gè)比特隱秘信息,當(dāng)待嵌入的2個(gè)比特隱秘信息為00時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為01時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為10時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為11時(shí),令
若且則在中嵌入1個(gè)比特隱秘信息,當(dāng)待嵌入的1個(gè)比特隱秘信息為0時(shí),令當(dāng)待嵌入的1個(gè)比特隱秘信息為1時(shí),令其中,x2為小于-2的整數(shù)。
若且則在中嵌入1個(gè)比特隱秘信息,當(dāng)待嵌入的1個(gè)比特隱秘信息為0時(shí),令當(dāng)待嵌入的1個(gè)比特隱秘信息為1時(shí),令其中,y2為大于2的整數(shù)。
①_6c、若且則在中嵌入2個(gè)比特隱秘信息,當(dāng)待嵌入的2個(gè)比特隱秘信息為00時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為01時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為10時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為11時(shí),令
若且則在中嵌入2個(gè)比特隱秘信息,當(dāng)待嵌入的2個(gè)比特隱秘信息為00時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為01時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為10時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為11時(shí),令
若且則在中嵌入2個(gè)比特隱秘信息,當(dāng)待嵌入的2個(gè)比特隱秘信息為00時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為01時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為10時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為11時(shí),令
若且則在中嵌入1個(gè)比特隱秘信息,當(dāng)待嵌入的1個(gè)比特隱秘信息為0時(shí),令當(dāng)待嵌入的1個(gè)比特隱秘信息為1時(shí),令其中,x3為大于2的整數(shù)。
若且則在中嵌入1個(gè)比特隱秘信息,當(dāng)待嵌入的1個(gè)比特隱秘信息為0時(shí),令當(dāng)待嵌入的1個(gè)比特隱秘信息為1時(shí),令其中,y3為小于-2的整數(shù)。
①_6d、若且則在中嵌入2個(gè)比特隱秘信息,當(dāng)待嵌入的2個(gè)比特隱秘信息為00時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為01時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為10時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為11時(shí),令
若且則在中嵌入2個(gè)比特隱秘信息,當(dāng)待嵌入的2個(gè)比特隱秘信息為00時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為01時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為10時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為11時(shí),令
若且則在中嵌入2個(gè)比特隱秘信息,當(dāng)待嵌入的2個(gè)比特隱秘信息為00時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為01時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為10時(shí),令當(dāng)待嵌入的2個(gè)比特隱秘信息為11時(shí),令
若且則在中嵌入1個(gè)比特隱秘信息,當(dāng)待嵌入的1個(gè)比特隱秘信息為0時(shí),令當(dāng)待嵌入的1個(gè)比特隱秘信息為1時(shí),令其中,x4為小于-2的整數(shù)。
若且則在中嵌入1個(gè)比特隱秘信息,當(dāng)待嵌入的1個(gè)比特隱秘信息為0時(shí),令當(dāng)待嵌入的1個(gè)比特隱秘信息為1時(shí),令其中,y4為小于-2的整數(shù)。
①_7、令n=n+1,將當(dāng)前宏塊中的下一個(gè)4×4子塊作為當(dāng)前子塊,然后返回步驟①_4繼續(xù)執(zhí)行,直至當(dāng)前宏塊中的所有4×4子塊處理完畢;其中,n=n+1中的“=”為賦值符號(hào)。
①_8、令m=m+1,將H.264/AVC視頻中預(yù)測模式為Intra_4×4預(yù)測模式的下一個(gè)宏塊作為當(dāng)前宏塊,然后返回步驟①_3繼續(xù)執(zhí)行,直至H.264/AVC視頻中預(yù)測模式為Intra_4×4預(yù)測模式的所有宏塊處理完畢;其中,m=m+1中的“=”為賦值符號(hào)。
①_9、將H.264/AVC視頻中預(yù)測模式為Intra_4×4預(yù)測模式的每個(gè)宏塊中的每個(gè)4×4子塊對(duì)應(yīng)的隱秘信息嵌入?yún)^(qū)域的兩個(gè)端點(diǎn),即Tm,n,1和Tm,n,2,發(fā)送到隱秘信息提取和原始視頻恢復(fù)端。
如圖1b所示,所述的隱秘信息提取和原始視頻恢復(fù)的具體過程為:
②_1、對(duì)含隱秘信息的H.264/AVC視頻的碼流進(jìn)行熵解碼,解碼得到含隱秘信息的H.264/AVC視頻中預(yù)測模式為Intra_4×4預(yù)測模式的每個(gè)宏塊中的每個(gè)4×4子塊中的所有的殘差系數(shù)。
②_2、將含隱秘信息的H.264/AVC視頻中預(yù)測模式為Intra_4×4預(yù)測模式的第m個(gè)宏塊定義為當(dāng)前宏塊,其中,1≤m≤M,M亦表示含隱秘信息的H.264/AVC視頻中包含的預(yù)測模式為Intra_4×4預(yù)測模式的宏塊的總個(gè)數(shù)。
②_3、將當(dāng)前宏塊中的第n個(gè)4×4子塊定義為當(dāng)前子塊,其中,1≤n≤N,N亦表示當(dāng)前宏塊中包含的4×4子塊的總個(gè)數(shù),由于宏塊的尺寸大小為16×16,因此N=16。
②_4、按照Zig-Zag順序掃描當(dāng)前子塊中的所有的殘差系數(shù),同時(shí)按0,1,…,15的順序?qū)Ξ?dāng)前子塊中的所有的殘差系數(shù)進(jìn)行編號(hào);然后確定當(dāng)前子塊對(duì)應(yīng)的隱秘信息提取區(qū)域,記為R'm,n,R'm,n=[T'm,n,1,T'm,n,2],其中,T'm,n,1和T'm,n,2均表示當(dāng)前子塊中的殘差系數(shù)的編號(hào),T'm,n,1=Tm,n,1,T'm,n,2=Tm,n,2。
②_5、從當(dāng)前子塊中的所有的殘差系數(shù)中提取出編號(hào)屬于R'm,n的所有的殘差系數(shù),并構(gòu)成一個(gè)殘差系數(shù)子集;然后對(duì)當(dāng)前子塊對(duì)應(yīng)的殘差系數(shù)子集中的殘差系數(shù)進(jìn)行兩兩組合配對(duì),具體為:當(dāng)該殘差系數(shù)子集中非零的殘差系數(shù)的總個(gè)數(shù)為偶數(shù)時(shí),按序?qū)⒃摎埐钕禂?shù)子集中非零的殘差系數(shù)兩兩組合配對(duì);當(dāng)該殘差系數(shù)子集中非零的殘差系數(shù)的總個(gè)數(shù)為奇數(shù)時(shí),除該殘差系數(shù)子集中的第1個(gè)非零的殘差系數(shù)外按序?qū)⑹S嗟姆橇愕臍埐钕禂?shù)兩兩組合配對(duì);并將任一個(gè)配對(duì)記為其中,表示中的前一個(gè)殘差系數(shù),表示中的后一個(gè)殘差系數(shù)。
②_6、在當(dāng)前子塊對(duì)應(yīng)的殘差系數(shù)子集中的每個(gè)配對(duì)中提取出隱秘信息,對(duì)于若或或則從中提取出2個(gè)比特隱秘信息00;若或或則從中提取出2個(gè)比特隱秘信息01;若或或則從中提取出2個(gè)比特隱秘信息10;若或或則從中提取出2個(gè)比特隱秘信息11;若或或或則從中提取出1個(gè)比特隱秘信息0;若或或或則從中提取出1個(gè)比特隱秘信息1;其中,符號(hào)“||”為取絕對(duì)值符號(hào),為大于2的整數(shù),為大于2的整數(shù),為小于-2的整數(shù),為大于2的整數(shù)。
在此具體實(shí)施例中,參見圖2,步驟②_6中從中提取出隱秘信息的具體過程為:
②_6a、若或或則從中提取出2個(gè)比特隱秘信息00。
若或或則從中提取出2個(gè)比特隱秘信息01。
若或或則從中提取出2個(gè)比特隱秘信息10。
若或或則從中提取出2個(gè)比特隱秘信息11。
若或則從中提取出1個(gè)比特隱秘信息0;其中,x1'為大于2的整數(shù),y1'為大于2的整數(shù)。
若或則從中提取出1個(gè)比特隱秘信息1。
②_6b、若或或則從中提取出2個(gè)比特隱秘信息00。
若或或則從中提取出2個(gè)比特隱秘信息01。
若或或則從中提取出2個(gè)比特隱秘信息10。
若或或則從中提取出2個(gè)比特隱秘信息11。
若或則從中提取出1個(gè)比特隱秘信息0;其中,x2'為小于-2的整數(shù),y2'為大于2的整數(shù)。
若或則從中提取出1個(gè)比特隱秘信息1。
②_6c、若或或則從中提取出2個(gè)比特隱秘信息00。
若或或則從中提取出2個(gè)比特隱秘信息01。
若或或則從中提取出2個(gè)比特隱秘信息10。
若或或則從中提取出2個(gè)比特隱秘信息11。
若或則從中提取出1個(gè)比特隱秘信息0;其中,x3'為大于2的整數(shù),y3'為小于-2的整數(shù)。
若或則從中提取出1個(gè)比特隱秘信息1。
②_6d、若或或則從中提取出2個(gè)比特隱秘信息00。
若或或則從中提取出2個(gè)比特隱秘信息01。
若或或則從中提取出2個(gè)比特隱秘信息10。
若或或則從中提取出2個(gè)比特隱秘信息11。
若或則從中提取出1個(gè)比特隱秘信息0;其中,x4'為小于-2的整數(shù),y4'為小于-2的整數(shù)。
若或則從中提取出1個(gè)比特隱秘信息1。
②_7、對(duì)當(dāng)前子塊對(duì)應(yīng)的殘差系數(shù)子集中的每個(gè)配對(duì)進(jìn)行原始數(shù)據(jù)恢復(fù),對(duì)于將經(jīng)原始數(shù)據(jù)恢復(fù)后得到的配對(duì)記為若或或或則令且若或或或則令且若或或或則令且若或則令且若或則令且若或則令且若或則令且若且則令且其中,sign()為取符號(hào)函數(shù),
在此具體實(shí)施例中,參見圖2,步驟②_7中對(duì)進(jìn)行原始數(shù)據(jù)恢復(fù),得到的具體過程為:
②_7a、若或或或則令且
若或或或則令且
若或或或則令且
若或則令且
若或則令且
若且則令且
②_7b、若或或或則令且
若或或或則令且
若或或或則令且
若或則令且
若或則令且
若且則令且
②_7c、若或或或則令且
若或或或則令且
若或或或則令且
若或則令且
若或則令且
若且則令且
②_7d、若或或或則令且
若或或或則令且
若或或或則令且
若或則令且
若或則令且
若且則令且
②_8、令n=n+1,將當(dāng)前宏塊中的下一個(gè)4×4子塊作為當(dāng)前子塊,然后返回步驟②_4繼續(xù)執(zhí)行,直至當(dāng)前宏塊中的所有4×4子塊處理完畢;其中,n=n+1中的“=”為賦值符號(hào)。
②_9、令m=m+1,將含隱秘信息的H.264/AVC視頻中預(yù)測模式為Intra_4×4預(yù)測模式的下一個(gè)宏塊作為當(dāng)前宏塊,然后返回步驟②_3繼續(xù)執(zhí)行,直至含隱秘信息的H.264/AVC視頻中預(yù)測模式為Intra_4×4預(yù)測模式的所有宏塊處理完畢;其中,m=m+1中的“=”為賦值符號(hào)。