專利名稱:用于視頻通信的綜合抗誤碼視頻編碼方法
技術(shù)領(lǐng)域:
本發(fā)明屬于多々某體通信領(lǐng)域,具體地說是用 一種在發(fā)生傳輸錯(cuò)誤時(shí) 能用利用反饋信息快速高效率的恢復(fù)圖像的用于視頻通信的綜合抗誤 碼^L頻編碼方法,適用于支持宏塊級多參考幀的^L頻編碼器。
背景技術(shù):
隨著通信技術(shù)和網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,視頻通信系統(tǒng)正在得到越來 越廣泛的應(yīng)用。例如視頻會議、可視電話等。然而任何通信網(wǎng)絡(luò)都不能 保證傳輸過程完全可靠,特別是近年來逐漸得到廣泛應(yīng)用的無線網(wǎng)絡(luò)由 于受限于信號衰落、干擾和多徑傳輸?shù)鹊挠绊?,具有較高的誤碼率,所 以在易錯(cuò)信道特別是無線信道上的視頻通信對視頻編碼算法提出了較 高的要求。這就是視頻碼流應(yīng)當(dāng)具有一定的抗信道誤碼能力,在錯(cuò)誤發(fā) 生后,具有較強(qiáng)的錯(cuò)誤恢復(fù)能力。這也是擺在研究者面前的一個(gè)難題和 研究熱點(diǎn)。
目前在視頻通信系統(tǒng)中采用的各種視頻編碼算法都采用了傳統(tǒng)的 基于時(shí)間預(yù)測的混合-見頻編碼方法。通過時(shí)間預(yù)測,-見頻編碼算法盡可 能的充分利用了運(yùn)動圖像相鄰幀之間的相關(guān)性,減少了需要參加編碼的 圖像復(fù)雜度,從而獲得了比靜止圖像編碼算法高的多的壓縮率。但是, 時(shí)間預(yù)測也使得視頻碼流對誤碼格外的敏感,誤碼導(dǎo)致的解碼器和編碼 器中的參考幀不匹配會累積和擴(kuò)散,在下一個(gè)I幀到來之前,錯(cuò)誤會沿 著時(shí)域向后傳播,使后續(xù)圖像發(fā)生錯(cuò)誤,并且錯(cuò)誤區(qū)域逐漸擴(kuò)大。
在已經(jīng)得到廣泛應(yīng)用的H. 263和最新的視頻編碼算法H. 264中吸取 了多種行之有效的抗誤碼編碼方法,例如重同步,可逆變長編碼,數(shù)
據(jù)分區(qū),靈活宏塊順序,冗余條帶等。這些方法能在一定程度上減少誤 碼對圖像的破壞,使解碼的圖像質(zhì)量更好。然而這些方法無法自適應(yīng)信 道質(zhì)量,并且的抗誤碼能力依然非常有限,無法終止錯(cuò)誤傳播。在信道 誤碼率很低時(shí),它們降低了編碼效率,在信道誤碼率提高時(shí),它們的抗 誤碼效果又難以令人滿意。
除了抗誤碼編碼方法外,抗誤碼解碼和交互式抗誤碼編碼也是^L頻
通信中常用的抗誤碼方法??拐`碼解碼一般指解碼器的錯(cuò)誤掩蓋,它可 以在一定程度上恢復(fù)錯(cuò)誤的圖像,改善視覺效果,但是也不能終止錯(cuò)誤 傳播。交互式抗誤碼編碼出現(xiàn)在具有反饋信道的系統(tǒng)中, 一般是指通過 解碼器反饋的錯(cuò)誤信息調(diào)整編碼器的操作,使圖像的錯(cuò)誤能夠盡快恢 復(fù)。這種方法對編碼效率的影響較小,可以終止錯(cuò)誤傳播,但是存在延 遲問題。
盡上述三類方法都已經(jīng)得到了廣泛的研究,但是這些方法各自都有 缺點(diǎn)和不足,如何有效的把它們結(jié)合起來,在現(xiàn)有的視頻編碼算法的基 礎(chǔ)上得到實(shí)用的效率更高的抗誤碼性能仍然是一個(gè)值得研究的問題。
發(fā)明內(nèi)容
本發(fā)明的目的在于提出一種有效的把抗誤碼解碼和交互式抗誤碼 編碼綜合到現(xiàn)有的一見頻編碼算法中,在基本不降低編碼效率的前提下快 速高效率的終止錯(cuò)誤傳播的用于視頻通信的綜合抗誤碼視頻編碼方法。
為了實(shí)現(xiàn)上述目的,本發(fā)明包含以下步驟 在編碼器方
第一步驟、在編碼每幀圖像前,如果接收到解碼器的錯(cuò)誤反饋消息, 編碼器將對參考幀隊(duì)列中所有受到誤碼影響的參考幀進(jìn)行精確錯(cuò)誤區(qū) 域跟蹤和同步錯(cuò)誤掩蓋。使編碼器和解碼器的參考幀隊(duì)列恢復(fù)同步;
第二步驟、在編碼每個(gè)宏塊前,用新的編碼模式和多參考幀選擇算 法確定宏塊類型和編碼參數(shù);
第三步驟、在圖像編碼完畢后,保存所有宏塊的編碼模式,運(yùn)動矢
量、編碼殘差和4晉誤掩碼; 在解碼器方
第四步驟、對視頻碼流按照視頻解碼器的流程進(jìn)行解碼,并記錄所 有錯(cuò)誤宏塊的序號和錯(cuò)誤掩蓋方法;
第五步驟、在一幀圖像解碼完畢后,如果有誤碼,則發(fā)送錯(cuò)誤反饋 消息,包括幀序號,所有錯(cuò)誤宏塊的序號和錯(cuò)誤掩蓋方法到編碼器。
上述第一步驟的精確錯(cuò)誤區(qū)域跟蹤和同步錯(cuò)誤掩蓋實(shí)際上是結(jié)合 在一起進(jìn)行。
上述第 一 步驟的精確錯(cuò)誤區(qū)域跟蹤和同步錯(cuò)誤掩蓋包括如下步驟 第一步確定對應(yīng)解碼器出錯(cuò)的參考幀;
第二步對出錯(cuò)參考幀的所有錯(cuò)誤宏塊,用解碼器反饋的錯(cuò)誤掩蓋 方法進(jìn)4于4昔i吳掩蓋;
第三步將經(jīng)過第二步的錯(cuò)誤掩蓋后所有發(fā)生改變的像素的錯(cuò)誤掩 碼置T,標(biāo)記這些像素已經(jīng)被"污染"了;
第四步對于后續(xù)參考幀依次按如下方式進(jìn)行處理
對于每一幀的所有宏塊按照編碼順序,根據(jù)其編碼模式和運(yùn)動矢量 更新每個(gè)像素點(diǎn)的錯(cuò)誤掩碼
如果一個(gè)像素點(diǎn)只有一個(gè)參考點(diǎn),直接拷貝參考點(diǎn)的錯(cuò)誤掩碼;
如果一個(gè)像素點(diǎn)有多個(gè)參考點(diǎn),對多個(gè)參考點(diǎn)的錯(cuò)誤掩碼取邏輯 "或"的結(jié)果作為該像素點(diǎn)的錯(cuò)誤掩碼。
第五步用第四步得到的每個(gè)像素的新錯(cuò)誤掩碼判斷該像素是否需
要重建,如果錯(cuò)誤掩碼為T,在重建的參考幀中用預(yù)先保存的該像素 的編碼殘差和重新獲得的參考像素相加,得到該像素的重建值。
上述第二步驟的編碼模式和多參考幀選擇算法包括如下步驟 在編碼每一個(gè)宏塊前,首先計(jì)算I宏塊編碼的代價(jià)函數(shù),對于
H. 264,則是先選4奪最優(yōu)INTRA預(yù)測模式并得到最優(yōu)I宏塊編碼的代價(jià)
函數(shù);
做運(yùn)動估計(jì)首先在最近的參考幀上進(jìn)行,如果參考區(qū)域所有像素 的錯(cuò)誤掩碼全為'0,,則運(yùn)動估計(jì)結(jié)束,否則在參考幀隊(duì)列中向前依次 取參考幀進(jìn)行運(yùn)動估計(jì),直至參考區(qū)域所有像素的錯(cuò)誤掩碼全為'0, 或者參考幀耗盡,保存每一次運(yùn)動估計(jì)的運(yùn)動矢量和代價(jià)函數(shù);
I宏塊編碼的代價(jià)函數(shù)和所有運(yùn)動估計(jì)的代價(jià)函數(shù)一起取最小值, 確定宏塊的編碼模式,如果是P宏塊編碼,這一步還確定了參考幀和運(yùn) 動矢量。
上述第三步驟的保存所有宏塊的錯(cuò)誤掩碼均為全'0,。 本發(fā)明的基本設(shè)計(jì)思想是在出現(xiàn)誤碼時(shí),解碼器將無法正常解碼 的所有宏塊序號以及錯(cuò)誤掩蓋方法通知編碼器,編碼器根據(jù)反饋信息在 對應(yīng)參考幀的相應(yīng)宏塊進(jìn)行同樣的錯(cuò)誤掩蓋,并且標(biāo)記由于錯(cuò)誤掩蓋而 變化的像素的錯(cuò)誤掩碼為T,即被"污染"了。由于運(yùn)動補(bǔ)償,被"污 染,,的像素可能被后續(xù)幀參考使"污染"在后續(xù)圖像中傳播并且擴(kuò)散。 對后續(xù)圖像中因運(yùn)動補(bǔ)償而"污染"的像素,用預(yù)先保存的該像素的編 碼殘差和已經(jīng)完成了同步錯(cuò)誤掩蓋的參考^f象素相加,得到該像素新的重 建值,完成后續(xù)幀的同步錯(cuò)誤掩蓋。在完成同步錯(cuò)誤掩蓋后,編碼器和 解碼器的參考幀隊(duì)列恢復(fù)同步,錯(cuò)誤傳播完全停止了。為了進(jìn)一步提高 編碼效率,在每個(gè)宏塊編碼時(shí)進(jìn)行新的編碼模式和多參考幀選擇,用新
7
的方法盡量避開對誤差較大的"污染"區(qū)域的參考。通過這些方法,本 發(fā)明盡可能窮盡了在存在反饋信道的條件下的視頻編碼器的錯(cuò)誤恢復(fù) 能力,無論是^"誤恢復(fù)時(shí)間和圖〗象峰值信噪比都優(yōu)于目前已有的方法。
圖1為本發(fā)明的原理框圖。
圖2 a為本發(fā)明以H. 263為例的精確的錯(cuò)誤跟蹤(黑色部分是"污 染"區(qū)域)出錯(cuò)參考幀。
圖2 (b)為本發(fā)明以H. 263為例的精確的錯(cuò)誤跟蹤后續(xù)參考幀。 圖3為本發(fā)明多參考幀選擇示意圖。 圖4為本發(fā)明編碼器的流程圖。 圖5為本發(fā)明解碼器的流程圖。
圖中r。到r^是參考幀隊(duì)列,m。到m^保存每個(gè)參考幀的錯(cuò)誤掩碼, mv。到mvh保存每個(gè)參考幀所有宏塊的編碼模式和運(yùn)動矢量,E。到Eh 保存每一幀的編碼殘差。
具體實(shí)施例方式
下面結(jié)合附圖及實(shí)施例對本發(fā)明作進(jìn)一步的詳細(xì)描述。 本發(fā)明提出的用于視頻通信的綜合抗誤碼編碼方法主要包括精確 錯(cuò)誤區(qū)域跟蹤、同步錯(cuò)誤掩蓋、編碼模式和多參考幀選擇三部分。這三 部分密切相連,是一個(gè)不可分割的整體。其中精確錯(cuò)誤區(qū)域跟蹤在像素 級準(zhǔn)確的指示了編碼器參考幀隊(duì)列中每一幀的每個(gè)像素點(diǎn)是否和解碼 器對應(yīng)參考幀的同 一個(gè)像素點(diǎn)失去同步。同步錯(cuò)誤掩蓋重建所有失去同 步的像素點(diǎn),Y吏編碼器和解碼器的參考幀隊(duì)列恢復(fù)同步。編碼模式和多 參考幀選擇幫助編碼器在發(fā)生同步錯(cuò)誤掩蓋時(shí)為每個(gè)宏塊快速準(zhǔn)確的 選擇最佳的編碼模式和參數(shù)。在圖1中,虛線框外是一個(gè)標(biāo)準(zhǔn)的支持宏塊級多參考幀的視頻編碼
器,虛線框內(nèi)是本方法對視頻編碼器的補(bǔ)充。在H. 26x家族中,H. 263++ 和H. 264包含了對宏塊級多參考幀的支持。圖中R。到RN—i是參考幀隊(duì)列, M。到Mw保存每個(gè)參考幀的錯(cuò)誤掩碼,MV。到MVN—J呆存每個(gè)參考幀所有宏 塊的編碼才莫式和運(yùn)動矢量,E。到E^保存每一幀的編碼殘差。其中錯(cuò)誤
掩碼是一個(gè)和參考幀等大小的虛擬圖像,每個(gè)像素點(diǎn)是一個(gè)布爾值,表 示對應(yīng)參考幀相同位置的點(diǎn)是否被信道錯(cuò)誤"污染"了。下標(biāo)0到N-1 表示參考幀到當(dāng)前編碼幀的時(shí)間間隔。
1、精確錯(cuò)誤區(qū)域跟蹤視頻編碼器保存最近N個(gè)參考幀和它們的 錯(cuò)誤掩碼,編碼模式和運(yùn)動矢量以及編碼殘差。在最初沒有接收到錯(cuò)誤 反饋消息時(shí),編碼器將每個(gè)參考幀的錯(cuò)誤掩碼全部清'0,,表明畫面未 被"污染"。解碼器通過反饋信道發(fā)送錯(cuò)誤反饋消息通知編碼器錯(cuò)誤幀 的序號、所有出錯(cuò)宏塊的位置和對每個(gè)出錯(cuò)宏塊采用的錯(cuò)誤掩蓋方法。 在編碼每幀圖像前,如果接收到來自解碼器的錯(cuò)誤反饋消息,編碼器用 執(zhí)行如下三個(gè)步驟,否則跳過步驟1和步驟2:
步驟l:對于出錯(cuò)的參考幀,編碼器對所有錯(cuò)誤宏塊先進(jìn)行同步錯(cuò) 誤掩蓋步驟l,將錯(cuò)誤掩蓋后發(fā)生改變的像素的錯(cuò)誤掩碼全部置T, 標(biāo)記這些像素已經(jīng)被"污染"了。
步驟2:由于信道存在往返延遲,當(dāng)錯(cuò)誤反饋消息到達(dá)編碼器時(shí), 解碼器的參考幀隊(duì)列中已經(jīng)有若干幀圖像被錯(cuò)誤傳播"污染"了。所以 編碼器不但需要標(biāo)記出錯(cuò)參考幀的"污染"部分,還需要對所有后續(xù)的
參考幀標(biāo)記"污染"的部分。對于后續(xù)參考幀根據(jù)它們的編碼順序依次 進(jìn)行錯(cuò)誤跟蹤。方法是對于每一幀的所有宏塊按照編碼順序,根據(jù)其編 碼模式和運(yùn)動矢量更新每個(gè)像素點(diǎn)的錯(cuò)誤掩碼。
如果一個(gè)像素點(diǎn)只有一個(gè)參考點(diǎn),例如P宏塊的整像素運(yùn)動矢量或
者H. 264的I宏塊在垂直和水平預(yù)測時(shí),直接拷貝參考點(diǎn)的錯(cuò)誤掩碼; 如果一個(gè)像素點(diǎn)有多個(gè)參考點(diǎn)(或者說參考點(diǎn)為參考幀中多個(gè)像素點(diǎn)的 線性組合),例如P宏塊的半像素運(yùn)動矢量或者H. 264的I宏塊在對角 線方向預(yù)測時(shí),對多個(gè)參考點(diǎn)的錯(cuò)誤掩碼取邏輯"或"的結(jié)果作為該像 素點(diǎn)的錯(cuò)誤掩碼。
圖2以H. 263為例,假設(shè)運(yùn)動矢量都是整數(shù),誤碼導(dǎo)致解碼器無法 解碼第4個(gè)塊組最后6個(gè)宏塊,同步錯(cuò)誤掩蓋后所有像素均發(fā)生了變化, 故編碼器標(biāo)記該幀這6個(gè)宏塊對應(yīng)的錯(cuò)誤掩碼為全T,如圖2(a)。 在下一幀的l、 2、 3宏塊中,宏塊2是INTRA模式,由于H. 263的I宏 塊不參考其它像素,故宏塊數(shù)據(jù)和錯(cuò)誤掩碼均保持不變;宏塊1、 3由 于是P宏塊,并且參考區(qū)域包含了錯(cuò)誤掩碼非'0,的數(shù)據(jù),故編碼器 分別復(fù)制參考區(qū)域的錯(cuò)誤掩碼到宏塊l、 3。這個(gè)過程反復(fù)進(jìn)行,直到所 有后續(xù)參考幀都完成了錯(cuò)誤跟蹤和重建。
步驟3:在編碼器每編碼新的一幀圖像時(shí),由于編碼器和解碼器的 參考幀隊(duì)列已經(jīng)恢復(fù)同步,故所有錯(cuò)誤掩碼均為'0,。
通過這幾個(gè)步驟,編碼器可以在接收到錯(cuò)誤反饋消息后精確的建立 參考幀隊(duì)列中每一幀所有被"污染"的像素的精確位置。
精確錯(cuò)誤區(qū)域跟蹤的特點(diǎn)在于
a、 對于出錯(cuò)的參考幀,編碼器用和解碼器相同的錯(cuò)誤掩蓋方法做 同步錯(cuò)誤掩蓋,將發(fā)生改變的像素的錯(cuò)誤掩碼標(biāo)記為T,精確的得到 了這一幀所有受誤碼影響的像素點(diǎn);
b、 根據(jù)運(yùn)動矢量可以精確的判斷后續(xù)參考幀中所有受誤碼影響的 像素點(diǎn),為后續(xù)參考幀的同步錯(cuò)誤掩蓋提供了依據(jù)。
10
C 、精確錯(cuò)誤區(qū)域建立的參考幀錯(cuò)誤掩碼為編碼器更好的選擇編碼 模式和參考幀(第三節(jié))的選擇提供了依據(jù)。
2、 同步錯(cuò)誤掩蓋同步錯(cuò)誤掩蓋是指對被誤碼"污染"的參考幀, 編碼器用和解碼器相同的^l昔誤掩蓋方法重建所有凈皮"污染"的宏塊,并 且使編碼器和解碼器的參考幀隊(duì)列保持相同。分為兩個(gè)步驟
步驟l:在接收到解碼器的錯(cuò)誤反饋消息后,為了使編碼器的對應(yīng) 參考幀和解碼器保持一致,首先在出錯(cuò)參考幀中反饋消息報(bào)告的所有出
錯(cuò)宏塊用反饋消息中通知的錯(cuò)誤掩蓋方法進(jìn)行和解碼器同樣的錯(cuò)誤掩 蓋。然后進(jìn)行精確錯(cuò)誤區(qū)域跟蹤。
步驟2:在精確錯(cuò)誤區(qū)域跟蹤完成后,解碼器參考幀隊(duì)列中所有受 誤碼影響被"污染"的像素點(diǎn)均已確定。為了使編碼器和解碼器的參考 幀隊(duì)列保持同步,需要對后續(xù)參考幀依次進(jìn)行同步錯(cuò)誤掩蓋。
該方法是對于后續(xù)參考幀,根據(jù)每個(gè)像素的錯(cuò)誤掩碼判斷該像素是 否需要被重建。如果該像素的錯(cuò)誤掩碼為T,用預(yù)先保存的該像素的 編碼殘差和重新獲得的參考像素相加,得到該像素的重建值。
同步錯(cuò)誤掩蓋的特點(diǎn)在于
在同步錯(cuò)誤掩蓋完成后編碼器和解碼器的參考幀隊(duì)列恢復(fù)同步,錯(cuò) 誤傳播被完全停止。
3、 編碼模式和多參考幀選擇根據(jù)視頻圖像的時(shí)間相關(guān)性, 一般P 宏塊的參考幀在時(shí)間上越接近當(dāng)前幀,預(yù)測誤差越小??紤]到錯(cuò)誤掩碼 為T的像素由于誤差較大,為了提高預(yù)測精度,每個(gè)宏塊的運(yùn)動估 計(jì)首先在最近的參考幀上進(jìn)行,如果參考區(qū)域所有像素的錯(cuò)誤掩碼都是
'0,,則運(yùn)動估計(jì)結(jié)束,否則在參考幀隊(duì)列中向前依次取參考幀進(jìn)行運(yùn) 動估計(jì),直至在某一幀的參考區(qū)域的錯(cuò)誤掩碼都是'0,或者參考幀耗
盡(圖3 )。
編碼器的對每個(gè)宏塊的模式和參考幀選擇的步驟如下
步驟1:計(jì)算I宏塊編碼的代價(jià)函數(shù),對于H. 264,則是先選擇最 優(yōu)INTRA預(yù)測模式并得到最優(yōu)I宏塊編碼的代價(jià)函數(shù);
步驟2:取最近的重建幀作為參考幀,進(jìn)行運(yùn)動估計(jì),并且計(jì)算代 價(jià)函數(shù);
步驟3:如果參考區(qū)域沒有被"污染"(所有像素的錯(cuò)誤掩碼都是 '0,)或者參考幀耗盡,則運(yùn)動估計(jì)結(jié)束,否則再向前取一個(gè)重建幀作 為參考幀進(jìn)行運(yùn)動估計(jì),并且計(jì)算代價(jià)函數(shù),重復(fù)步驟3;
I宏塊編碼的代價(jià)函數(shù)和所有運(yùn)動估計(jì)的代價(jià)函數(shù)一起取最小值, 確定宏塊的編碼模式,如果是P宏塊編碼,這一步還確定了參考幀和運(yùn) 動矢量。
編碼模式和多參考幀選擇方法的特點(diǎn)在于
a、 為了減少運(yùn)動估計(jì)的計(jì)算量,本方法盡量減少參加運(yùn)動估計(jì)的 參考幀數(shù);
b、 為了減少預(yù)測誤差,盡量回避P宏塊對"污染"區(qū)域的參考;
c、 如果對"污染,,區(qū)域的參考的確是代價(jià)函數(shù)最小的,仍然允許P 宏塊參考"污染"區(qū)域。
如上所述,本發(fā)明提出的結(jié)合精確錯(cuò)誤區(qū)域跟蹤、同步錯(cuò)誤掩蓋和 多參考幀選擇的綜合抗誤碼視頻編碼方法在每次接收到錯(cuò)誤反饋消息 時(shí)通過錯(cuò)誤區(qū)域跟蹤精確得到參考幀隊(duì)列中所有受錯(cuò)誤傳播影響的區(qū) 域,并且通過同步錯(cuò)誤掩蓋重建所有受到影響的像素,使編碼器和解碼 器的參考幀隊(duì)列恢復(fù)同步,完全終止錯(cuò)誤傳播。通過編碼模式和多參考 幀選擇方法,本發(fā)明可以做到在編碼器接受到錯(cuò)誤反饋消息后幾幀時(shí)間
12內(nèi)將圖1象質(zhì)量恢復(fù)到無誤碼情況下的水平。本發(fā)明可以應(yīng)用于H. 263++、 H. 264等所有支持宏塊級參考幀選擇的視頻編碼算法,是一種通用的抗 誤碼纟見頻編碼方法。
本發(fā)明實(shí)際上是一種編碼器和解碼器協(xié)同抗誤碼的方法,解碼器方 的錯(cuò)誤反饋和編碼器方的精確錯(cuò)誤區(qū)域跟蹤、同步錯(cuò)誤掩蓋、編碼模式 和多參考幀選擇有機(jī)的結(jié)合成為一個(gè)整體,能夠在基本不降低編碼效率
的前提下快速終止錯(cuò)誤傳播。
本發(fā)明的實(shí)現(xiàn)過程分別在解碼器和編碼器中的流程圖(圖4和圖 5)。本發(fā)明的綜合抗誤碼處理過程主要包括如下步驟
在編碼器中
第一步驟(S11):編碼器確定對應(yīng)解碼器出錯(cuò)的參考幀后,對解碼 器第二步驟反饋的所有錯(cuò)誤宏塊序號,做同步錯(cuò)誤掩蓋步驟l,即將這
些宏塊用解碼器反饋的錯(cuò)誤掩蓋方法進(jìn)行和解碼器同樣的錯(cuò)誤掩蓋。再 做精確錯(cuò)誤區(qū)域跟蹤步驟1,將錯(cuò)誤掩蓋后發(fā)生改變的像素的錯(cuò)誤掩碼 全部置T,標(biāo)記這些像素已經(jīng)被"污染"了。
第二步驟(S12):由于信道存在往返延遲,當(dāng)反饋消息到達(dá)編碼器 時(shí),解碼器的參考幀隊(duì)列中已經(jīng)有若干幀圖像被錯(cuò)誤傳播"污染"了。 所以編碼器不但需要標(biāo)記出錯(cuò)的參考幀,還需要對所有后續(xù)重建的參考 幀標(biāo)記"污染,,的部分。對于后續(xù)參考幀根據(jù)它們的編碼順序依次進(jìn)行 精確錯(cuò)誤區(qū)域跟蹤步驟2。該方法是對于每一幀的所有宏塊根據(jù)其編碼 模式和運(yùn)動矢量更新每個(gè)像素點(diǎn)的錯(cuò)誤掩碼。如果一個(gè)像素點(diǎn)只有一個(gè) 參考點(diǎn),例如P宏塊的整像素運(yùn)動矢量或者H. 264的I宏塊在垂直和水 平預(yù)測時(shí),直接拷貝參考點(diǎn)的錯(cuò)誤掩碼;如果一個(gè)像素點(diǎn)有多個(gè)參考點(diǎn), 例如P宏塊的半像素運(yùn)動矢量或者H. 264的I宏塊在對角線方向預(yù)測時(shí),
對多個(gè)參考點(diǎn)的錯(cuò)誤掩碼取邏輯"或,,的結(jié)果作為該像素點(diǎn)的錯(cuò)誤掩碼。
在完成精確錯(cuò)誤區(qū)域跟蹤后,進(jìn)行同步錯(cuò)誤掩蓋步驟2,依次對后續(xù)參 考幀根據(jù)每個(gè)像素的錯(cuò)誤掩碼判斷該像素是否需要被重建。如果該像素 的錯(cuò)誤掩碼為T,用預(yù)先保存的該像素的編碼殘差和已經(jīng)完成了同步 錯(cuò)誤掩蓋的參考像素相加,得到該像素的重建值,完成同步錯(cuò)誤掩蓋。 使編碼器和解碼器對應(yīng)的參考幀恢復(fù)一致。
第三步驟(S13):每個(gè)宏塊首先計(jì)算I宏塊編碼的代價(jià)函數(shù),對于 H. 264,則是先選擇最優(yōu)INTRA預(yù)測模式并得到最優(yōu)I宏塊編碼的代價(jià) 函數(shù),然后進(jìn)行運(yùn)動估計(jì)。運(yùn)動估計(jì)首先在最近的參考幀上進(jìn)行,如果 參考區(qū)域所有像素的錯(cuò)誤掩碼全為'O,,則運(yùn)動估計(jì)結(jié)束,否則在參考 幀隊(duì)列中向前依次取參考幀進(jìn)行運(yùn)動估計(jì),直至參考區(qū)域所有像素的錯(cuò) 誤掩碼全為'0,或者參考幀耗盡,然后對不同參考幀運(yùn)動估計(jì)的代價(jià) 函數(shù)和I宏塊編碼的代價(jià)函數(shù)一起取最小值,確定宏塊的編碼模式,如 果是P宏塊編碼,這一步還確定了參考幀和運(yùn)動矢量。
第四步驟(S14):當(dāng)?shù)谌襟E選擇了 I模式宏塊編碼時(shí),對當(dāng)前宏 塊用指定視頻編碼算法進(jìn)行I宏塊編碼。
第五步驟(S15):當(dāng)?shù)谌襟E選擇了 P模式宏塊編碼時(shí),對當(dāng)前宏 塊用指定視頻編碼算法根據(jù)第三步驟選擇的參數(shù)進(jìn)行P宏塊編碼。
第六步驟(S16):編碼結(jié)束后的重建圖像進(jìn)入?yún)⒖紟?duì)列,它的所 有宏塊的編碼模式、運(yùn)動矢量、編碼殘差和錯(cuò)誤掩碼需要保存起來存入 類似的隊(duì)列(圖1)。
由于在同步錯(cuò)誤掩蓋后編碼器和解碼器的參考幀隊(duì)列恢復(fù)同步,錯(cuò) 誤傳播被完全停止。故步驟S16保存的圖像錯(cuò)誤掩碼為全'0,。
在解碼器中
第一步(S21 ):對由于誤碼而無法正常解碼的宏塊通常的做法是丟
棄錯(cuò)誤的數(shù)據(jù),用錯(cuò)誤掩蓋方法近似恢復(fù)宏塊的內(nèi)容,例如一種常用的 方法就是直接拷貝上一幀相同位置的宏塊。解碼器可以根據(jù)錯(cuò)誤宏塊的 特點(diǎn)選擇不同的錯(cuò)誤掩蓋方法,所以解碼器不但要記錄記錄誤碼宏塊的 序號,還要記錄這個(gè)宏塊使用的錯(cuò)誤掩蓋方法。
第二步(S22):在圖像解碼完畢后,將圖象序號,所有錯(cuò)誤宏塊序 號和它們使用的錯(cuò)誤掩蓋方法通過反饋信道發(fā)送到編碼器。根據(jù)這些信 息,編碼器將能夠重建對應(yīng)的參考幀并且和解碼器的輸出完全相同。
本說明書中未作詳細(xì)描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員公知的 現(xiàn)有技術(shù)。
權(quán)利要求
1、一種用于視頻通信的綜合抗誤碼視頻編碼方法,包含以下步驟在編碼器方第一步驟、在編碼每幀圖像前,如果接收到解碼器的錯(cuò)誤反饋消息,編碼器將對參考幀隊(duì)列中所有受到誤碼影響的參考幀進(jìn)行精確錯(cuò)誤區(qū)域跟蹤和同步錯(cuò)誤掩蓋。使編碼器和解碼器的參考幀隊(duì)列恢復(fù)同步;第二步驟、在編碼每個(gè)宏塊前,用新的編碼模式和多參考幀選擇算法確定宏塊類型和編碼參數(shù);第三步驟、在圖像編碼完畢后,保存所有宏塊的編碼模式,運(yùn)動矢量、編碼殘差和錯(cuò)誤掩碼;在解碼器方第四步驟、對視頻碼流按照視頻解碼器的流程進(jìn)行解碼,并記錄所有錯(cuò)誤宏塊的序號和錯(cuò)誤掩蓋方法;第五步驟、在一幀圖像解碼完畢后,如果有誤碼,則發(fā)送錯(cuò)誤反饋消息,包括幀序號,所有錯(cuò)誤宏塊的序號和錯(cuò)誤掩蓋方法到編碼器。
2、 如權(quán)利要求1所述的用于視頻通信的綜合抗誤碼視頻編碼方法, 其特征在于第一步驟的精確錯(cuò)誤區(qū)域跟蹤和同步錯(cuò)誤掩蓋實(shí)際上是結(jié)合在一起進(jìn)行。
3、 如權(quán)利要求1或2所述的用于視頻通信的綜合抗誤碼視頻編碼方法,其特征在于第一步驟的精確錯(cuò)誤區(qū)域跟蹤和同步錯(cuò)誤掩蓋包括 如下步驟第一步確定對應(yīng)解碼器出錯(cuò)的參考幀;第二步對出錯(cuò)參考幀的所有錯(cuò)誤宏塊,用解碼器反饋的錯(cuò)誤掩蓋 方法進(jìn)行錯(cuò)誤掩蓋;第三步將經(jīng)過第二步的錯(cuò)誤掩蓋后所有發(fā)生改變的像素的錯(cuò)誤掩 碼置T,標(biāo)記這些像素已經(jīng)被"污染"了;第四步對于后續(xù)參考幀依次按如下方式進(jìn)行處理 對于每一幀的所有宏塊按照編碼順序,根據(jù)其編碼模式和運(yùn)動矢量更新每個(gè)像素點(diǎn)的錯(cuò)誤掩碼如果一個(gè)像素點(diǎn)只有一個(gè)參考點(diǎn),直接拷貝參考點(diǎn)的錯(cuò)誤掩碼; 如果一個(gè)像素點(diǎn)有多個(gè)參考點(diǎn),對多個(gè)參考點(diǎn)的錯(cuò)誤掩碼取邏輯 "或"的結(jié)果作為該像素點(diǎn)的錯(cuò)誤掩碼。第五步用第四步得到的每個(gè)像素的新錯(cuò)誤掩碼判斷該像素是否需要重建,如果錯(cuò)誤掩碼為T,在重建的參考幀中用預(yù)先保存的該像素的編碼殘差和重新獲得的參考像素相加,得到該像素的重建值。
4、 如權(quán)利要求1所述的用于視頻通信的綜合抗誤碼視頻編碼方法, 其特征在于第二步驟的編碼模式和多參考幀選擇算法包括如下步驟在編碼每一個(gè)宏塊前,首先計(jì)算I宏塊編碼的代價(jià)函數(shù),對于 H. 264,則是先選擇最優(yōu)INTRA預(yù)測模式并得到最優(yōu)I宏塊編碼的代價(jià)函數(shù);做運(yùn)動估計(jì)首先在最近的參考幀上進(jìn)行,如果參考區(qū)域所有像素 的錯(cuò)誤掩碼全為'0',則運(yùn)動估計(jì)結(jié)束,否則在參考幀隊(duì)列中向前依次 取參考幀進(jìn)行運(yùn)動估計(jì),直至參考區(qū)域所有像素的錯(cuò)誤掩碼全為'0', 或者參考幀耗盡,保存每一次運(yùn)動估計(jì)的運(yùn)動矢量和代價(jià)函數(shù);I宏塊編碼的代價(jià)函數(shù)和所有運(yùn)動估計(jì)的代價(jià)函數(shù)一起取最小值, 確定宏塊的編碼模式,如果是P宏塊編碼,這一步還確定了參考幀和運(yùn) 動矢量。
5、 如權(quán)利要求1所述的用于視頻通信的綜合抗誤碼視頻編碼方法, 其特征在于第三步驟的保存所有宏塊的錯(cuò)誤掩碼均為全'0'。
全文摘要
本發(fā)明涉及一種用于視頻通信的綜合抗誤碼視頻編碼方法,包含以下步驟在編碼器方1.在編碼每幀圖像前,如果接收到解碼器的錯(cuò)誤反饋消息,編碼器將對參考幀隊(duì)列中所有受到誤碼影響的參考幀進(jìn)行精確錯(cuò)誤區(qū)域跟蹤和同步錯(cuò)誤掩蓋。使編碼器和解碼器的參考幀隊(duì)列恢復(fù)同步;2.在編碼每個(gè)宏塊前,用新的編碼模式和多參考幀選擇算法確定宏塊類型和編碼參數(shù);3.在圖像編碼完畢后,保存所有宏塊的編碼模式,運(yùn)動矢量、編碼殘差和錯(cuò)誤掩碼;在解碼器方1.對視頻碼流按照視頻解碼器的流程進(jìn)行解碼,并記錄所有錯(cuò)誤宏塊的序號和錯(cuò)誤掩蓋方法;2.在一幀圖像解碼完畢后,如果有誤碼,則發(fā)送錯(cuò)誤反饋消息,包括幀序號,所有錯(cuò)誤宏塊的序號和錯(cuò)誤掩蓋方法到編碼器。
文檔編號H04N7/64GK101207823SQ200710168410
公開日2008年6月25日 申請日期2007年11月22日 優(yōu)先權(quán)日2007年11月22日
發(fā)明者徐正全, 李茂全 申請人:武漢大學(xué)