內(nèi)的第二P幀進行編碼的流程示意圖;
[0022]圖4是利用本發(fā)明的圖像編碼方法對GOP內(nèi)的各個P幀編碼的示意圖;
[0023]圖5是本發(fā)明PO幀和Pl幀的結(jié)構(gòu)示意圖;
[0024]圖6是本發(fā)明第二實施方式中對GOP內(nèi)的第二 P幀進行編碼的流程示意圖;
[0025]圖7是本發(fā)明第一實施方式中圖像編碼裝置的結(jié)構(gòu)示意圖;
[0026]圖8是本發(fā)明實施方式的圖像編碼裝置中編碼模塊的結(jié)構(gòu)示意圖。
【具體實施方式】
[0027]下面對本發(fā)明所涉及到的技術(shù)名詞進行解釋。
[0028]P幀:在針對連續(xù)動態(tài)圖像編碼時,將連續(xù)若干幅圖像分成P、B、I三種類型,P幀由在它前面的P幀或者I幀預測而來,它比較與它前面的P幀或者I幀之間的相同信息或數(shù)據(jù),也即考慮運動的特性進行幀間壓縮。
[0029]I幀:幀內(nèi)編碼幀是一種自帶全部信息的獨立幀,無需參考其它圖像便可獨立進行解碼,視頻序列中的第一個幀始終都是I幀。
[0030]IDR幀:Instantaneous Decoding Refresh,即時解碼刷新。在編碼和解碼中為了方便,要首個I幀和其他I幀區(qū)別開,所以把首個I幀叫做IDR幀,方便控制編碼和解碼流程。IDR幀的作用是立刻刷新,使錯誤不致傳播,從IDR幀開始重新算一個新的序列開始編碼。IDR幀具有隨機訪問的能力,也會導致DPB (Decoded Picture Buffer,參考幀列表)清空。在IDR幀之后的所有幀都不能引用任何IDR幀之前的幀的內(nèi)容,從隨機存取的視頻流中,播放器永遠可以從一個IDR幀播放,因為在它之后沒有任何幀引用之前的幀。但是,不能在一個沒有IDR幀的視頻中從任意點開始播放,因為后面的幀總是會引用前面的幀。
[0031]幀間預測編碼:利用視頻圖像幀間的相關(guān)性,即時間相關(guān)性,來達到圖像壓縮的目的,廣泛用于普通電視、會議電視、視頻電話、高清晰度電視的壓縮編碼?;顒訄D像是由時間上以幀周期為間隔的連續(xù)圖像幀組成的時間圖像序列,它在時間上比在空間上具有更大的相關(guān)性。大多數(shù)電視圖像相鄰幀間細節(jié)變化是很小的,即視頻圖像幀間具有很強的相關(guān)性,利用幀所具有的相關(guān)性的特點進行幀間編碼,可獲得比幀內(nèi)編碼高得多的壓縮比。對于靜止圖像或活動很慢的圖像,可以少傳一些幀,如隔幀傳輸,未傳輸?shù)膸媒邮斩说膸鎯ζ髦星耙粠臄?shù)據(jù)作為該幀數(shù)據(jù),對視覺沒有什么影響。
[0032]幀內(nèi)預測編碼:H.264采用的一種新技術(shù),當編碼Intra圖像時可用幀內(nèi)預測。對于每個4X4塊(除了邊緣塊特別處置以外),每個像素都可用17個最接近的先前已編碼的像素的不同加權(quán)和(有的權(quán)值可為O)來預測,即此像素所在塊的左上角的17個像素。顯然,這種幀內(nèi)預測不是在時間上,而是在空間域上進行的預測編碼算法,可以除去相鄰塊之間的空間冗余度,取得更為有效的壓縮。
[0033]宏塊:Macro block,是視頻編碼技術(shù)中的一個基本概念。在視頻編碼中,一個編碼圖像通常劃分成若干宏塊組成,一個宏塊由一個亮度像素塊和附加的兩個色度像素塊組成。一般來說,亮度塊為16X16大小的像素塊,而兩個色度圖像像素塊的大小依據(jù)其圖像的采樣格式而定。每個圖像中,若干宏塊被排列成片的形式,視頻編碼算法以宏塊為單位,逐個宏塊進行編碼,組織成連續(xù)的視頻碼流。
[0034]下面結(jié)合附圖對本發(fā)明實施方式進行詳細說明。
[0035]請參閱圖1,為本發(fā)明圖像編碼方法第一實施方式的流程示意圖,本實施方式的圖像編碼方法包括但不限于以下步驟。
[0036]步驟S10,對一個畫面組GOP內(nèi)的至少兩個包括幀內(nèi)預測編碼宏塊的P幀依次進行編碼,使得經(jīng)過編碼的至少兩個P幀的幀內(nèi)預測編碼宏塊行數(shù)覆蓋一個完整的幀圖像。
[0037]在本實施方式中,將該GOP內(nèi)的第一幀編碼為即時解碼刷新IDR幀。在步驟SlO中,當發(fā)起點播時,編碼器將GOP內(nèi)的第一幀編碼為IDR幀,之后的所有幀都編碼為P幀。IDR幀可以使用正常的原始圖像編碼,也可以選擇一個虛擬圖像編碼,例如,可以使用全黑的圖像編碼。
[0038]第一幀采用IDR幀編碼,是為了解碼顯示端的兼容性。這一幀本身的圖像質(zhì)量對網(wǎng)絡(luò)播放沒有什么影響。
[0039]進一步地,該至少兩個P幀包括第一 P幀和第二 P幀,請參閱圖2,對一個畫面組GOP內(nèi)的至少兩個包括幀內(nèi)預測編碼宏塊的P幀依次進行編碼具體通過如下步驟實現(xiàn):
[0040]步驟S20,對一個畫面組GOP內(nèi)的第一 P幀進行編碼。其中,該GOP內(nèi)的任一幀包含L行宏塊,該第一 P幀包含a行幀內(nèi)預測編碼宏塊,L為正整數(shù),且0〈a〈L。
[0041]具體地,一個GOP內(nèi)的每個P幀均包括L行宏塊,其中的a行為幀內(nèi)預測編碼宏塊,L_a行為幀間預測編碼宏塊。
[0042]步驟S21,對該GOP內(nèi)的第二 P幀進行編碼。
[0043]其中,該第二 P幀和第一 P幀相鄰或中間至少間隔一個只包含幀間預測編碼宏塊的P幀。并且,該第二 P幀包含b行幀內(nèi)預測編碼宏塊,該第一 P幀包含的a行幀內(nèi)預測編碼宏塊與該第二 P幀包含的b行幀內(nèi)預測編碼宏塊存在相同行序號的宏塊,0〈b〈L。
[0044]進一步地,該第二 P幀包含的b行幀內(nèi)預測編碼宏塊比第一 P幀包含的a行幀內(nèi)預測編碼宏塊多m行,m為自然數(shù)。
[0045]該第一 P幀包含的a行幀內(nèi)預測編碼宏塊和第二 P幀包含的b行幀內(nèi)預測編碼宏塊相同行序號的宏塊數(shù)量N滿足如下關(guān)系:
[0046]NXX ^ G ;
[0047]其中,X為編碼器的基本編碼單元高度,G為編碼器搜索窗的最大垂直搜索范圍,N、X、G均為自然數(shù)。
[0048]參數(shù)a可以根據(jù)傳輸信道的需要進行調(diào)節(jié),a的值越大,幀內(nèi)預測編碼的速度越快,含有幀內(nèi)預測編碼宏塊的P幀最大比特數(shù)越大。
[0049]請參閱圖3,在一實施方式中,對該GOP內(nèi)的第二 P幀進行編碼具體通過如下步驟實現(xiàn):
[0050]步驟S30,將該第一 P幀包含的a行幀內(nèi)預測編碼宏塊的第一行向下移動y行以確定該第二 P幀的幀內(nèi)預測編碼宏塊的第一行。其中,0〈y〈L-a。
[0051]步驟S31,確定第二 P幀的b行幀預測編碼宏塊,以對該第二 P幀進行編碼。
[0052]請同時參閱圖4,下面以一個GOP內(nèi)包括若干個P幀對本實施方式進行說明。具體地,對一個GOP內(nèi)包括的若干個P幀進行編號,分別標記為PO、PU P2……Pk,k為自然數(shù)。如上所述的第一 P幀可以是GOP包括的若干個P幀中的第一個P幀,即,PO幀,但也可以是位于其他位置上的P幀。如上所述的第二 P幀可以是位于該第一 P幀相鄰位置上的Pl幀,也可以是位于與第一 P幀(PO幀)間隔一個或多個只包括幀間預測編碼宏塊P幀的位置上的P幀。
[0053]在本實施方式中,第二 P幀(Pl幀)所包含的b行幀內(nèi)預測編碼宏塊比第一 P幀(PO幀)所包含的a行幀內(nèi)預測編碼宏塊多m行,m為自然數(shù)。并且,該第二 P幀所包含