專利名稱:視頻錯誤隱藏的系統(tǒng)和方法
技術(shù)領(lǐng)域:
一般地,本發(fā)明涉及視頻通信,更具體地,涉及視頻錯誤隱藏。
背景技術(shù):
視頻圖像越來越成為全球通信的重要部分。特別地,視頻會議和視頻電話具有廣泛的應(yīng)用范圍,諸如基于桌面和房間的會議、因特網(wǎng)和電話線上的視頻、監(jiān)督和監(jiān)視、遠(yuǎn)程醫(yī)療以及基于計算機(jī)的培訓(xùn)和教育。在各種這些應(yīng)用中,通過包括電話線、ISDN、DSL以及無線頻率在內(nèi)的遠(yuǎn)程通信鏈接,傳輸視頻和伴音信息。
視頻會議中使用的一種標(biāo)準(zhǔn)視頻格式是通用中間格式(CIF),該格式是國際電信聯(lián)盟(ITU)H.261視頻會議標(biāo)準(zhǔn)。最初的CIF格式也被稱作完全CIF或FCIF。還建立了其它分辨率高于或低于FCIF的格式。圖1是在根據(jù)現(xiàn)有技術(shù),認(rèn)為表示一個象素需要12位的情況下,不同視頻格式所需分辨率和比特率的列表。所示的比特率(每秒兆比特,Mbps)是未壓縮的彩色幀。
近年來,視頻信號的高效傳輸和接收需要對視頻及伴音數(shù)據(jù)進(jìn)行編碼和壓縮。視頻壓縮編碼是一種對數(shù)字視頻數(shù)據(jù)進(jìn)行編碼的方法,從而需要更小的存儲器存儲視頻數(shù)據(jù)并減少傳輸所需的帶寬。經(jīng)常將一定的壓縮/解壓縮(CODEC)方案用于壓縮視頻幀以減少所需的傳輸比特率。因此,CODEC硬件和軟件允許將數(shù)字視頻信號壓縮為比原始數(shù)字視頻格式(即未壓縮)更小的二進(jìn)制格式。
存在多種對源視頻信號進(jìn)行編碼和壓縮的方法和標(biāo)準(zhǔn)。一些方法被設(shè)計用于特定的應(yīng)用,諸如用于靜態(tài)圖像的JPEG(聯(lián)合圖片專家組),以及用于運動圖像的H.261、H.263、MPEG(運動圖像專家組)、MPEG-2以及MPEG-4。典型地,這些編碼標(biāo)準(zhǔn)使用了基于16×16象素塊的運動補(bǔ)償預(yù)測,一般地這些塊指宏塊。根據(jù)4:2:0采樣結(jié)構(gòu),宏塊是一種包含4個8×8亮度數(shù)據(jù)塊以及兩個對應(yīng)8×8色度數(shù)據(jù)塊的信息單元,其中在水平和垂直方向?qū)ι葦?shù)據(jù)進(jìn)行了2:1子采樣。
從實用性上講,還必須連同視頻數(shù)據(jù)一起,對音頻數(shù)據(jù)進(jìn)行壓縮、傳輸和同步。諸如H.320(基于ISDN的視頻會議)、H.324(基于POTS的視頻電話)以及H.323(基于LAN或IP的視頻會議)之類的標(biāo)準(zhǔn)均覆蓋到了同步、多路復(fù)用以及協(xié)議問題。H.263(或其前任H.261)提供了這些標(biāo)準(zhǔn)組的一部分視頻編碼。
運動估計和補(bǔ)償方案是一種典型用于減少視頻信號傳輸所需帶寬的傳統(tǒng)方法。由于宏塊是基本數(shù)據(jù)單元,所以運動估計和補(bǔ)償方案將當(dāng)前視頻幀的一個給定宏塊與之前被傳輸?shù)囊曨l幀中該給定宏塊周圍的區(qū)域進(jìn)行比較,并試圖找到接近的數(shù)據(jù)匹配。典型地,在之前被傳輸視頻幀中,接近匹配的宏塊到給定宏塊的空間偏移量小于該給定宏塊的寬度。如果找到了接近的數(shù)據(jù)匹配,此方案從在之前被傳輸視頻幀中接近匹配的偏移量宏塊減去當(dāng)前視頻幀中的給定宏塊,從而只需要對差別(即殘留)和空間偏移量進(jìn)行編碼和傳輸??臻g偏移量一般指運動矢量。如果運動估計和運動補(bǔ)償是有效的,則保留的殘留宏塊應(yīng)當(dāng)只包含用于說明一定數(shù)據(jù)以及運動矢量所必需的信息量,所述數(shù)據(jù)與從之前視頻幀到當(dāng)前視頻幀變化的象素相關(guān)。因此,不必將沒有變化的視頻幀區(qū)域(即背景)進(jìn)行編碼和傳輸。
傳統(tǒng)地,H.263標(biāo)準(zhǔn)指定將用于運動估計和運動補(bǔ)償?shù)倪\動矢量進(jìn)行差分編碼。盡管差分編碼減少了傳輸所需的數(shù)據(jù)量,但是一個宏塊丟失或破壞運動矢量數(shù)據(jù)的任何錯誤會對相鄰宏塊產(chǎn)生負(fù)面影響。結(jié)果是由于引起較低視頻質(zhì)量的被破壞數(shù)據(jù),引起了錯誤的傳播。
當(dāng)準(zhǔn)備在分組交換通信網(wǎng)絡(luò)中進(jìn)行視頻幀信息傳輸時,編碼方案將通過運動估計和補(bǔ)償技術(shù)進(jìn)行壓縮的視頻幀信息轉(zhuǎn)換為用于通過通信網(wǎng)絡(luò)進(jìn)行傳輸?shù)臄?shù)據(jù)分組。盡管數(shù)據(jù)分組使傳輸效率更高,但被丟失、破壞以及延遲的數(shù)據(jù)分組還是會引起導(dǎo)致視頻質(zhì)量下降的錯誤??蛇x地,可以在不同種類的通信網(wǎng)絡(luò)中傳輸視頻數(shù)據(jù),其中端點之一與電路交換網(wǎng)絡(luò)相關(guān),并且使用了網(wǎng)關(guān)或其它分組交換對電路交換網(wǎng)絡(luò)的橋接設(shè)備。
目前,數(shù)據(jù)分組的丟失會破壞經(jīng)常引起降低視頻質(zhì)量。因此,為了隱藏由于數(shù)據(jù)分組丟失引起的錯誤,需要能夠組織和傳輸數(shù)據(jù)分組的系統(tǒng)和方法。
發(fā)明內(nèi)容
本系統(tǒng)和方法克服或?qū)嵸|(zhì)上緩解了與視頻數(shù)據(jù)分組丟失相關(guān)的前述問題??偟膩碚f,本發(fā)明提供了具有隱藏視頻數(shù)據(jù)分組丟失引起的視頻錯誤能力的對分組交換網(wǎng)絡(luò)中傳輸?shù)囊曨l信息進(jìn)行編碼、重排序以及分組的系統(tǒng)和方法。
在典型實施例中,將視頻信號編碼為一組宏塊。然后宏塊重排序引擎將被稱作宏塊組標(biāo)識符(MBGID)的整數(shù)標(biāo)簽分配給每一個宏塊。優(yōu)勢在于,在一個典型實施例中,分配給相鄰宏塊的MBGID是不同的。然后宏塊打包引擎對這些宏塊進(jìn)行打包,從而將被分配有相同MBGID的宏塊打包到一起。針對那些將不同的MBGID分配給相鄰宏塊的實施例,則不將空間相鄰的宏塊打包到一起。此外,將諸如幀內(nèi)宏塊映射之類的對應(yīng)數(shù)據(jù)并入圖片報頭或由其它機(jī)制傳送,從而便于對應(yīng)的解碼處理。
然而在本發(fā)明的另一個實施例中,當(dāng)圖像處理引擎收到包括已編碼宏塊的數(shù)據(jù)分組時,進(jìn)行數(shù)據(jù)分組的解包、已編碼宏塊的排序以及解碼。在另一個實施例中,圖像處理引擎對接收到的數(shù)據(jù)分組進(jìn)行解包,然后按照這些宏塊被接收的次序進(jìn)行解碼以減少處理延時。如果丟失了一個或多個數(shù)據(jù)分組,使用伴隨著成功傳送數(shù)據(jù)分組宏塊的數(shù)據(jù)以減輕分組數(shù)據(jù)丟失的影響。根據(jù)丟失的宏塊是幀內(nèi)編碼還是幀間編碼,有不同方法補(bǔ)償丟失的宏塊。在進(jìn)行補(bǔ)償時,則可以顯示視頻信號。因此,本系統(tǒng)和方法能夠隱藏數(shù)據(jù)分組丟失引起的視頻錯誤。
圖1是根據(jù)現(xiàn)有技術(shù)各種視頻格式所需的分辨率及比特率列表;圖2是根據(jù)本發(fā)明典型視頻會議系統(tǒng)的框圖;圖3是圖2中視頻會議的典型視頻會議站的框圖;圖4是圖3中圖像處理引擎典型實施例的框圖;圖5是用于QCIF格式視頻幀的宏塊重排序模式典型示意圖,其中各個號碼是按照對應(yīng)空間位置分配給宏塊的;圖6是圖5中QCIF幀宏塊重排序模式的典型示意圖,其中丟失了包含宏塊MBGID=5的編碼宏塊數(shù)據(jù)的數(shù)據(jù)分組;圖7是根據(jù)本發(fā)明的一個實施例的二維內(nèi)插方案的框圖,其中使用了與位于相鄰宏塊的象素相關(guān)的數(shù)據(jù);圖8是根據(jù)本發(fā)明,用于估計丟失宏塊m的運動矢量的相鄰宏塊的典型框圖;圖9是根據(jù)本發(fā)明的一個實施例,用于視頻數(shù)據(jù)處理方法步驟的流程圖;以及圖10是根據(jù)本發(fā)明,當(dāng)接收視頻數(shù)據(jù)時用于視頻錯誤隱藏方法步驟的流程圖。
具體實施例方式
本發(fā)明隱藏了由數(shù)據(jù)分組丟失引起的視頻信號錯誤。本系統(tǒng)和方法與現(xiàn)有技術(shù)的區(qū)別之處在于按照靈活的視頻幀次序進(jìn)行宏塊的打包。與現(xiàn)有視頻編碼標(biāo)準(zhǔn)相比,按照宏塊重排序模式指定的次序進(jìn)行宏塊的打包。此外,對每一個宏塊的運動矢量進(jìn)行無差別地編碼。這些改進(jìn)試圖減輕通信鏈路中由數(shù)據(jù)分組丟失引起的干擾。本發(fā)明的范圍覆蓋了多種視頻標(biāo)準(zhǔn),包括,但并不限于H.261、H.263、H.264、MPEG、MPEg-2以及MPEG-4。
圖2示出了典型的視頻會議系統(tǒng)200。該視頻會議系統(tǒng)200包括本地視頻會議站202以及通過網(wǎng)絡(luò)206與其相連的遠(yuǎn)程視頻會議站204。盡管圖2只示出了兩個視頻會議站202和204,本領(lǐng)域技術(shù)人員會認(rèn)識到可以有更多與視頻會議系統(tǒng)200相連的視頻會議站。應(yīng)當(dāng)注意到可以在任何在其網(wǎng)絡(luò)中傳送視頻數(shù)據(jù)的通信系統(tǒng)中使用本系統(tǒng)和方法。該網(wǎng)絡(luò)可以是任意類型的電子傳輸介質(zhì),諸如,但并不限于POTS、電纜、光纖以及無線傳輸介質(zhì)。
圖3是典型視頻會議站300的框圖。簡單起見,盡管遠(yuǎn)程視頻會議站204(圖2)可以包括類似的結(jié)構(gòu),仍然利用本地視頻會議站202(圖2)對視頻會議站300進(jìn)行說明。在一個實施例中,視頻會議站300包括顯示裝置302、CPU304、存儲器306、至少一個視頻俘獲裝置308、圖像處理引擎310以及通信接口312??蛇x地,視頻會議站300還可以配有其它裝置,或不全是上述提供的指定裝置。至少一個視頻俘獲裝置308可以由電荷耦合器件(CCD)攝像機(jī)、互補(bǔ)金屬氧化物半導(dǎo)體(CMOS)攝像機(jī)或其它類型的圖像俘獲裝置實現(xiàn)。至少一個視頻俘獲裝置308俘獲用戶、會議房間或其它場景的圖像,并將這些圖像發(fā)送到圖像處理引擎310。典型地,在通信接口312將數(shù)據(jù)分組傳輸?shù)竭h(yuǎn)程視頻會議站204之前,圖像處理引擎310將視頻圖像處理為數(shù)據(jù)分組。將結(jié)合圖4對圖像處理引擎310進(jìn)行更詳細(xì)的說明。相反,圖像處理引擎310還將從遠(yuǎn)程視頻會議站204接收到的數(shù)據(jù)分組轉(zhuǎn)換為用于在顯示裝置302上顯示的視頻信號。
圖4是圖3中圖像處理引擎310的典型實施例。該圖像處理引擎310包括編碼引擎402、宏塊重排序引擎404、宏塊打包引擎406以及通信緩沖器408。首先,來自視頻俘獲裝置308(圖3)的視頻信號進(jìn)入編碼引擎402,編碼引擎402將每一幀視頻轉(zhuǎn)換為希望的格式,并將每一個視頻信號幀轉(zhuǎn)換為一組宏塊。宏塊是一種包含數(shù)據(jù)塊的數(shù)據(jù)單元,所述數(shù)據(jù)包括與圖片單元(也指象素)相關(guān)的亮度和色度分量。例如,在H.263中,一個色度采樣格式4:2:0的宏塊由四個8×8亮度數(shù)據(jù)塊以及兩個對應(yīng)的8×8色度數(shù)據(jù)塊,。一個8×8數(shù)據(jù)塊是數(shù)據(jù)的8行乘8列矩陣,其中每一個數(shù)據(jù)對應(yīng)該視頻幀的一個象素。4:2:0色度格式宏塊包括覆蓋了此視頻幀16象素×16象素部分的數(shù)據(jù)。不過,本發(fā)明并不限于傳統(tǒng)定義的宏塊,而可以將其擴(kuò)展到任何包括亮度和/或色度數(shù)據(jù)的數(shù)據(jù)單元。此外,本發(fā)明的范圍覆蓋了其它的采樣格式,諸如包括四個8×8亮度數(shù)據(jù)塊以及四個對應(yīng)的8×8色度數(shù)據(jù)塊的4:2:2色度采樣格式,或是包括四個8×8亮度數(shù)據(jù)塊以及八個對應(yīng)的8×8色度數(shù)據(jù)塊的4:4:4色度采樣格式。
此外,編碼引擎402對每一個宏塊進(jìn)行編碼(即壓縮)以減少用于表示數(shù)據(jù)內(nèi)容的比特數(shù)目。可以對每一個宏塊進(jìn)行“幀內(nèi)編碼”或“幀間編碼”,且一幀中可以包括幀內(nèi)編碼宏塊與幀間編碼宏塊的任意組合。使用時間相似性(即來自一幀的宏塊與來自之前幀的接近匹配宏塊之間存在的相似性)進(jìn)行幀間編碼宏塊的編碼。特別地,給定幀間編碼宏塊包括給定宏塊和來自之前視頻幀的接近匹配宏塊之間差值的編碼。來自之前視頻幀的接近匹配宏塊包括與某些象素相關(guān)的數(shù)據(jù),這些象素是到與給定宏塊相關(guān)象素的偏移。可選地,沒有使用來自其它視頻幀的信息,以類似于JPEG靜態(tài)圖像編碼標(biāo)準(zhǔn)使用的方式,對幀內(nèi)編碼的宏塊進(jìn)行編碼。
例如,為了確定是否應(yīng)當(dāng)將給定宏塊作為幀間編碼宏塊進(jìn)行編碼,編碼引擎402計算當(dāng)前視頻幀中給定宏塊的數(shù)據(jù)與來自之前視頻幀宏塊數(shù)據(jù)(指偏移宏塊)之間的差值,例如,通過宏塊內(nèi)數(shù)據(jù)之間的平均絕對誤差或均方誤差可以得到這種差值,所述數(shù)據(jù)對應(yīng)著位于共同定位位置的象素。針對給定的宏塊,編碼引擎402計算用于多個偏移宏塊的誤差。如果編碼引擎402只發(fā)現(xiàn)誤差均大于預(yù)定的差閾值,則在來自給定宏塊的數(shù)據(jù)和來自之前幀的數(shù)據(jù)之間不存在足夠的相似性,并對該宏塊進(jìn)行幀內(nèi)編碼。不過,針對給定宏塊和給定來自之前幀的偏移宏塊,如果發(fā)現(xiàn)有一個誤差小于預(yù)定的差閾值,則對給定宏塊進(jìn)行幀間編碼。
為了對給定宏塊進(jìn)行幀間編碼,編碼引擎402從偏移宏塊的數(shù)據(jù)中減去給定宏塊的數(shù)據(jù)(即針對每一個象素,從與偏移宏塊中對應(yīng)象素相關(guān)的亮度和色度數(shù)據(jù)中減去與給定宏塊象素相關(guān)的亮度和色度數(shù)據(jù))以給出差異數(shù)據(jù),使用諸如離散余弦變換之類的標(biāo)準(zhǔn)編碼技術(shù)以及其中的量化方法對差值數(shù)據(jù)進(jìn)行編碼,確定從給定宏塊到偏移宏塊的偏移矢量(指運動矢量)并對該偏移矢量進(jìn)行編碼。
目前,諸如H.261和H.263之類的視頻編碼標(biāo)準(zhǔn)指定對幀間編碼宏塊的運動矢量進(jìn)行差分編碼以提供編碼效率。不過,由于通常與給定宏塊相關(guān)的編碼運動矢量數(shù)據(jù)并不獨立于相鄰宏塊的運動矢量數(shù)據(jù),所以差分編碼使得由丟失或被破壞的運動矢量數(shù)據(jù)造成的錯誤傳播到相鄰宏塊,而這些宏塊是沒有解碼錯誤的。因此,給定宏塊運動矢量數(shù)據(jù)的影響并沒有在空間上停留于給定的宏塊中,不過,如果每一個幀間編碼的運動矢量都使用非差分編碼,則將運動矢量數(shù)據(jù)的影響停留于給定的宏塊。結(jié)果明顯增大了錯誤再次出現(xiàn)的能力(resilience)。在大多數(shù)情況下,運動矢量的編碼方法從差分到非差分技術(shù)的變化引起整個編碼效率的少量損失(典型地減少幾個百分比)。優(yōu)勢在于,與傳統(tǒng)方法相反,根據(jù)本發(fā)明的一個實施例,不對每一個幀間編碼宏塊相關(guān)的運動矢量分量使用差分編碼。
在本發(fā)明另一個實施例中,編碼引擎402可以使用“繞行更新(walk-around-refresh)”機(jī)制對幀的宏塊進(jìn)行幀內(nèi)編碼。這種“繞行更新”機(jī)制是一種通過對每一幀特定模式的宏塊進(jìn)行幀內(nèi)編碼,從而清除被稱為數(shù)據(jù)漂移的參考幀失配的確定性機(jī)制。在對當(dāng)前幀幀間編碼宏塊解碼中,編碼引擎402使用參考幀的宏塊作為偏移宏塊。在本發(fā)明一個實施例中,“繞行更新”機(jī)制使用從一組預(yù)定整數(shù)繞行間隔中選擇的一個整數(shù)繞行間隔w,對一種模式宏塊進(jìn)行幀內(nèi)編碼。例如,如果w=47,則編碼引擎402每w個宏塊進(jìn)行以幀內(nèi)編碼??梢愿鶕?jù)視頻數(shù)據(jù)傳輸率和錯誤率選擇繞行間隔。當(dāng)遠(yuǎn)程視頻會議站204(圖2)的編碼引擎接收到“繞行更新”的幀內(nèi)編碼宏塊時,這些“繞行更新”的幀內(nèi)編碼宏塊的幀內(nèi)宏塊取代了來自之前幀的對應(yīng)宏塊,該對應(yīng)宏塊可能由于視頻數(shù)據(jù)傳輸錯誤可能已被破壞。當(dāng)遠(yuǎn)程視頻會議站204的編碼引擎使用被破壞的宏塊作為參考宏塊用于解碼其它接收到的宏塊時,任何由于視頻數(shù)據(jù)傳輸錯誤可能已被破壞(且沒有被取代)的宏塊會進(jìn)一步傳播并可能擴(kuò)大數(shù)據(jù)漂移。因此,“繞行更新”幀內(nèi)編碼宏塊向遠(yuǎn)程視頻會議站204的編碼引擎提供了被用作參考宏塊的一組“新鮮”的幀內(nèi)編碼宏塊,由此減少了數(shù)據(jù)漂移的傳播。
此外,編碼引擎402可以產(chǎn)生識別編碼的視頻幀中哪一個宏塊是幀內(nèi)編碼的幀內(nèi)宏塊映射。在產(chǎn)生了幀內(nèi)宏塊映射以后,圖像處理引擎310將該映射發(fā)送到遠(yuǎn)程視頻會議站204。即使使用了其它字段,還可以將該映射作為例如與編碼的視頻幀相關(guān)的圖片報頭字段的一部分發(fā)送。
根據(jù)本發(fā)明,編碼引擎402可以兩種方式中的一種產(chǎn)生幀內(nèi)宏塊映射。在本發(fā)明一個實施例中,編碼引擎402使用形成長度(run-length)編碼以說明此幀中幀內(nèi)編碼宏塊的位置。形成長度編碼是一種減少重復(fù)字符串?dāng)?shù)量的技術(shù)。在本發(fā)明的另一個實施例中,編碼引擎402產(chǎn)生位圖,其中位圖中的每一比特對應(yīng)該幀的一個宏塊。一個比特的值標(biāo)識了對應(yīng)的宏塊編碼類型。例如,在本發(fā)明的一個實施例中,“1”比特表示對應(yīng)宏塊是幀內(nèi)編碼。在本發(fā)明另一個實施例中,“1”比特對應(yīng)宏塊是幀間編碼。可以設(shè)想將其它用于產(chǎn)生幀內(nèi)宏塊映射的方法用于本發(fā)明。
仍在本發(fā)明另一個實施例中,編碼引擎402選擇產(chǎn)生最少比特數(shù)目的幀內(nèi)宏塊映射編碼方法。例如,352×288象素(即水平分辨率352象素乘垂直分辨率288象素)FCIF視頻幀包括396個結(jié)構(gòu)為22×18宏塊矩陣的宏塊。不包括任何可能需要的比特開銷,編碼方法的位圖需要396比特(一個比特用于一個宏塊)。因此,獨立于FCIF幀中幀內(nèi)編碼宏塊的數(shù)目,將396比特用于發(fā)送編碼的幀內(nèi)宏塊映射的位置。不過相反,用于發(fā)送形成長度編碼幀內(nèi)宏塊映射的比特數(shù)目取決于該FCIF幀中幀內(nèi)編碼宏塊的數(shù)目。發(fā)送形成長度編碼幀內(nèi)宏塊映射的成本是每一個幀內(nèi)宏塊8個比特(即每一個形成值8比特),其中形成值確定了在該FCIF幀中幀內(nèi)編碼宏塊的位置。因此,如果該FCIF幀包括n個幀內(nèi)宏塊,則需要8n比特用于傳送該形成長度編碼的幀內(nèi)宏塊映射。
因此,如果CIF幀包括少于50個幀內(nèi)編碼宏塊(n<50),則源編碼引擎402選擇形成長度編碼方法,否則該源編碼引擎402選擇位圖編碼方法。幀內(nèi)宏塊映射編碼方法的選擇取決于視頻格式,在典型實施例中視頻格式是FCIF視頻幀格式。
隨后,將編碼的宏塊轉(zhuǎn)送到宏塊重排序引擎404。該宏塊重排序引擎404對編碼的宏塊重新排序。特別地,從多個宏塊組標(biāo)識符(MBGID)中給每一個宏塊分配一個MBGID。在本發(fā)明一個典型實施例中,根據(jù)圖5所示的典型宏塊分配模式,針對有9行,每行11個宏塊的QCIF格式幀,對這些宏塊從1到6進(jìn)行編號。最大MBGID指最大組標(biāo)識符(MGID)。在圖5典型實施例中,MGID=6。如圖所示,按照一定方式分配MBGID,從而使被分配有相同MBGID的相鄰宏塊最少。可選地,其它分配模式將相同MBGID分配給相鄰的宏塊或按照其它任意分配次序。
下面進(jìn)一步結(jié)合圖6進(jìn)行說明,對宏塊進(jìn)行分配,從而相鄰宏塊分配不同的MBGID,其優(yōu)勢在于因為丟失的數(shù)據(jù)分組宏塊在一幀的空間中交叉散布,因此這樣使在一幀的一個區(qū)域集中的錯誤最少。由于一幀中由丟失分組引起的錯誤集中于一個區(qū)域的可能性較小,可以使用來自相鄰宏塊的數(shù)據(jù)更準(zhǔn)確的重構(gòu)與丟失宏塊相關(guān)的丟失數(shù)據(jù)。換句話說,如果幀中的數(shù)據(jù)丟失沒有空間停留于某一區(qū)域,則能夠更準(zhǔn)確地確定來自相鄰宏塊的數(shù)據(jù)空間插值或?qū)G失宏塊運動矢量的估計。
遠(yuǎn)程視頻會議站204(圖2)中圖像處理引擎310(圖3)的編碼引擎402(圖4)可以使用多種結(jié)合了宏塊重排序的錯誤隱藏技術(shù)以提供視頻質(zhì)量。例如,在本發(fā)明一個實施例中,編碼引擎402對丟失的幀間編碼宏塊的相鄰宏塊進(jìn)行解碼,估計該丟失宏塊的運動矢量,然后使用估計的運動矢量重構(gòu)丟失的宏塊的數(shù)據(jù)。在本發(fā)明另一個實施例中,編碼引擎402可以對丟失的幀內(nèi)編碼宏塊的相鄰宏塊進(jìn)行解碼,并對解碼的相鄰數(shù)據(jù)進(jìn)行空間插值以重構(gòu)丟失的數(shù)據(jù)。本發(fā)明的范圍覆蓋了其它的結(jié)合了宏塊重排序使用的錯誤隱藏技術(shù),從而提高丟失或破壞的宏塊導(dǎo)致的視頻質(zhì)量。
根據(jù)本發(fā)明可以使用不同的重排序模式和MBGID。在本發(fā)明一個實施例中,宏塊重排序引擎404根據(jù)視頻數(shù)據(jù)率和/或視頻格式選擇MGID。
返回參考圖4,一旦宏塊被分配了MBGID,宏塊打包引擎406根據(jù)宏塊的MBGID將這些宏塊放置于分散的數(shù)據(jù)分組中。因此,將具有相同MBGID(例如MBGID=1)的宏塊放置于共同的分散數(shù)據(jù)分組中(例如數(shù)據(jù)分組1)。參考圖5中本發(fā)明的典型實施例,打包引擎406將每一個QCIF幀中的宏塊放置于6個數(shù)據(jù)分組中。不過,打包引擎406可以使用多于一個的具有給定MBGID的分組以傳送具有該給定MBGID的宏塊。例如,打包引擎406可以創(chuàng)建包括一部分MBGID=1宏塊的第一數(shù)據(jù)分組1,和包括其余MBGID=1宏塊的第二數(shù)據(jù)分組1。典型地,由與網(wǎng)絡(luò)206(圖2)相關(guān)的最大傳輸單元容量(MTU)控制這種方式的分割分組。
隨后,將數(shù)據(jù)分組和圖片報頭轉(zhuǎn)發(fā)到通信緩沖器408,用于通過通信接口312(圖3)傳輸?shù)骄W(wǎng)絡(luò)206(圖2)。為了進(jìn)一步提高抵抗分組丟失的恢復(fù)力,可以每一幀發(fā)送多于一個圖片報頭。這種圖片報頭可以包括幀內(nèi)宏塊映射。
相反地,圖像處理引擎310還處理從遠(yuǎn)程位置接收的視頻數(shù)據(jù)分組并提供用于顯示的視頻信號。首先,通過通信接口312(圖3)接收視頻數(shù)據(jù)分組,并將其轉(zhuǎn)發(fā)到通信緩沖器408。然后將視頻分組數(shù)據(jù)發(fā)送到對宏塊進(jìn)行解包的宏塊打包引擎406。下一步,宏塊重排序引擎404,將宏塊按照初始次序(即在遠(yuǎn)程視頻會議站204進(jìn)行宏塊重排序之前的模式,典型地是光柵掃描(圖2))進(jìn)行排序。
隨后,編碼引擎402用作解碼器,并確定在通過網(wǎng)絡(luò)206的傳輸中是否丟失了一個視頻數(shù)據(jù)分組。圖6是圖5中QCIF幀宏塊重排序模式的示意圖,其中丟失了包含宏塊MBGID=5的編碼宏塊數(shù)據(jù)的數(shù)據(jù)分組。將丟失的宏塊標(biāo)記為“X”。應(yīng)當(dāng)注意到,根據(jù)本發(fā)明的一個實施例,優(yōu)勢在于丟失的宏塊在QCIF幀空間上交叉散布,因此得到了這種使用空間插值或運動矢量估計和補(bǔ)償?shù)臏?zhǔn)確、低復(fù)雜度的錯誤隱藏技術(shù)。盡管圖6為了方便討論只示出了單個丟失數(shù)據(jù),本發(fā)明的范圍覆蓋了在傳輸過程中破壞或丟失了任意數(shù)目的數(shù)據(jù)分組情況下的錯誤隱藏。進(jìn)一步還應(yīng)當(dāng)注意到盡管這里所述的相同元件用于傳輸和接收功能,這些元件應(yīng)當(dāng)包含于分離的接收方和傳輸方裝置中。
返回參考圖4,針對每一個丟失的宏塊,編碼引擎402確定丟失的宏塊是幀內(nèi)編碼還是幀間編碼。例如,編碼引擎402可以檢查幀內(nèi)宏塊映射以確定該丟失的宏塊是否是幀內(nèi)編碼的。如上所述,可以將幀內(nèi)宏塊映射在圖片報頭字段中發(fā)送或作為視頻流之外傳送的邊信息,并使用形成長度編碼算法或其他有效的編碼算法對其進(jìn)行壓縮,將其設(shè)置為標(biāo)識了幀內(nèi)編碼宏塊的位圖。
如果丟失的宏塊是幀內(nèi)編碼的,則可以使用多種錯誤隱藏技術(shù)。例如,如果丟失的宏塊是作為“繞行更新”機(jī)制一部分的幀內(nèi)編碼,則編碼引擎402用來自之前幀“對應(yīng)”宏塊的內(nèi)容來取代丟失的宏塊,其中兩個“對應(yīng)”宏塊覆蓋了其各自幀的相同空間區(qū)域。根據(jù)本發(fā)明,“繞行更新”機(jī)制的清除率是數(shù)據(jù)率和錯誤率的函數(shù)。
可選地,如果丟失的幀內(nèi)編碼宏塊不是作為“繞行更新”機(jī)制的一部分進(jìn)行編碼的,則編碼引擎402由相鄰宏塊對該丟失宏塊的內(nèi)容進(jìn)行空間插值。在本發(fā)明一個實施例中,由兩個位于相鄰宏塊的最近塊對每一個8×8的丟失宏塊進(jìn)行插值。圖7示出了使用與位于相鄰宏塊的象素相關(guān)的數(shù)據(jù)的插值典型方案。圖7包括丟失的宏塊705、左相鄰宏塊710、上相鄰宏塊715以及右相鄰宏塊720。例如,為了重構(gòu)丟失的16×16宏塊705的8×8左上塊725的數(shù)據(jù),編碼引擎(圖4)由左相鄰宏塊710的8×8右上塊735在最后一列數(shù)據(jù)730插入數(shù)據(jù)(用x表示),并且由上相鄰宏塊715的8×8左下塊745在最后一行數(shù)據(jù)740插入數(shù)據(jù)(用x表示)。
類似地,為了重構(gòu)丟失宏塊705的8×8右上塊750,編碼引擎402由右相鄰宏塊720的8×8左上塊760在第一行數(shù)據(jù)755插入數(shù)據(jù),并且由上相鄰宏塊715的8×8右下塊770在最后一行數(shù)據(jù)765插入數(shù)據(jù)。也可以使用其他的插值形式以及使用相鄰宏塊的其它塊,這些均在本如果丟失的宏塊是幀間編碼,則編碼引擎402通過檢查相鄰宏塊的運動矢量,計算丟失宏塊的運動矢量估計。圖8是根據(jù)本發(fā)明的一個實施例,用于估計丟失宏塊m的運動矢量的相鄰宏塊的框圖。針對丟失的宏塊m,計算三個相鄰宏塊a、b及c的運動矢量的中間值。例如,宏塊m的估計運動矢量的x分量是MVxm=median(MVxa,MVxb,MVxc),]]>且宏塊m的估計運動矢量的y分量是MVym=median(MVya,MVyb,MVyc),]]>其中MVxa,MVxb,MVxc分別是宏塊a、b及c運動矢量的x分量,且MVya,MVyb,MVyc分別是宏塊a、b及c運動矢量的y分量。盡管圖8中本發(fā)明的實施例使用了來自相鄰宏塊a、b及c的運動矢量以計算宏塊m的估計運動矢量,可以使用任意數(shù)目相鄰宏塊以及相鄰宏塊的任意組合來估計丟失宏塊的運動矢量。一旦估計出了丟失宏塊的運動矢量,編碼引擎402(圖4)通過使用估計的運動矢量運動補(bǔ)償丟失的宏塊以重建丟失宏塊的數(shù)據(jù)內(nèi)容。在重建了給定幀所有丟失宏塊的數(shù)據(jù)內(nèi)容之后,編碼引擎402將這些宏塊轉(zhuǎn)換為視頻信號,用于顯示于顯示裝置302(圖3)。盡管只示出了一個丟失的數(shù)據(jù)分組,可以使用本發(fā)明隱藏具有多個丟失數(shù)據(jù)分組的錯誤。
圖9是根據(jù)本發(fā)明的一個實施例在分組交換網(wǎng)絡(luò)中傳輸視頻數(shù)據(jù)時,用于視頻錯誤隱藏的方法步驟的流程圖900。在步驟905,視頻俘獲裝置308(圖3)俘獲視頻圖像并產(chǎn)生視頻信號。下一步,在步驟910,編碼引擎402(圖4)(當(dāng)處理用于傳輸?shù)臄?shù)據(jù)時,也指編碼器)接收該視頻信號并將該視頻信號轉(zhuǎn)換為一個或多個幀內(nèi)編碼和幀間編碼的宏塊。一個視頻幀可以包括幀內(nèi)編碼、幀間編碼或幀內(nèi)編碼與幀間編碼的任意組合。在本發(fā)明的一個實施例中,“繞行更新”機(jī)制能夠使用從一組預(yù)定繞行間隔中選擇的繞行間隔對宏塊的模式進(jìn)行幀內(nèi)編碼??梢愿鶕?jù)視頻數(shù)據(jù)率和錯誤率選擇該繞行間隔。此外,編碼引擎402針對每一個幀間編碼的宏塊,計算非差分編碼運動矢量。
隨后,在步驟915,編碼引擎402產(chǎn)生標(biāo)識了幀內(nèi)編碼宏塊位置的幀內(nèi)宏塊映射。在本發(fā)明的一個實施例中,根據(jù)對幀內(nèi)宏塊映射進(jìn)行編碼所需的比特數(shù)目總和,使用形成長度法或位圖編碼法對該幀內(nèi)宏塊映射進(jìn)行編碼。
下一步,在步驟920宏塊重排序引擎404(圖4)給每一個宏塊分配一個MBGID。例如,可以按照如圖5所示的模式給宏塊分配MBGID。在一個實施例中,給宏塊分配MBGID,從而使被分配有相同MBGID的相鄰宏塊最少??蛇x地,其它實施例可以考慮給相鄰宏塊分配相同的MBGID。
隨后,宏塊打包引擎406(圖4)在步驟925中創(chuàng)建分散的數(shù)據(jù)分組并根據(jù)宏塊的MBGID將這些宏塊放置于分散的數(shù)據(jù)分組中。例如,將具有相同MBGID的宏塊放入共同的分散數(shù)據(jù)分組中。可選地,宏塊打包引擎406可以是傳送引擎,用于將宏塊放入特定的用于在電路交換網(wǎng)絡(luò)上傳送的格式。最后,在步驟930,將數(shù)據(jù)分組和圖片報頭(包括幀內(nèi)宏塊映射)發(fā)送到通信緩沖器408(圖4)以傳輸?shù)竭h(yuǎn)程視頻會議站204(圖2)。
圖10是當(dāng)接收視頻數(shù)據(jù)時,根據(jù)本發(fā)明用于視頻錯誤隱藏方法步驟的流程圖。在步驟1005,通信緩沖器408(圖4)接收從遠(yuǎn)程視頻會議站204(圖2)經(jīng)網(wǎng)絡(luò)206(圖2)發(fā)送來的數(shù)據(jù)分組。然后在步驟1010,宏塊打包引擎406(圖4)將接收的數(shù)據(jù)分組解包成宏塊。隨后在步驟1015,宏塊重排序引擎404(圖4)對宏塊進(jìn)行排序并將宏塊放入視頻幀中合適的空間結(jié)構(gòu)內(nèi)。
下一步,在步驟1020編碼引擎402(圖4)對宏塊進(jìn)行解碼。在步驟1025,編碼引擎402(用作解碼器)或其它與視頻數(shù)據(jù)分組轉(zhuǎn)換(例如RTP序列號)相關(guān)的機(jī)制確定是否丟失了任意包括視頻幀的宏塊。如果經(jīng)視頻數(shù)據(jù)分組在網(wǎng)絡(luò)206中的傳輸丟失或破壞了一個或多個數(shù)據(jù)分組,則丟失了宏塊。如果在步驟1025確定沒有宏塊丟失,則在步驟1030通過顯示裝置302(圖3)顯示這些宏塊。不過,如果在步驟1025確定丟失了一個或多個宏塊,則在步驟1035,根據(jù)丟失宏塊的編碼類型重構(gòu)與一個或多個丟失的宏塊相關(guān)的數(shù)據(jù)。編碼引擎402可以使用幀內(nèi)宏塊映射確定每一個丟失宏塊的編碼類型。
例如,如果丟失的宏塊是作為“繞行更新”機(jī)制一部分的幀內(nèi)編碼,則編碼引擎402用來自之前幀對應(yīng)宏塊的內(nèi)容來取代丟失宏塊的內(nèi)容??蛇x地,如果丟失的幀內(nèi)編碼宏塊不是作為“繞行更新”機(jī)制的一部分進(jìn)行編碼的,則由最近鄰相鄰宏塊對該丟失宏塊的內(nèi)容進(jìn)行空間插值。在本發(fā)明一個實施例中,編碼引擎402使用二維插值用相鄰宏塊進(jìn)行數(shù)據(jù)插值(圖7)。
可選地,如果丟失的宏塊是幀間編碼,則編碼引擎402通過檢查相鄰宏塊的運動矢量,估計丟失宏塊的運動矢量。在本發(fā)明的一個實施例中,計算三個鄰近宏塊運動矢量的中間值作為運動矢量(圖8)。然后編碼引擎402通過重構(gòu)丟失宏塊數(shù)據(jù)內(nèi)容的估計,使用估計的運動矢量補(bǔ)償丟失宏塊的數(shù)據(jù)內(nèi)容。一旦重建了丟失宏塊的數(shù)據(jù)內(nèi)容,在步驟1025,通過顯示裝置302顯示這些宏塊。
參考上述典型實施例對本發(fā)明進(jìn)行了說明。對于本領(lǐng)域技術(shù)而言,顯然可以進(jìn)行各種修改,而不脫離本發(fā)明更廣泛的精神和范圍。此外,盡管在上下文中對本發(fā)明的說明是在特定環(huán)境中實現(xiàn),并用于特定應(yīng)用,本領(lǐng)域技術(shù)人員會認(rèn)識到本發(fā)明的有效性并不限于此,并且可以將本發(fā)明受益地用于許多環(huán)境和應(yīng)用中。因此,認(rèn)為前述說明和附圖只是演示,而沒有限制的意思。
權(quán)利要求
1.一種處理視頻數(shù)據(jù)的系統(tǒng),包括編碼引擎,用于處理視頻信號中的每一幀以產(chǎn)生宏塊并對這些宏塊進(jìn)行編碼;宏塊重排序引擎,用于將來自多個宏塊組標(biāo)識符(MBGID)的一個MBGID分配給每一個已編碼的宏塊;以及宏塊打包引擎,用于根據(jù)MBGID,將每一個已編碼的宏塊放置于一個特定的數(shù)據(jù)分組中。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于所述宏塊重排序引擎將不同的MBGID分配給相鄰的已編碼宏塊。
3.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于針對每一個是幀間編碼宏塊的已編碼宏塊,所述編碼引擎產(chǎn)生非差分編碼的運動矢量。
4.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于所述宏塊打包引擎將具有分配的不同MBGID的已編碼宏塊放置于不同的數(shù)據(jù)分組。
5.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于所述MBGID的值為從1到最大組標(biāo)識符(MGID)。
6.根據(jù)權(quán)利要求5所述的系統(tǒng),其特征在于所述宏塊重排序引擎根據(jù)視頻數(shù)據(jù)率確定所述MGID。
7.根據(jù)權(quán)利要求5所述的系統(tǒng),其特征在于所述宏塊重排序引擎根據(jù)視頻格式確定所述MGID。
8.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于如果在當(dāng)前幀的給定宏塊數(shù)據(jù)和之前幀的最接近匹配偏移宏塊數(shù)據(jù)之間存在著明顯的差異,則所述編碼引擎將當(dāng)前幀的給定宏塊作為幀內(nèi)編碼宏塊進(jìn)行編碼。
9.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于如果在當(dāng)前幀的給定宏塊數(shù)據(jù)和之前幀的最接近匹配偏移宏塊數(shù)據(jù)之間存在著明顯的相似,則所述編碼引擎將當(dāng)前幀的給定宏塊作為幀間編碼宏塊進(jìn)行編碼。
10.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于所述編碼引擎進(jìn)一步產(chǎn)生標(biāo)識給定幀中幀內(nèi)編碼宏塊的幀內(nèi)宏塊映射。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),其特征在于所述編碼引擎通過選擇產(chǎn)生最少比特數(shù)目的幀內(nèi)宏塊映射編碼方法,對幀內(nèi)宏塊映射進(jìn)行編碼。
12.根據(jù)權(quán)利要求10所述的系統(tǒng),其特征在于所述編碼引擎使用形成長度編碼對幀內(nèi)宏塊映射進(jìn)行編碼。
13.根據(jù)權(quán)利要求10所述的系統(tǒng),其特征在于所述編碼引擎使用位圖對幀內(nèi)宏塊映射進(jìn)行編碼。
14.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于接收裝置的宏塊打包引擎對已編碼宏塊進(jìn)行解包。
15.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于接收裝置的宏塊重排序引擎對已編碼宏塊進(jìn)行排序。
16.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于接收裝置的編碼引擎對已編碼宏塊進(jìn)行解碼并檢測丟失的解碼宏塊。
17.根據(jù)權(quán)利要求16所述的系統(tǒng),其特征在于如果給定丟失解碼宏塊是作為幀內(nèi)編碼宏塊編碼的,則接收裝置的編碼引擎由相鄰解碼宏塊的數(shù)據(jù)對給定丟失解碼宏塊的數(shù)據(jù)進(jìn)行空間插值,從而隱藏了視頻錯誤的影響。
18.根據(jù)權(quán)利要求16所述的系統(tǒng),其特征在于如果給定丟失解碼宏塊是作為幀間編碼宏塊編碼的,則接收裝置的編碼引擎根據(jù)相鄰解碼宏塊的運動矢量估計給定的丟失解碼宏塊的運動矢量,從而通過運動補(bǔ)償重構(gòu)給定的丟失解碼宏塊的數(shù)據(jù)內(nèi)容以隱藏視頻錯誤的影響。
19.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于所述宏塊打包引擎是傳送引擎,用于根據(jù)MBGID,將每一個已編碼的宏塊放置于用于在電路交換網(wǎng)絡(luò)中傳送的特定格式中。
20.一種處理視頻數(shù)據(jù)的方法,包括步驟處理視頻信號中的每一幀以產(chǎn)生宏塊;對這些宏塊進(jìn)行編碼;將來自多個宏塊組標(biāo)識符(MBGID)的一個MBGID分配給每一個已編碼的宏塊;以及根據(jù)所述MBGID,將每一個已編碼的宏塊放置于一個特定的數(shù)據(jù)分組中。
21.根據(jù)權(quán)利要求20所述的方法,其特征在于分配的步驟進(jìn)一步包括步驟將不同的MBGID分配給相鄰的已編碼宏塊。
22.根據(jù)權(quán)利要求20所述的方法,其特征在于進(jìn)一步包括步驟針對每一個是幀間編碼宏塊的已編碼宏塊,產(chǎn)生非差分編碼運動矢量。
23.根據(jù)權(quán)利要求20所述的方法,其特征在于放置的步驟進(jìn)一步包括步驟將具有分配的不同MBGID的已編碼宏塊放置于不同的數(shù)據(jù)分組。
24.根據(jù)權(quán)利要求20所述的方法,其特征在于所述MBGID的值為從1到最大組標(biāo)識符(MGID)。
25.根據(jù)權(quán)利要求23所述的方法,其特征在于進(jìn)一步包括步驟根據(jù)視頻數(shù)據(jù)率確定所述MGID。
26.根據(jù)權(quán)利要求23所述的方法,其特征在于進(jìn)一步包括步驟根據(jù)視頻格式確定所述MGID。
27.根據(jù)權(quán)利要求20所述的方法,其特征在于編碼的步驟進(jìn)一步包括步驟如果在當(dāng)前幀的給定宏塊數(shù)據(jù)和之前幀的最接近匹配偏移宏塊數(shù)據(jù)之間存在著明顯的差異,則將當(dāng)前幀的給定宏塊作為幀內(nèi)編碼宏塊進(jìn)行編碼。
28.根據(jù)權(quán)利要求20所述的方法,其特征在于編碼的步驟進(jìn)一步包括步驟如果在當(dāng)前幀的給定宏塊數(shù)據(jù)和之前幀的最接近匹配偏移宏塊數(shù)據(jù)之間存在著明顯的相似,則將當(dāng)前幀的給定宏塊作為幀間編碼宏塊進(jìn)行編碼。
29.根據(jù)權(quán)利要求20所述的方法,其特征在于進(jìn)一步包括步驟產(chǎn)生標(biāo)識給定幀中幀內(nèi)編碼宏塊的幀內(nèi)宏塊映射。
30.根據(jù)權(quán)利要求29所述的方法,其特征在于進(jìn)一步包括步驟選擇產(chǎn)生最少比特數(shù)目的幀內(nèi)宏塊映射編碼方法。
31.根據(jù)權(quán)利要求29所述的方法,其特征在于進(jìn)一步包括步驟使用形成長度編碼對幀內(nèi)宏塊映射進(jìn)行編碼。
32.根據(jù)權(quán)利要求29所述的方法,其特征在于進(jìn)一步包括步驟使用位圖對幀內(nèi)宏塊映射進(jìn)行編碼。
33.根據(jù)權(quán)利要求20所述的方法,其特征在于進(jìn)一步包括步驟對已編碼宏塊進(jìn)行解包。
34.根據(jù)權(quán)利要求20所述的方法,其特征在于進(jìn)一步包括步驟對已編碼宏塊進(jìn)行排序。
35.根據(jù)權(quán)利要求20所述的方法,其特征在于進(jìn)一步包括步驟對已編碼宏塊進(jìn)行解碼并檢測丟失的解碼宏塊。
36.根據(jù)權(quán)利要求35所述的方法,其特征在于進(jìn)一步包括步驟如果給定丟失解碼宏塊是作為幀內(nèi)編碼宏塊編碼的,則為了隱藏視頻錯誤的影響,由相鄰解碼宏塊的數(shù)據(jù)對給定丟失解碼宏塊的數(shù)據(jù)進(jìn)行空間插值。
37.根據(jù)權(quán)利要求35所述的方法,其特征在于進(jìn)一步包括步驟如果給定丟失解碼宏塊是作為幀間編碼宏塊編碼的,則根據(jù)相鄰解碼宏塊的運動矢量估計給定的丟失解碼宏塊的運動矢量,從而通過運動補(bǔ)償重構(gòu)給定的丟失解碼宏塊的數(shù)據(jù)內(nèi)容以隱藏視頻錯誤的影響。
38.根據(jù)權(quán)利要求20所述的方法,其特征在于放置的步驟進(jìn)一步包括根據(jù)MBGID,將每一個已編碼的宏塊放置于用于在電路交換網(wǎng)絡(luò)中傳送的特定格式中。
39.一種其中包含有程序的電子可讀介質(zhì),所述程序是機(jī)器可執(zhí)行,用于執(zhí)行處理視頻數(shù)據(jù)方法的步驟,所述方法步驟包括處理視頻信號中的每一幀以產(chǎn)生宏塊;對這些宏塊進(jìn)行編碼;將來自多個宏塊組標(biāo)識符(MBGID)的一個MBGID分配給每一個已編碼的宏塊;以及根據(jù)所述MBGID,將每一個已編碼的宏塊放置于一個特定的數(shù)據(jù)分組中。
40.根據(jù)權(quán)利要求39所述的電子可讀介質(zhì),其特征在于進(jìn)一步包括步驟將不同的MBGID分配給相鄰的已編碼宏塊。
41.根據(jù)權(quán)利要求39所述的電子可讀介質(zhì),其特征在于進(jìn)一步包括步驟針對每一個是幀間編碼宏塊的已編碼宏塊,產(chǎn)生非差分編碼運動矢量。
42.根據(jù)權(quán)利要求39所述的電子可讀介質(zhì),其特征在于放置的步驟進(jìn)一步包括步驟將具有分配的不同MBGID的已編碼宏塊放置于不同的數(shù)據(jù)分組。
43.根據(jù)權(quán)利要求39所述的電子可讀介質(zhì),其特征在于編碼的步驟進(jìn)一步包括步驟如果在當(dāng)前幀的給定宏塊數(shù)據(jù)和之前幀的最接近匹配偏移宏塊數(shù)據(jù)之間存在著明顯的差異,則將當(dāng)前幀的給定宏塊作為幀內(nèi)編碼宏塊進(jìn)行編碼。
44.根據(jù)權(quán)利要求39所述的電子可讀介質(zhì),其特征在于編碼的步驟進(jìn)一步包括步驟如果在當(dāng)前幀的給定宏塊數(shù)據(jù)和之前幀的最接近匹配偏移宏塊數(shù)據(jù)之間存在著明顯的相似,則將當(dāng)前幀的給定宏塊作為幀間編碼宏塊進(jìn)行編碼。
45.根據(jù)權(quán)利要求39所述的電子可讀介質(zhì),其特征在于進(jìn)一步包括步驟產(chǎn)生標(biāo)識給定幀中幀內(nèi)編碼宏塊的幀內(nèi)宏塊映射。
46.一種用于執(zhí)行處理視頻數(shù)據(jù)的方法,包括步驟產(chǎn)生針對視頻信號每一幀的宏塊;對這些宏塊進(jìn)行編碼;將來自多個宏塊組標(biāo)識符(MBGID)的一個MBGID分配給每一個已編碼的宏塊;將具有分配的不同MBGID的已編碼的宏塊放置于不同的數(shù)據(jù)分組中;將所述不同的數(shù)據(jù)分組傳輸?shù)竭h(yuǎn)程裝置;在遠(yuǎn)程裝置,對接收的不同數(shù)據(jù)分組的已編碼宏塊進(jìn)行解碼;檢測丟失的解碼宏塊;以及重構(gòu)丟失解碼宏塊的數(shù)據(jù)。
47.根據(jù)權(quán)利要求46所述的方法,其特征在于數(shù)據(jù)重構(gòu)的步驟進(jìn)一步包括步驟如果給定的丟失解碼宏塊是作為幀內(nèi)編碼宏塊編碼的,則由相鄰解碼宏塊的數(shù)據(jù)對給定丟失解碼宏塊的數(shù)據(jù)進(jìn)行空間差值。
48.根據(jù)權(quán)利要求46所述的方法,其特征在于數(shù)據(jù)重構(gòu)的步驟進(jìn)一步包括步驟如果給定的丟失解碼宏塊是作為幀間編碼宏塊編碼的,則根據(jù)相鄰解碼宏塊的運動矢量估計給定的丟失解碼宏塊的運動矢量,從而通過運動補(bǔ)償重構(gòu)給定的丟失解碼宏塊的數(shù)據(jù)內(nèi)容以隱藏視頻錯誤的影響。
49.一種用于處理視頻數(shù)據(jù)的系統(tǒng),包括處理裝置,用于處理視頻信號中的每一幀以產(chǎn)生宏塊;編碼裝置,用于對所述宏塊進(jìn)行編碼;分配裝置,用于將來自多個宏塊組標(biāo)識符(MBGID)的一個MBGID分配給每一個已編碼的宏塊;以及放置裝置,用于根據(jù)所述MBGID,將每一個已編碼的宏塊放置于一個特定的數(shù)據(jù)分組中。
全文摘要
在一個實施例中,本發(fā)明提供了一種用于隱藏視頻錯誤的系統(tǒng)和方法。該系統(tǒng)將視頻信息進(jìn)行編碼、重排序并打包為用于在通信網(wǎng)絡(luò)中傳輸?shù)囊曨l數(shù)據(jù)分組,由此當(dāng)系統(tǒng)接收、解包、排序(915)并解碼所述數(shù)據(jù)分組時,系統(tǒng)隱藏了由丟失的視頻數(shù)據(jù)分組引起的視頻錯誤。在一個實施例中,該系統(tǒng)和方法對視頻信息進(jìn)行編碼和打包,從而不將相鄰宏塊放置于同一個視頻數(shù)據(jù)分組中(925)。此外,系統(tǒng)和方法提供了伴隨著視頻數(shù)據(jù)分組的信息以便于解碼處理。這種方案的優(yōu)點在于將由視頻數(shù)據(jù)分組丟失引起的錯誤空間散布于視頻幀中。因此,如果對丟失宏塊周圍的數(shù)據(jù)區(qū)域進(jìn)行了成功解碼,則解碼器可以具有更高準(zhǔn)確度地預(yù)測運動矢量和空間信息,這導(dǎo)致了更高的視頻質(zhì)量。
文檔編號H04N7/36GK1679330SQ02816465
公開日2005年10月5日 申請日期2002年8月23日 優(yōu)先權(quán)日2001年8月23日
發(fā)明者邁克爾·霍羅威茨, 瑞克·弗洛特 申請人:寶利通公司