專利名稱:用于分解視頻序列幀的方法
用于分解視頻序列幀的方法
背景技術(shù):
典型地,由于相機(jī)或物體運(yùn)動(dòng),視頻序列中會(huì)發(fā)生時(shí)間上的變化。如果可以對該運(yùn)動(dòng)補(bǔ)償,則用相對緊湊的運(yùn)動(dòng)信息改進(jìn)視頻圖像預(yù)測序列也是可能的,這使得使-f見頻壓縮算法能夠顯著減少以可以接受的質(zhì)量級別傳輸視頻序列時(shí)所需要的數(shù)據(jù)量。
根據(jù)國際視頻編碼標(biāo)準(zhǔn)H. 264, MPEG-4第10部分,或高級視頻編碼(AVC),使用16 x 16像素的宏塊單元來執(zhí)行編碼過程。此外,運(yùn)動(dòng)補(bǔ)償?shù)湫偷赝ㄟ^在四叉樹(quad-tree)分解中將宏塊劃分為正方形或長方形的子塊來執(zhí)行。在該運(yùn)動(dòng)補(bǔ)償技術(shù)中,每個(gè)NxN大小的葉級別塊與不同的運(yùn)動(dòng)向量和編碼模式關(guān)聯(lián)。而且,殘差使用合適的變換來編碼,之后是量化和熵編碼。
傳統(tǒng)技術(shù)在對相機(jī)或物體運(yùn)動(dòng)的補(bǔ)償上對以前的技術(shù)已有了改進(jìn)。但是,由于傳統(tǒng)的四叉樹分解局限于正方形或長方形的宏塊和子塊,宏塊的形狀典型地與移動(dòng)物體的形狀輪廓不對應(yīng)。由于宏塊和子塊的固定形狀,在同一個(gè)宏塊包括有不同運(yùn)動(dòng)的幾個(gè)區(qū)域的情況下,編碼效率大幅地降低。
從下列說明參考附圖,本發(fā)明的特征將對本領(lǐng)域技術(shù)人員來說變得
明顯,在附圖中
圖1A是根據(jù)本發(fā)明的實(shí)施例的視頻編碼系統(tǒng)的簡化功能框圖IB是根據(jù)本發(fā)明的實(shí)施例,編碼器可以分解宏塊的方式的功能
框圖1C和1D示出了根椐本發(fā)明的實(shí)施例的連續(xù)楔形和離散楔形的例
子;
圖2是圖1中示出的根據(jù)本發(fā)明的實(shí)施例的視頻編碼系統(tǒng)的框圖;圖3A和3B共同地示出了根椐本發(fā)明的實(shí)施例的用于分解視頻序列幀的方法的流程圖;法的流程圖5示出了根據(jù)本發(fā)明的實(shí)施例的用于對塊編碼的方法的流程圖;圖6示出了根據(jù)本發(fā)明的另 一個(gè)實(shí)施例的用于對塊編碼的方法的流程圖。
具體實(shí)施例方式
為了簡單和示例的目的,本發(fā)明通過主要參考其示例性實(shí)施例來描述。在下面的描述中,闡述了大量的特定細(xì)節(jié),以提供對本發(fā)明的全面了解。但是對于本領(lǐng)域普通技術(shù)人員將變得明顯,本發(fā)明可以不限于這些特定細(xì)節(jié)來實(shí)現(xiàn)。在其它實(shí)例中,眾所周知的方法和結(jié)構(gòu)沒有被詳細(xì)描述,從而不會(huì)不必要地使本發(fā)明模糊。
這里公開的是用于改進(jìn)視頻編解碼器的一個(gè)或多個(gè)度量例如殘差、
率失真效率(rate distortion efficiency)等的方法和系統(tǒng)。更具體
地說,這里公開的方法和系統(tǒng)使用了下列技術(shù)不僅將宏塊劃分為子塊,
還在合適的地方將塊劃分為小楔形。與塊相比,可以在塊中的任何充分
合適和期望的位置形成的小楔形或楔形在表示圖像中的邊緣方面相對
更有效,因?yàn)樗鼈儾幌抻诖怪焙退骄€。此外,不同的運(yùn)動(dòng)補(bǔ)償可以對
在特定塊中的不同楔形使用,以更準(zhǔn)確地補(bǔ)償塊中的移動(dòng)并由此改進(jìn)殘差和率失真效率等。
這里還公開的是用于顯著減少與劃分塊相關(guān)的計(jì)算復(fù)雜度的方法和系統(tǒng)。換言之,文中揭示的方法和系統(tǒng)使能選擇在哪里劃分塊的相對快速和計(jì)算上較為不復(fù)雜的方式,還仍然提供了顯著最小化的殘差和/或顯著最小化的率失真效率。
首先參考圖1A,示出了根據(jù)本發(fā)明的例子的視頻編碼系統(tǒng)102的簡化功能框圖100。盡管這里下面對包括特定特征的視頻編碼系統(tǒng)102做了特定的參考,應(yīng)該理解,視頻編碼系統(tǒng)102可以包括附加的組件并且這里描述的一些組件可以被移除并且/或者修改,而不偏離視頻編碼系統(tǒng)102的范圍。
如圖1A所示,視頻編碼系統(tǒng)102包括編碼器112、量化器114、熵編碼器116。在操作中,視頻編碼系統(tǒng)102從視頻源no接收視頻內(nèi)容。視頻源110可以包括任何足夠合適的源,例如,數(shù)據(jù)存儲設(shè)備、網(wǎng)絡(luò)、因特網(wǎng)、單獨(dú)的計(jì)算機(jī)設(shè)備等。此外,視頻內(nèi)容可以包括模擬或數(shù)字視頻。
如以下更詳細(xì)地描述的,視頻編碼系統(tǒng)102通常在從視頻源110接收到的視頻內(nèi)容上執(zhí)行各種編碼功能,由此輸出編碼的視頻118。在一方面,視頻編碼系統(tǒng)102可以在視頻內(nèi)容上執(zhí)行運(yùn)動(dòng)估計(jì)和補(bǔ)償操作。一般來說,運(yùn)動(dòng)估計(jì)指的是用于從視頻序列提取運(yùn)動(dòng)信息的 一組技術(shù)。MPEG標(biāo)準(zhǔn)通過下列方式來表示運(yùn)動(dòng)信息基于運(yùn)動(dòng)補(bǔ)償?shù)念愋拖蚯邦A(yù)測、向后預(yù)測或平均,來提供每個(gè)宏塊一個(gè)或兩個(gè)運(yùn)動(dòng)向量。此外,運(yùn)動(dòng)估計(jì)可以包括為宏塊找到最優(yōu)或基本最優(yōu)的運(yùn)動(dòng)向量的過程。
例如,編碼器112可以從第一時(shí)間采樣的當(dāng)前幀中的宏塊與第二時(shí)間采樣的參考幀中的類似大小的宏塊來估計(jì)視頻內(nèi)容中的運(yùn)動(dòng)。第二采樣時(shí)間可以先于當(dāng)前幀的采樣時(shí)間。
在估計(jì)視頻內(nèi)容中的運(yùn)動(dòng)時(shí),編碼器112可以將視頻內(nèi)容分解為連續(xù)的幀,并且還可以將連續(xù)的幀分為不同大小的塊和不同位置的楔形,如這里下面參考圖1B更詳細(xì)地描述的。例如,塊和楔形的位置和大小可以基于幀中物體的邊緣。此外,編碼器112可以對不同大小的塊和不同位置的楔形計(jì)算和編碼運(yùn)動(dòng)向量和殘(預(yù)測)差。編碼器112可以計(jì)算運(yùn)動(dòng)向量,其確定當(dāng)前宏塊和之前匹配的宏塊之間的關(guān)系。例如,運(yùn)動(dòng)向量將確定第一宏塊和第二宏塊之間像素位置的改變。此外,每個(gè)塊和楔形可以和不同的運(yùn)動(dòng)向量和編碼模式關(guān)聯(lián)。
編碼器112還可以確定在乂人之前編碼的幀基于運(yùn)動(dòng)預(yù)測之后,或者在從當(dāng)前幀的已經(jīng)編碼的部分幀內(nèi)預(yù)測之后得到的殘差。殘差還可以使用合適的變換來編碼,之后是量化和熵編碼。對于已經(jīng)被劃分為楔形的塊,組合楔形的基于塊的變換可以被使用,或者用于各單個(gè)楔形的更合適的形狀自適應(yīng)變換可以被使用來編碼殘差。
一般來說,運(yùn)動(dòng)向量是在被加到匹配宏塊的任何像素的坐標(biāo)時(shí)提供當(dāng)前宏塊的坐標(biāo)的值。因?yàn)檫\(yùn)動(dòng)估計(jì)過程基于宏塊提供向量,所有進(jìn)一步的計(jì)算在宏塊基礎(chǔ)上執(zhí)行,否則的話將會(huì)在逐像素基礎(chǔ)上執(zhí)行的所有進(jìn)一步的計(jì)算基于宏塊執(zhí)行。因此,這種運(yùn)動(dòng)估計(jì)方法比其他像素方式近似技術(shù)需要更低的計(jì)算能力。
通過對圖1B的特定參考,示出了根據(jù)本發(fā)明的例子的編碼器112可以分解宏塊122的方式的功能框圖120。應(yīng)該理解,功能框圖120的下列描述只是宏塊可以分解宏塊122的多種不同方式中的一種方式。此外,應(yīng)該理解,宏塊122分解的方式可以依賴于宏塊122中包含的像素的各種特性,并將由此在逐個(gè)宏塊122的基礎(chǔ)上變化。
編碼器112可以事先已將視頻內(nèi)容分解為多個(gè)幀。此外,編碼器112可以事先已將該多個(gè)幀中的至少一個(gè)幀分解為多個(gè)宏塊ll2。宏塊ll2可以每個(gè)包括,例如,16xl6像素,正如H. 264, MPEG-4笫10部分及AVC中標(biāo)準(zhǔn)的。
編碼器112還可以將宏塊122中的一些或所有進(jìn)一步分解為一組8x8像素的子塊124。編碼器112還可以將8x8像素的子塊124中的一些或所有進(jìn)一步分解為4 x 4像素的子塊126,正如在四叉樹分解技術(shù)中所知的那樣。 一般來說,編碼器112可以基于宏塊122中包含的移動(dòng)物體的輪廓形狀來確定哪些宏塊122的哪些部分被進(jìn)一步分解。
傳統(tǒng)地,宏塊122分割被限于正方形和長方形,并且因此,塊122-126的形狀通常不會(huì)準(zhǔn)確對應(yīng)于移動(dòng)物體的輪廓形狀。這樣,如果同一塊122-126中存在具有不同運(yùn)動(dòng)向量的不同部分,編碼效率被降低。
根據(jù)一個(gè)例子,并且如這里下面更詳細(xì)地描述的, 一個(gè)或更多個(gè)塊122-126可以通過^f吏用小楔形130a和130b^皮進(jìn)一步地分解,小楔形130a和130b通過插入穿過塊122-126的剖切線128形成,如圖1B所示。更具體地說,編碼器112可以使用有助于更準(zhǔn)確地捕獲圖像中的幾何結(jié)構(gòu)的多尺度(multi-scale)小楔形130a、 130b框架,由此相比傳統(tǒng)技術(shù)提高編碼效率。楔形130a、 130b被認(rèn)為是多尺度的,因?yàn)樗鼈兛梢圆迦氲饺我獯笮〉膲K122-126。
例如,通過沿著剖切線128將塊122-126分為兩個(gè)楔形130a、130b,編碼器112可以將楔形插入到NxN的塊122-126。剖切線128可以具有方向角度e,并可以與塊122-126的中心o距離r。具有剖切線128及楔形130a、 130b的塊122-126的描繪在圖1C和1D中給出。圖1C中示出的剖切線128是連續(xù)的,而圖1D中示出的剖切線128是離散的。例如,圖1C中示出的連續(xù)剖切線128示出了剖切線128的實(shí)際位置,而圖1D中示出的剖切線128示出了基于位于剖切線128上的像素落在楔形130a、 130b中的哪一側(cè)來離散化的剖切線128的形式.通過確定剖切線128位于像素的哪一側(cè),剖切線128可以對沿著剖切線(圖1C)的每個(gè)像素離散化。在剖切線128直接位于像素中心的情況下,剖切線128可以位于像素的任一側(cè),只要該選擇符合解碼器。
編碼器112可以將剖切線128放置為使得它經(jīng)過塊122-126中的任意位置。通過對方向角度0及距離r的空間以合適的間距采樣,編碼器112可以在N x N的塊122-126中生成所有楔形劃分130a、 130b的集合,產(chǎn)生疋個(gè)條目的字典。疋個(gè)條目的字典可以取決于設(shè)計(jì)參數(shù),例如方向角度^和距離r的遞增精度。
理想地,用于所有可能的塊組合的所有可能的楔形U0a、 130b片段應(yīng)該被預(yù)測,以確定最好的楔形130a、 130b。但是,由于塊122-126中的劃分策略的數(shù)量可以非常大,根據(jù)本發(fā)明的一個(gè)例子,用于最佳劃分策略的快速搜索方法可以被使用。更具體地說,例如,可以在任意尺度預(yù)先選擇合適的塊劃分的較小子集,而不是在塊122-126內(nèi)部測試所有楔形劃分的可能性。
根據(jù)一個(gè)例子,在NxN的塊內(nèi)部,邊緣檢測算法,例如Canny 、 Sobe 1等,可以被使用,之后是門限操作。這產(chǎn)生了相同大小的二維邏輯陣列作為塊指示邊緣。接著,具有正響應(yīng)的像素被映射到歐幾里得像素坐標(biāo)產(chǎn)生",》對,并且線性回歸(基于最小二乘誤差)被應(yīng)用到這些點(diǎn)。結(jié)果是直線/-3,4或當(dāng)回歸不是函數(shù)時(shí))的一般方程。該直線被轉(zhuǎn)換到極坐標(biāo)并與一楔形劃分關(guān)聯(lián)。令(化》)是塊的中心,N是塊的大小,且0。是取決于a^,y。"的符號的偏移量,當(dāng)《2 力^為正時(shí)0/=0°,否則6產(chǎn)180° 。我們?nèi)缓笳业絩和0的起始點(diǎn)(種子)。
方程(1 ) : <formula>formula see original document page 9</formula>
以及
回歸結(jié)果可以是i-c的情形,以得到方程(3) : Q=|f—;以及方程(4) : S"=《,
其中 是依賴于#/2-的符號的偏移量,如果#/2化>0則6尸90° ,否則0產(chǎn)270° 。
/人開始種子/^erf和0 crf,通過在[Aee廣^ ,, Aeerf+ Zl /*1和
范圍內(nèi)分別以增量&和淤細(xì)微地改變參數(shù)r和0產(chǎn)90。, 一組楔形130a、 130b可以被預(yù)先選擇。根據(jù)另一個(gè)例子,在特定的實(shí)例中,例如當(dāng)在塊122-126內(nèi)存在多個(gè)移動(dòng)邊緣或紋理時(shí),范式(canon ica 1 )四叉樹劃分也可以神皮執(zhí)行。在任何方面,運(yùn)動(dòng)估計(jì)和劃分搜索可以被限制到預(yù)先選擇的楔形集合,這可以大幅降低搜索楔形130a、 130b的計(jì)算需求。
根據(jù)本發(fā)明的另一個(gè)例子,通過執(zhí)行第二種相對有效的搜索策略,搜索楔形130a、 130b的計(jì)算需求可以被大幅降^f氐。第二種相對有效的搜索策略包括確定是否用于任何塊122-126的楔形130a、 130b中的一個(gè)具有零運(yùn)動(dòng)向量。 一對楔形130a、 130b中的楔形130a、 130b中的一個(gè)可能具有零運(yùn)動(dòng)向量,例如,在視頻捕捉設(shè)備是不動(dòng)的并且物體在靜止背景前移動(dòng)的情況中。在這些實(shí)例中,那些具有零運(yùn)動(dòng)向量的楔形130a、 130b的預(yù)測誤差相對小。
這樣,通過確定對于足夠大的楔形具有足夠小的預(yù)測誤差的楔形130a、 130b,顯著優(yōu)化了的楔形130a、 130b可以;故確定。此外,用于剩下的楔形130a、 130b的運(yùn)動(dòng)向量132可以通過掩模運(yùn)動(dòng)搜索來方便地計(jì)算,其中感興趣的區(qū)域由二元掩模限定,該掩模僅包括塊122-126中不被包括在楔形30a、 130b中的部分中的那些像素。在一方面,該例子可以降低傳輸運(yùn)動(dòng)信息的碼率,因?yàn)閱蝹€(gè)運(yùn)動(dòng)向量可以;故派給一個(gè)楔形化的塊。
根椐另一個(gè)例子,在楔形130a、 130b中的一個(gè)具有零運(yùn)動(dòng)向量并且預(yù)測殘差與目標(biāo)質(zhì)量相比足夠小,從而用于形狀自適應(yīng)變換的所有變換系數(shù)被量化為O的情況下,楔形130a、 130b可以以與傳統(tǒng)視頻編碼中的"SKIP"模式類似的方式來對待。
根據(jù)還有一個(gè)例子,楔形130a、 U0b中的一個(gè)的運(yùn)動(dòng)向量可以限制到來自當(dāng)前塊122-126的空間鄰域的運(yùn)動(dòng)向量的一個(gè)相對小的集合。在該例子中,編碼將如同上迷的零運(yùn)動(dòng)向量情況中一樣進(jìn)行,其中為了最佳楔形測試所有可能的預(yù)測運(yùn)動(dòng)向量。
根據(jù)又一個(gè)例子,對具有零運(yùn)動(dòng)向量的楔形130a、 130b,預(yù)測殘差可以被量化為0,由此降低用于傳送這些楔形130a、 130b的運(yùn)動(dòng)向量的碼率。
回來參考圖1B,編碼器112可以將NxN的塊122-126中的任一個(gè)分為楔形130a、 130b。編碼器112還可以對每個(gè)楔形130a、 130b獨(dú)立4丸行運(yùn)動(dòng)估計(jì),由此為每個(gè)包含楔形130a、 130b的塊122-126生成兩個(gè)運(yùn)動(dòng)向量132。這樣,與運(yùn)動(dòng)向量132關(guān)聯(lián)的每個(gè)殘差可以被單獨(dú)編 碼,或者這里如下所述它們可以被組合并編碼為單個(gè)殘差。
現(xiàn)在轉(zhuǎn)向圖2,根據(jù)一個(gè)例子,示出了視頻編碼系統(tǒng)102的框圖200。 應(yīng)該理解,對框圖200的下列描述只是^f見頻編碼系統(tǒng)202可以被配置的 多種不同方式中的一種方式。此外,應(yīng)該理解,^見頻編碼系統(tǒng)202可以 包括附加的組件,并且這里描述的一些組件可以被移除和/或修改,而 不偏離視頻編碼系統(tǒng)202的范圍。
視頻編碼系統(tǒng)102可以包括一般計(jì)算環(huán)境并包括控制器204,控制 器204被配置為控制視頻編碼系統(tǒng)102的各種操作。控制器204可以包 括微處理器、微控制器、專用集成電路(ASIC)等。數(shù)據(jù)可以通過系統(tǒng) 總線206傳輸?shù)揭曨l編碼系統(tǒng)102的各個(gè)組件,該系統(tǒng)總線操作以耦接 視頻編碼系統(tǒng)102的各個(gè)組件。系統(tǒng)總線206表示幾種類型的總線結(jié)構(gòu) 中的任一種,包括,例如,存儲器總線、存儲器控制器、外圍總線、加 速圖形端口、使用多種總線結(jié)構(gòu)中的任一種的處理器總線等。
息,例如,命令、指令、數(shù)椐等。輸入設(shè)備208可以包括,例如,主機(jī)、 鍵盤、鼠標(biāo)、掃描儀、硬盤驅(qū)動(dòng)器、移動(dòng)媒介、閃存驅(qū)動(dòng)器等。還示出 了一個(gè)或更多個(gè)視頻源110,其可以包括輸入設(shè)備208或單獨(dú)的設(shè)備。 輸入設(shè)備208及/或視頻源110可以被用來,例如,向視頻編碼系統(tǒng)102 輸入圖像、圖像幀、視頻幀、或視頻圖像的表示(即,碼格式的視頻圖 像,為了簡單的目的以下將被稱為"視頻圖像")。如圖所示,輸入設(shè) 備208和視頻源通過耦接到系統(tǒng)總線206的接口 210連接到控制器204 。 但是,輸入設(shè)備和視頻源UO可以,通過其它傳統(tǒng)接口和總線結(jié)構(gòu)來耦 接,例如,并行端口、 USB端口等。盡管沒有示出,接口 210還可以作 為連接系統(tǒng)總線206和其它計(jì)算機(jī)系統(tǒng)的接口來操作。
控制器204可以通過系統(tǒng)總線206連接到存儲器212。 一般來說, 存儲器212可以被配置為提供軟件、算法等的存儲,這些軟件、算法等 提供視頻編碼系統(tǒng)102的功能性。例如,存儲器212可以存儲操作系統(tǒng) 214、應(yīng)用程序216、程序數(shù)據(jù)218等。在這方面,存儲器212可以被實(shí) 現(xiàn)為易失性和非易失性存儲器的組合,例如DRAM、 EEPROM、 MROM、閃存 等。此外,或可替換地,存儲器212可以包括被配置為從移動(dòng)媒介例如 軟盤、CD-ROM、 DVD-ROM或其它光或磁媒介讀取和向其寫入的設(shè)備。控制器204還可以通過系統(tǒng)總線206連接到編碼器112、量化器114 和熵編碼器116。在一個(gè)例子中,編碼器112、量化器114和熵編碼器 U6可以包括由一個(gè)或更多個(gè)分離組件組成的硬件。此外,或可替換地, 編碼器112、量化器114和熵編碼器116可以包括,例如,在存儲器212 中存儲的軟件。在任何方面,控制器204可以被配置為執(zhí)行或調(diào)用編碼 器112、量化器114和熵編碼器116來編碼從視頻源接收到視頻內(nèi)容, 如這里更詳細(xì)地描述的。盡管控制器204被示出和描述為構(gòu)成與編碼器 1U分離的組件,控制器204可以構(gòu)成編碼器112的一部分,其中編碼 器112包括這里描述的控制器204及其功能,而不偏離編碼器112的范 圍。
如圖2所示,編碼器112包括幀分解器220、塊分割器222、楔形 劃分器224、運(yùn)動(dòng)估計(jì)器226和誤差計(jì)算器228。編碼器122中包含的 元件220-230可以包括軟件模塊、硬件組件及其組合。控制器204可以 執(zhí)行或調(diào)用元件220-230以分解視頻序列幀并估計(jì)視頻序列幀中包含的 運(yùn)動(dòng)。
此外,控制器204可以執(zhí)行或調(diào)用量化器114來量化視頻序列幀的 編碼部分,以及熵編碼器116來熵編碼編碼的—見頻序列幀??刂破?04 此外還可以通過一個(gè)或更多個(gè)適配器232來將編碼視頻118傳輸或以其 它方式發(fā)送到視頻編碼系統(tǒng)102之外。在第 一個(gè)例子中,編碼的視頻118 可以通過網(wǎng)絡(luò)例如內(nèi)部網(wǎng)、外部網(wǎng)(互聯(lián)網(wǎng))等發(fā)送到另一個(gè)計(jì)算機(jī)設(shè) 備。在第二個(gè)例子中,編碼的視頻118可以被輸出到一個(gè)或更多個(gè)輸出 設(shè)備,例如,顯示器、打印機(jī)、傳真機(jī)等。
現(xiàn)在參考圖3A,示出了根據(jù)一個(gè)例子,用于分解視頻序列幀的方法 300的流程圖。對于本領(lǐng)域普通技術(shù)人員來說應(yīng)該很明顯,方法300表 示了概括的示例,并且其它步驟可以被添加或者已有的步驟可以被移 除、修改或重新排列.,而不偏離方法300的范圍。
對方法300的描述參考圖2中示出的框圖200,并由此參考其中引 用的元件。但是應(yīng)該理解,方法300不限于框圖200中列出的元件。而 是,應(yīng)該理解,方法300可以通過具有不同于框圖200列出的配置的系 統(tǒng)來實(shí)現(xiàn)。
一般來說,方法300可以被執(zhí)行以將運(yùn)動(dòng)估計(jì)模型例如四叉樹分解 擴(kuò)展來包括不同情況下的楔形130a、 130b,并由此改進(jìn)視頻編解碼器的一個(gè)或更多個(gè)度量,例如,殘差、率失真效率等。在一方面, 一個(gè)或更
多個(gè)度量可以被改進(jìn),因?yàn)樾ㄐ?30a、 130b提供了移動(dòng)物體的相對更 精確的邊緣表示。
在方法300中,視頻編碼系統(tǒng)102可以接收^f見頻序列幀301形式的 視頻內(nèi)容或表示視頻序列幀301的數(shù)據(jù)。在步驟302中,控制器204可 以調(diào)用或執(zhí)行編碼器112,更具體地,幀分解器220,以將每個(gè)視頻序 列幀301分解為具有第一組尺寸NxN的宏塊122。幀分解器220可以, 例如,如圖1B所示使用四叉樹分解技術(shù)來分解視頻序列幀301。
在步驟304中,控制器204可以調(diào)用或執(zhí)行編碼器112,更具體地, 幀分解器220,以確定是否宏塊122的第一組尺寸中的一個(gè)或兩個(gè)等于 預(yù)定的最小尺寸(疋)。預(yù)定的最小尺寸(M)可以被定義為編碼器112 能夠?qū)⒑陦K122分解到的最小的葉級別塊大小,這典型地是4 x 4像素。
對于第一組尺寸中的一個(gè)或兩個(gè)等于預(yù)定的最小尺寸的每一個(gè)宏 塊122,方法300可以結(jié)束,如步驟306所示。換句話說,由于那些宏 塊122已經(jīng)達(dá)到它們的最小葉級別塊大小,它們不能再被進(jìn)一步分解為 更小子塊。但是,宏塊122可以被進(jìn)一步處理,如下參考方法400 (圖 4)所示。
對于并非其第一組尺寸中的一個(gè)或兩個(gè)等于預(yù)定的最小尺寸的每 個(gè)宏塊122,控制器204可以調(diào)用或執(zhí)行編碼器112,更具體地,運(yùn)動(dòng) 估計(jì)器226,以確定這些宏塊122的運(yùn)動(dòng)向量,控制器204可以將運(yùn)動(dòng) 向量發(fā)送到解碼器,如步驟308所指示。
此外,在步驟308中,控制器204可以調(diào)用或執(zhí)行編碼器112,更 具體地,楔形劃分器224,以將這種宏塊122劃分為兩個(gè)楔形130a、130b。 楔形劃分器224可以從有限拼接(splice)的碼本(codebook)找到最 佳剖切線128,以將宏塊122分為兩個(gè)楔形130a、 130b。在一個(gè)例子中, 在確定如何將宏塊122劃分為楔形130a、 130b時(shí),楔形劃分器224可 以評估所有可能的楔形130a、 130b組合以確定哪個(gè)組合產(chǎn)生顯著優(yōu)化 的率失真效率。在其它例子中,楔形劃分器224可以使用如上所述的對 于最佳劃分策略的一個(gè)或更多個(gè)快速搜索算法。
根椐另一個(gè)例子,劃分器224可以在劃分宏塊122時(shí)使用帶(band) 和楔形模型。當(dāng)圖像包含運(yùn)動(dòng)物體,可能存在兩種情形。情形(l):在 當(dāng)前幀中具有從前一 (參考)幀暴露的背景的塊122-126。情形(2):在當(dāng)前幀中不具有從前一(參考)幀暴露的背景的塊。
在情形(1)中,例如,如果物體正從左向右移動(dòng),這對落在物體
左邊緣上的塊可能是這種情形。在該情形下,劃分器224可以使用帶-楔形模型。在帶和楔形模型下,兩條平行線穿過塊122-126。帶一側(cè)上 的一個(gè)楔形130a具有相對小預(yù)測誤差的運(yùn)動(dòng)向量132。帶另一側(cè)上的楔 形130b具有不同的運(yùn)動(dòng)向量132,但也產(chǎn)生相對小的預(yù)測誤差。楔形 132a、132b之間的帶具有相對高的預(yù)測誤差,因?yàn)樗鼘?yīng)于暴露的背景。 對直線使用上面討論的極坐標(biāo)模型,可以通過固定角度并只改變離中心 的距離來得到用于該帶的平行線。
在情形(2)下,例如,如果物體正從左向右移動(dòng),這對落在物體 右邊緣上的塊可能是這種情形。在該情形下,如上所討論劃分器224可 以將塊122-126劃分為兩個(gè)楔形130a、 130b。
根據(jù)一個(gè)例子,可以假設(shè)背景是不動(dòng)的。在該例子中,情形l和情 形2中的楔形130a、 130b中的一個(gè)可以具有零運(yùn)動(dòng)向量。這樣,零運(yùn) 動(dòng)向量可以被檢查,且塊122-126的殘差可以與閾值比較。如果存在其 中與期望的編碼質(zhì)量相比誤差是零的足夠大的楔形130a、 130b,可以假 設(shè)情形(1)和情形(2)成立。此外,可以為了最佳運(yùn)動(dòng)向量搜索塊的 剩余部分。 一旦最佳運(yùn)動(dòng)向量已被找到,誤差模式可以進(jìn)一步被檢查, 以確定是否可以找出一平行線,超過該平行線誤差很小。此外,情形(1 ) 可以被執(zhí)行并且僅非零運(yùn)動(dòng)向量楔形130a、 130b的運(yùn)動(dòng)向量可以被發(fā) 送且?guī)Э梢员痪幋a。但是,如果不能找出平行線,則情形(2)可以被 執(zhí)行且具有非零運(yùn)動(dòng)向量的楔形130a、 130b可以被編碼和發(fā)送。
根據(jù)另一個(gè)例子,如果通過零運(yùn)動(dòng)向量搜索的第一直線劃分已知, 則對于搜索的每個(gè)備選運(yùn)動(dòng)向量,通過注意在與剖切線128垂直的直線 上的投影的符號,楔形劃分器224可以確定該運(yùn)動(dòng)向量應(yīng)該屬于情形(1 ) 還是情形(2),并且如果是情形(1),其中平行線應(yīng)該落在該幾何形 狀附近,只在該線附近搜索。該例子可以被執(zhí)行以更好地降低搜索楔形 130a、 130b的復(fù)雜度。
此外,在步驟308中,控制器204可以調(diào)用或執(zhí)行編碼器112,更 具體地,塊分割器222,以將宏塊122劃分為四個(gè)具有第二組尺寸的子 塊124。換句話說,NxN的宏塊122可以被分割以具有N/2xN/2的尺 寸。此外,步驟304-308可以對子塊124重復(fù)?,F(xiàn)在參考圖3B和3C,其中共同示出了根據(jù)一個(gè)例子的用于分解視 頻序列幀的方法350的流程圖。對于本領(lǐng)域普通技術(shù)人員來說應(yīng)該很明 顯,方法350表示了概括的示例,并且其它步驟可以被添加或者已有的 步驟可以被移除、修改或重新排列,而不偏離方法350的范圍。
方法350包含上面關(guān)于圖3A中的方法300所述的許多步驟。這樣, 關(guān)于圖3B的步驟302-308,那些步驟在這里不再具體討論。
無論如何,在步驟308中,控制器204可以調(diào)用或執(zhí)行編碼器112, 更具體地,運(yùn)動(dòng)估計(jì)器226和誤差計(jì)算器228,來為楔形130a、 130b確 定最佳預(yù)測。更具體地說,例如,運(yùn)動(dòng)估計(jì)器226可以基于參考幀、使 用幀間預(yù)測來為每個(gè)楔形130a、 130b確定運(yùn)動(dòng)向量。此外,或可替換 地,運(yùn)動(dòng)估計(jì)器226可以使用幀內(nèi)預(yù)測來還基于在鄰近塊中選擇的像素 確定運(yùn)動(dòng)向量。
誤差計(jì)算器228可以為通過幀間預(yù)測預(yù)測的運(yùn)動(dòng)向量和通過幀內(nèi)預(yù) 測預(yù)測的運(yùn)動(dòng)向量計(jì)算殘差,并可以確定哪個(gè)運(yùn)動(dòng)向量具有最低的殘 差。這樣,在步驟308,根據(jù)一個(gè)例子,最佳楔形130a、 130b可以包括 產(chǎn)生最低殘差的組合。根據(jù)另一個(gè)例子,最佳楔形130a、 130b可以包 括產(chǎn)生顯著優(yōu)化的率失真效率的楔形130a、 130b的組合。
此外,在步驟308中,控制器204可以調(diào)用或執(zhí)行編碼器112,更 具體地,運(yùn)動(dòng)估計(jì)器226和誤差計(jì)算器228,來為子塊124確定最佳預(yù) 測。更具體地說,例如,運(yùn)動(dòng)估計(jì)器226可以使用幀間預(yù)測來基于參考 幀為每個(gè)子塊124確定運(yùn)動(dòng)向量。此外,或可替換地,運(yùn)動(dòng)估計(jì)器226 可以使用幀內(nèi)預(yù)測來還基于在鄰近塊中選擇的像素確定運(yùn)動(dòng)向量。
誤差計(jì)算器228可以為通過幀間預(yù)測預(yù)測的運(yùn)動(dòng)向量和通過幀內(nèi)預(yù) 測預(yù)測的運(yùn)動(dòng)向量計(jì)算殘差,并可以確定哪個(gè)運(yùn)動(dòng)向量具有最低殘差。 根椐另一個(gè)例子,誤差計(jì)算器228可以基于哪一個(gè)向量與顯著優(yōu)化的率 失真效率關(guān)聯(lián)來進(jìn)行該計(jì)算。
塊分割器222和楔形劃分器224可以使用幀間預(yù)測和幀內(nèi)預(yù)測中的 任一個(gè)或兩者來預(yù)測楔形130a、 130b和子塊124。此外,編碼器112可 以4丸行不同的幀間預(yù)測和幀內(nèi)預(yù)測來預(yù)測楔形130a、 130b和子塊124。 例如,編碼器112可以執(zhí)行多個(gè)幀間預(yù)測和幀內(nèi)預(yù)測,并可以為楔形 130a、 130b及子塊124中的每個(gè)選擇最佳的那個(gè)。楔形130a、 130b及 子塊124中的每個(gè)的最佳預(yù)測可以包括,例如,引起最低殘差或最佳率失真效率的預(yù)測。
這樣,在步驟308中,第一組尺寸超過預(yù)定最小尺寸的宏塊122被 既劃分為楔形130a、 130b且分割為子塊124。此外,每個(gè)宏塊122的運(yùn) 動(dòng)向量與該運(yùn)動(dòng)向量的殘差或率失真效率一起被確定。在步驟310中, 控制器204可以調(diào)用或執(zhí)行編碼器112來計(jì)算宏塊122運(yùn)動(dòng)向量的率失 真效率(AA)、楔形劃分的宏塊122的率失真效率(y A)及子塊124 的率失真效率(WA)。例如,率失真效率可以通過下列方程計(jì)算
方程(5) : /(/ )-"(/7)+A^ (;7)。
在方程(5)中,;?表示總體宏塊劃分策略,而V (/7)指在傳輸楔形 130a、 130b、運(yùn)動(dòng)向量及殘差時(shí)得到的碼率。換句話說,W(/7)指每個(gè)要 傳輸?shù)暮陦K122的比特?cái)?shù)。Z (p)是對應(yīng)于劃分策略/ 的失真(例如,均 方差(MSE)、絕對誤差和(SAD)等)。此外,入是拉格朗日乘數(shù),其 可以:帔定義為碼率和失真之間的平衡因子。
對于壓縮,編碼器112通知解碼器在分解視頻幀時(shí)使用了哪個(gè)宏塊 劃分策略。假設(shè)W/7)是編碼p所用的比特?cái)?shù),且";O是編碼與劃分策 略p關(guān)聯(lián)的運(yùn)動(dòng)向量132,以及與劃分策略/ 關(guān)聯(lián)的殘差補(bǔ)償U(kuò)p)所 用的比特?cái)?shù),"O )可以被定義為
方程(6) : K(/7)+到/7)+ Up)。
一般來說,殘差LO )可以用基于傳統(tǒng)變換的編碼來壓縮。此外, 對于固定的量化矩陣,失真"不隨劃分策略/7改變很多。因此,將〃作 為常數(shù),得到下列開銷
方程(7) : /(/7)= ) (/7)。
在步驟312中,控制器204可以執(zhí)行或調(diào)用編碼器112來比較率失 真效率(v A) 、 (AA)和(i A),以顯著優(yōu)化率失真效率。如果確定 率失真效率(v A)是最佳的,如步驟314所指示,控制器204可以編碼 并發(fā)送宏塊122的運(yùn)動(dòng)向量,且方法350可以結(jié)束,如步驟306所示。 但是,如果控制器204確定率失真效率(y A)是最佳的,如步驟316所 指示,控制器204可以選擇將宏塊122劃分為楔形130a、 130b。此外, 對于那些已經(jīng)被劃分為楔形130a、130b的宏塊122,方法300可以結(jié)束, 如步驟306所指示,并且那些宏塊122可以如以下參考圖4所討論被進(jìn) 一步處理。
此外,如果確定率失真效率(AA)是最佳的,如步驟318所指示,控制器204可以選擇將宏塊122劃分為子塊124。此外,在步驟320中, 控制器204可以再次調(diào)用或執(zhí)行編碼器112,以確定是否子塊124的尺 寸等于預(yù)定的最小尺寸(AO 。對于其第二組尺寸中的一個(gè)或兩個(gè)等于 預(yù)定的最小尺寸的每個(gè)子塊124,方法350可以結(jié)束,如步驟306所指示。
如圖3C所示,對于并非其第二組尺寸中的一個(gè)或兩個(gè)等于預(yù)定的 最小尺寸的每個(gè)子塊124,控制器204可以調(diào)用或執(zhí)行編碼器112,更 具體地,運(yùn)動(dòng)估計(jì)器226,以確定用于N/2 x N/2的子塊124的運(yùn)動(dòng)向量, 控制器204可以將該運(yùn)動(dòng)向量發(fā)送給解碼器,如步驟322所指示。
此外,在步驟322中,控制器204可以調(diào)用或執(zhí)行編碼器112,更 具體地,楔形劃分器224,以將這種子塊124劃分為兩個(gè)楔形130a、130b。 此外,在步驟322中,控制器204可以調(diào)用或執(zhí)行編碼器112,更具體 地,塊分割器222,以將子塊124劃分為具有第三組尺寸的四個(gè)進(jìn)一步 的子塊126。換句話說,N/2xN/2的子塊124可以被劃分以具有N/4x
N/4的尺寸。
這樣,在步驟322中,其第二組尺寸超過預(yù)定最小尺寸的子塊124 以上面關(guān)于步驟308所討論的方式被既劃分為楔形130a、 U0b,且分割 為進(jìn)一步的子塊126。在步驟324中,控制器204可以調(diào)用或執(zhí)行編碼 器112,以類似于上面關(guān)于步驟310所述的方式,來計(jì)算子塊124的運(yùn) 動(dòng)向量的率失真效率(AA)、楔形劃分的子塊124的率失真效率(y A) 及進(jìn)一步的子塊126的率失真效率(t /U 。
在步驟326中,控制器204可以執(zhí)行或調(diào)用編碼器112來比較率失 真效率(、 ( AA)和(。如果確定率失真效率(^A)是最佳 的,如步驟328所指示,控制器204可以編碼并發(fā)送子塊124的運(yùn)動(dòng)向 量。但是,如果確定率失真效率(WA)是最佳的,如步驟330所指示, 控制器204可以選擇將子塊124劃分為楔形130a、 130b。此外,對于那 些已經(jīng)劃分為楔形130a、 130b的子塊124,方法350可以結(jié)束,如步驟 306所指示。
此外,如果確定率失真效率(v "-)是最佳的,如步驟332所指示, 控制器204可以選擇將子塊124劃分為進(jìn)一步的子塊126。此外,在步 驟334中,控制器204可以再次調(diào)用或執(zhí)行編碼器112,以確定是否進(jìn) 一步的子塊126的尺寸等于預(yù)定的最小尺寸(AO 。對于其第二組尺寸中的一個(gè)或兩個(gè)等于預(yù)定的最小尺寸的每個(gè)進(jìn)一步的子塊126,方法350 可以結(jié)束,如步驟306所指示。
但是,對于并非其第二組尺寸中的一個(gè)或兩個(gè)等于預(yù)定的最小尺寸 的每個(gè)進(jìn)一步的子塊126,步驟322-334可以被重復(fù)。此外,步驟322-334 可以被重復(fù),直到所有塊122-126已經(jīng)達(dá)到最小葉級別塊大小或已經(jīng)被 劃分為楔形130a、 130b。
通過在視頻序列幀上執(zhí)行方法350,該幀可以被分解為包括塊 122-126以及楔形130a、 130b,具有顯著優(yōu)化該幀的率失真效率的配置。
此外,控制器204還可以處理多個(gè)分解的視頻序列幀,使得分解的 視頻序列幀適于輸出,如圖4所示。
圖4更具體地示出了根據(jù)一個(gè)例子的用于處理分解的視頻序列幀的 方法400的流程圖。對于本領(lǐng)域普通技術(shù)人員來說應(yīng)該^f艮明顯,方法400 表示了概括的示例,并且其它步驟可以被添加或者已有的步驟可以被移 除、修改或重新排列,而不偏離方法400的范圍。
在步驟402中,控制器204可以調(diào)用或執(zhí)行編碼器112來編碼運(yùn)動(dòng) 向量132和殘差,例如預(yù)測誤差,這些是在步驟308和320中計(jì)算的。 通過使用合適的變換,用于塊122-126及楔形130a、 130b的運(yùn)動(dòng)向量 132可以被編碼。通過方形塊變換的計(jì)算,用于塊122-126的殘差可以 -故編碼,產(chǎn)生系數(shù)。
但是,對于楔形130a、 130b,殘差可以在兩個(gè)不同選項(xiàng)下被編碼。 在第一選項(xiàng)下,與單個(gè)塊122-126的楔形130a、 130b關(guān)聯(lián)的殘差可以 被組合為方形塊,并且單次塊變換可以被計(jì)算。在第二選項(xiàng)下,可以為 每個(gè)殘差計(jì)算單獨(dú)的形狀自適應(yīng)變換,例如形狀自適應(yīng)DCT。選擇哪個(gè) 選項(xiàng)來實(shí)施還可以基于率失真效率最優(yōu)化方案。換句話說,控制器204 可以實(shí)施產(chǎn)生最佳率失真效率的選項(xiàng)。
在塊122-126的楔形130a、 U0b中的一個(gè)具有與期望的質(zhì)量相比 零預(yù)測誤差的情況下,已經(jīng)提出了多種已知的形狀自適應(yīng)變換,例如形 狀自適應(yīng)DCT。在這些情況下,已知的形狀自適應(yīng)變換中的一種可以被 用來為不具有零預(yù)測誤差的楔形130a、 130b編碼殘差。作為另一個(gè)例 子,不具有零預(yù)測誤差的楔形130a、 130b的像素可以被填充算法填充, 然后被作為規(guī)則塊編碼。合適的填充算法的一個(gè)例子是楔形!30a、 130b 中不相關(guān)的像素用相關(guān)像素的平均值來填充。在步驟404中,控制器204可以調(diào)用或執(zhí)行量化器U4通過任何足
夠合適的量化技術(shù)來量化編碼的運(yùn)動(dòng)向量和編碼的殘差。此外,在步驟 406中,控制器204可以調(diào)用或執(zhí)行熵編碼器116通過任何足夠合適的 編碼技術(shù)來,例如,將碼分配給量化的運(yùn)動(dòng)向量碼和殘差碼,以使碼長 度與量化的運(yùn)動(dòng)向量碼和殘差碼的概率匹配。
如步驟408所示,控制器204可以可選地將編碼的岸見頻幀118輸出 到一個(gè)或更多個(gè)輸出設(shè)備。對于具有楔形130a、 130b的塊122-126,在 其中一個(gè)楔形130a、 130b具有零運(yùn)動(dòng)向量的實(shí)例中,控制器204可以 發(fā)送一個(gè)比特,該比特表示哪個(gè)楔形130a、 130b具有零運(yùn)動(dòng)向量而哪 個(gè)楔形130a、 130b具有非零運(yùn)動(dòng)向量,并且控制器2(M可以發(fā)送單個(gè) 運(yùn)動(dòng)向量而不是兩個(gè)運(yùn)動(dòng)向量。
現(xiàn)在參考圖5,示出了根據(jù)一個(gè)例子的用于對塊122-126編碼的方 法500的流程圖。對于本領(lǐng)域普通技術(shù)人員來說應(yīng)該很明顯,方法500 表示了概括的示例,并且其它步驟可以被添加或者已有的步驟可以被移 除、修改或重新排列,而不偏離方法500的范圍。
對方法500的描述參考了圖2中示出的框圖200,并由此參考了其 中引用的元件。但是應(yīng)該理解,方法500不限于框圖200中列出的元件。 而是,應(yīng)該理解,方法500可以通過具有不同于框圖200所列出的配置 的系統(tǒng)來實(shí)現(xiàn)。
一般來說,類似于方法350,方法500可以被執(zhí)行以將運(yùn)動(dòng)估計(jì)模 型擴(kuò)展來包括各種情況下的楔形130a、 130b,并由此改進(jìn)視頻編解碼器 的率失真效率。
如圖5所示, 一見頻編碼系統(tǒng)102可以接收NxN的塊122-126。在步 驟502中,控制器204可以調(diào)用或執(zhí)行編碼器112,更具體地,運(yùn)動(dòng)估 計(jì)器226和誤差計(jì)算器228,來為NxN的塊122-126確定最佳預(yù)測。更 具體地說,例如,運(yùn)動(dòng)估計(jì)器226可以使用幀間預(yù)測來基于參考幀確定 用于NxN的塊122-126的運(yùn)動(dòng)向量。此外,或可替換地,運(yùn)動(dòng)估計(jì)器 226可以使用幀內(nèi)預(yù)測來還基于鄰近塊中選擇的像素確定運(yùn)動(dòng)向量。誤 差計(jì)算器228可以為由幀間預(yù)測預(yù)測的運(yùn)動(dòng)向量和幀內(nèi)預(yù)測預(yù)測的運(yùn)動(dòng) 向量計(jì)算殘差,并可以確定哪個(gè)運(yùn)動(dòng)向量具有最低殘差。這樣,在步驟 502中,根據(jù)一個(gè)例子,最佳預(yù)測可以包括產(chǎn)生最低殘差的那個(gè)。根據(jù) 另一個(gè)例子,最佳預(yù)測可以包括產(chǎn)生顯著優(yōu)化的率失真效率的那個(gè)。在步驟504中,控制器204可以調(diào)用或執(zhí)行編碼器112來確定是否 NxN的塊122-126的尺寸中的一個(gè)或兩個(gè)等于預(yù)定的最小尺寸(AO 。 如上所討論,預(yù)定的最小尺寸可以被定義為編碼器112能夠分解塊 122-126到的最小葉級別塊大小的尺寸,典型地為4 x 4像素。
在步驟506中,如果NxN的塊122-126的第一組尺寸中的一個(gè)或 兩個(gè)等于預(yù)定的最小尺寸(AO ,如方法400 (圖4)所指示,NxN的 塊的運(yùn)動(dòng)向量和殘差可以被編碼、量化和熵編碼。
但是,如果沒有一個(gè)尺寸等于預(yù)定的最小尺寸(疋),控制器204 可以將在步驟502中確定的殘差與第一閾值(T,)比較,如步驟508所 指示。第一閾值(TJ可以一般地定義為為運(yùn)動(dòng)向量預(yù)測尋求的預(yù)定級 別的質(zhì)量,其可以基于,例如,訓(xùn)練數(shù)據(jù),該數(shù)據(jù)指示哪些級別的殘差 是可以接受的。此外,第一閾值(T,)可以對不同的塊122-126大小變 化。
如果殘差低于第一閾值(T,),步驟506可以被執(zhí)行。這樣,如方 法400 (圖4)所指示,NxN的塊的運(yùn)動(dòng)向量和殘差可以被編碼、量化 和熵編;馬。
但是,如果殘差超過第一閾值(L),控制器204可以調(diào)用或執(zhí)行 編碼器112,更具體地,楔形劃分器224,來將NxN的塊122-126劃分 為兩個(gè)楔形130a、 130b,如步驟510所指示。如上關(guān)于步驟308 (圖3A ) 所述,楔形劃分器224可以從有限拼接的碼本找到最佳剖切線128,以 將NxN的塊122-126分為兩個(gè)楔形130a、130b。在將NxN的塊122-126 劃分為楔形130a、 130b時(shí),控制器204可以調(diào)用或執(zhí)行編碼器112,更 具體地,運(yùn)動(dòng)估計(jì)器226和誤差計(jì)算器228,來為楔形130a、 130b確定 最佳預(yù)測,如步驟512所指示。
更具體地,例如,運(yùn)動(dòng)估計(jì)器226可以使用幀間預(yù)測來基于參考幀 為每個(gè)楔形130a、 130b確定運(yùn)動(dòng)向量。此外,或可替換地,運(yùn)動(dòng)估計(jì) 器226可以使用幀內(nèi)預(yù)測來還基于鄰近塊中選擇的像素確定運(yùn)動(dòng)向量。
誤差計(jì)算器228可以為由幀間預(yù)測預(yù)測的運(yùn)動(dòng)向量和幀內(nèi)預(yù)測預(yù)測 的運(yùn)動(dòng)向量計(jì)算殘差,并可以確定哪個(gè)運(yùn)動(dòng)向量具有最低殘差。這樣, 在步驟512中,根據(jù)一個(gè)例子,最佳楔形130a、 130b可以包括產(chǎn)生最 ^f氐殘差的楔形130a、 130b的組合。根據(jù)另一個(gè)例子,最佳預(yù)測可以包 括產(chǎn)生顯著優(yōu)化的率失真效率的楔形130a、 U0b的組合。在步驟514中,控制器204可以將在步驟512中確定的殘差與第二 閾值(T2)比較,第二閾值(T2)可以不同于第一閾值(T\)。第二閾值 (T2)可以一般地定義為為運(yùn)動(dòng)向量預(yù)測尋求的預(yù)定級別的質(zhì)量,其可 以基于,例如,訓(xùn)練數(shù)據(jù),該數(shù)據(jù)指示哪些級別的殘差是可以接受的。 此外,第二閾值(T2)可以對不同的塊122-126大小變化。
如果殘差低于第二閾值(T2),步驟506可以被執(zhí)行,由此對楔形 130a、 130b的運(yùn)動(dòng)向量和殘差進(jìn)行編碼,如方法400 (圖4)所指示
但是,如果殘差超過第二閾值(TJ ,控制器204可以調(diào)用或執(zhí)行 編碼器U2,更具體地,塊分割器222,來將NxN的塊122分割為具有 第二組尺寸的四個(gè)子塊124,如步驟516所指示。換句話說,NxN的塊 122可以被分割為具有N/2 x N/2的尺寸。
步驟502-516可以被重復(fù),直到塊122或其子塊124、 126都已經(jīng) 在步驟506中凈皮編碼。此外,方法500可以對任何剩余的塊122-126重 復(fù)。
現(xiàn)在轉(zhuǎn)向圖6,示出了根據(jù)另一個(gè)例子對塊122-126編碼的方法600 的流程圖。對于本領(lǐng)域普通技術(shù)人員來說應(yīng)該#:明顯,方法600表示了 概括的示例,并且其它步驟可以被添加或者已有的步驟可以被移除、修 改或重新排列,而不偏離方法600的范圍。
對方法600的描述參考了圖2中示出的框圖200,并由此參考了其 中引用的元件。但是應(yīng)該理解,方法600不限于框圖200中列出的元件。 而是,應(yīng)該理解,方法600可以通過具有不同于框圖200所列出的配置 的系統(tǒng)來實(shí)現(xiàn)。
一般來說,類似于方法500,方法600可以被執(zhí)行以將運(yùn)動(dòng)估計(jì)斗莫 型擴(kuò)展來包括各種情況下的楔形130a、 130b,并由此改進(jìn)視頻編解碼器 的率失真效率。
如圖6所示,-魄頻編碼系統(tǒng)102可以接收NxN的塊122-126。在步 驟602中,控制器204可以調(diào)用或執(zhí)行編碼器112,更具體地,運(yùn)動(dòng)估 計(jì)器226和誤差計(jì)算器228,來為NxN的塊122-126確定最佳預(yù)測,如 上關(guān)于圖5中的步驟502所討論。
在步驟604中,控制器204可以調(diào)用或執(zhí)行編碼器112來確定是否 NxN的塊122-126的尺寸中的一個(gè)或兩個(gè)等于預(yù)定的最小尺寸(^), 如上關(guān)于圖5中的步驟504所討論。此外,在步驟606中,如果NxN的塊122-126的第一組尺寸中的一個(gè)或兩個(gè)等于預(yù)定的最小尺寸(yVj , 則如方法400 (圖4)所指示,Nx N的塊的運(yùn)動(dòng)向量和殘差可以被編碼、 量化和熵編碼。
但是,如果沒有一個(gè)尺寸等于預(yù)定的最小尺寸(AO ,控制器204 可以調(diào)用或執(zhí)行編碼器112,更具體地,楔形劃分器224,來將NxN的 塊122-126劃分為兩個(gè)楔形130a、 130b,如步驟608所指示。如上關(guān)于 步驟308 (圖3A)和步驟510 (圖5)所述,楔形劃分器可以從有 限拼接的碼本找到最佳剖切線128,以將N x N的塊122-126分為兩個(gè)楔 形130a、 130b。在將NxN的塊122-126劃分為楔形130a、 130b時(shí),如 步驟610所指示,控制器204可以調(diào)用或執(zhí)行編碼器112,更具體地, 運(yùn)動(dòng)估計(jì)器226和誤差計(jì)算器228,來為楔形130a、 13Gb確定最佳預(yù)測 且為運(yùn)動(dòng)向量確定殘差,如上關(guān)于步驟512 (圖5 )所討論。
在步驟612中,控制器204可以調(diào)用或執(zhí)行編碼器ll2以確定在步 驟602和在步驟610中找到的預(yù)測中哪個(gè)是總體最佳預(yù)測。即,控制器 204可以確定哪個(gè)預(yù)測產(chǎn)生最低殘差和最高率失真效率中的任一個(gè)或兩 者。在執(zhí)行該比較時(shí),控制器204可以將懲罰因子加到在楔形130a、130b 上執(zhí)行的預(yù)測所產(chǎn)生的殘差上,因?yàn)橐驯粍澐譃樾ㄐ?30a、 U0b的塊 122-126在被編碼時(shí)典型地需要更多比特?cái)?shù)。懲罰因子可以,例如,基 于訓(xùn)練以專門的方式被定義,訓(xùn)練可以通過測試各種懲罰因子及相關(guān)的 殘差來開展。
在步驟614中,控制器204可以將從在步驟612中確定的總體最佳 預(yù)測產(chǎn)生的殘差與第三閾值(T3)比較,第三閱值(T3)可不同于關(guān)于 圖5所討論的第一閾值(T,)和第二閾值(T2)。第三閾值(T3)可以一 般地定義為為運(yùn)動(dòng)向量預(yù)測尋求的預(yù)定級別的質(zhì)量,其可以基于,例如, 訓(xùn)練數(shù)據(jù),該數(shù)椐指示哪個(gè)級別的殘差是可以接受的。此外,第三閾值 (T3)可以對不同的塊122-126大小變化。
如果殘差低于第三閾值(T3),步驟606可以被執(zhí)行,由此對楔形 130a、 130b的運(yùn)動(dòng)向量和殘差進(jìn)行編碼,如方法400 (圖4)所指示
但是,如果殘差超過第三閾值(L),控制器204可以調(diào)用或執(zhí)行 編碼器112,更具體地,塊分割器222,來將NxN的塊122分割為四個(gè) 具有第二組尺寸的子塊124,如步驟616所指示。換句話說,NxN的塊 122可以被分割為具有N/2 x N/2的尺寸。步驟602-616可以被重復(fù),直到塊122或其子塊124、 都已經(jīng) 在步驟606中被編碼。此外,方法600可以對任何剩余的塊122-126重 復(fù)。
在方法300、 350、 400、 500和600中示出的操作中的一些或所有 可以被包含在任何期望的計(jì)算機(jī)可訪問媒介中作為實(shí)用程序、程序或子 程序。此外,方法300、 350、 400、 500和600可以被計(jì)算機(jī)程序嵌入, 該程序可以以活動(dòng)和非活動(dòng)的各種形式存在。例如,它們可以作為軟件 程序存在,該軟件程序由源代碼、目標(biāo)代碼、可執(zhí)行代碼或其它形式中 的程序指令組成。上述任一個(gè)可以嵌入計(jì)算機(jī)可讀媒介,包括存儲設(shè)備 和信號,以壓縮或非壓縮形式。
示例性計(jì)算機(jī)可讀存儲設(shè)備包括傳統(tǒng)計(jì)算機(jī)系統(tǒng)RAM、 ROM、 EPROM、 EEPROM,以及磁或光盤或磁帶。示例性計(jì)算機(jī)可讀信號,無論是否使用 栽波調(diào)制,是作為其主機(jī)或運(yùn)行計(jì)算機(jī)程序的計(jì)算機(jī)系統(tǒng)可以被配置為 訪問的信號,包括通過因特網(wǎng)或其它網(wǎng)絡(luò)下栽的信號。上述的具體例子 包括在CD ROM上或通過因特網(wǎng)下栽的程序發(fā)布。在某種意義上,因特 網(wǎng)本身,作為抽象的實(shí)體,是計(jì)算機(jī)可讀媒介。這對一般的計(jì)算機(jī)網(wǎng)絡(luò) 也是這樣。因此應(yīng)該理解,任何能夠執(zhí)行上述功能的電子設(shè)備可以執(zhí)行 以上列出的功能。
這里描述和示出的是本發(fā)明的優(yōu)選實(shí)施例及其一些變體。這里使用 的術(shù)語、描述和圖僅通過示例的方式闡述,而不是為了限制。本領(lǐng)域技 術(shù)人員將認(rèn)識到,在本發(fā)明范圍內(nèi)可以有很多變體,其旨在由下列權(quán)利 要求及其等價(jià)物來定義,在其中所有術(shù)語旨在其最廣泛的合理的意義,
除非另外指出。
權(quán)利要求
1. 一種用于分解視頻序列幀的方法(300),其中所述視頻序列幀由多個(gè)塊(122-126)表示,所述方法包括對于所述多個(gè)塊(122-126)中的至少一個(gè)塊,(a)確定(304)是否該至少一個(gè)塊的一個(gè)或兩個(gè)尺寸等于預(yù)定的最小尺寸;(b)響應(yīng)于一個(gè)或兩個(gè)尺寸等于預(yù)定的最小尺寸,發(fā)送(306)用于塊(122-126)的運(yùn)動(dòng)向量(132);(c)響應(yīng)于兩個(gè)尺寸都超過預(yù)定的最小尺寸,(i)確定(308)用于塊(122-126)的運(yùn)動(dòng)向量(132);(ii)將塊(122-126)劃分(308)為兩個(gè)楔形(130a,130b),其中楔形(130a、130b)中的每一個(gè)與不同的運(yùn)動(dòng)向量(132)關(guān)聯(lián);(iii)將塊(122-126)分割(308)為四個(gè)N/2×N/2的子塊(122-126);以及(iv)在四個(gè)N/2×N/2的子塊中的每一個(gè)上重復(fù)步驟(a)-(c),直到一個(gè)或兩個(gè)尺寸等于預(yù)定的最小尺寸。
2. 如權(quán)利要求l所述的方法(300 ),其中,將塊(122-126 )劃 分(308 )為楔形(130a、 130b)還包括將塊(122-126 )到楔形(130a、 130b)的劃分限制到預(yù)先選擇的楔形U30a、 130b)的集合,其中預(yù)先 選擇的楔形(130a、 130b)的集合包括塊(122-126 )的所有可能的楔 形劃分的子集,由此顯著降低與搜索楔形(130a、 130b)相關(guān)的計(jì)算需 求。
3. 如權(quán)利要求1和2中的任一個(gè)所述的方法(300 ),其中,將塊 (122-126 )劃分(308)為楔形U30a、 130b)還包括將塊(122-126 )劃分(308 )為兩個(gè)楔形U30a、 130b),使得兩個(gè)楔形(130a、 130b) 中的一個(gè)具有零運(yùn)動(dòng)向量U32)。
4. 如權(quán)利要求3所述的方法(300),其中,所述楔形(130a、 130b) 的運(yùn)動(dòng)向量(132)包含殘差,所述方法還包括將包含零運(yùn)動(dòng)向量(132)的楔形U30a、 130b)的殘差量化(404 ) 為零,由此降低傳送楔形U30a、 130b)的運(yùn)動(dòng)向量(132)的碼率。
5. 如權(quán)利要求1-4中的任一個(gè)所述的方法(300 ),其中,將塊(122-126 )劃分(308 )為楔形U30a、 130b)還包括將用于每個(gè)楔形 (130a、 130b)的運(yùn)動(dòng)向量(132)限制到來自塊(122-126 )的空間鄰域的運(yùn)動(dòng)向量(132)的相對小的集合,由此降低與搜索楔形U30a、130b)相關(guān)的計(jì)算需求。
6. 如權(quán)利要求1-5中的任一個(gè)所述的方法(300),其中,將塊 (122-126 )劃分(308 )為楔形(130a、 UOb)還包括將塊(122-126 )劃分(308 )為兩個(gè)楔形(130a、 130b)以及兩個(gè)楔形U30a、 130b) 之間的可變厚度的平行帶,其中,兩個(gè)楔形(130a、 130b)中的每個(gè)以 及該平行帶與不同的運(yùn)動(dòng)向量(132)關(guān)聯(lián)。
7. 如權(quán)利要求l-6中的任一個(gè)所述的方法(300 ),其中,步驟(ii) 中將塊劃分(308 )為楔形針對楔形(130a、 130b)中的每個(gè)生成殘差, 該方法還包括以下之一將殘差組合(402 )為正方形塊,并通過使用單次塊變換編碼 該正方形塊;和 , 使用兩次單獨(dú)的形狀自適應(yīng)變換編碼(102)殘差。
8. —種用于編碼視頻序列幀的編碼器(112),其中,該視頻序列 幀由具有第一組尺寸的多個(gè)塊(122-U6)表示,所迷編碼器Ul2)包 括楔形劃分器(224 ); 塊分割器(222 ); 運(yùn)動(dòng)估計(jì)器(226 );以及誤差計(jì)算器(228 ),配置為計(jì)算運(yùn)動(dòng)向量(132)的第一度量,該 第一度量與將至少一個(gè)塊(122-126 )劃分為兩個(gè)楔形(130a、 U0b) 相關(guān),以及計(jì)算運(yùn)動(dòng)向量U32)的第二度量,該笫二度量與將至少一 個(gè)塊分割為子塊(122-126 )相關(guān),并且對于至少一個(gè)塊(122-126 ),其中控制器(204 )被配置為(a)確 定是否該至少一個(gè)塊(122-126 )的一個(gè)或兩個(gè)尺寸等于預(yù)定的最小尺 寸,(b)響應(yīng)于一個(gè)或兩個(gè)尺寸等于預(yù)定的最小尺寸,執(zhí)行運(yùn)動(dòng)估計(jì)器 (226 )以估計(jì)用于該至少一個(gè)塊的運(yùn)動(dòng)向量(132),以及響應(yīng)于兩個(gè) 尺寸都超過預(yù)定的最小尺寸,(c)執(zhí)行運(yùn)動(dòng)估計(jì)器(226 )以估計(jì)用于該至少一個(gè)塊(122-126 )的運(yùn)動(dòng)向量(132 ) , (d)執(zhí)行楔形劃分器(224 ), 以將該多個(gè)塊(122-126 )中的該至少一個(gè)塊(122-126 )劃分為兩個(gè)楔 形(130a、 130b ), (e)執(zhí)行塊分割器(222 ),以將該至少一個(gè)塊(122-126 ) 分割為具有第二組尺寸的子塊(122-126 ),并對每個(gè)子塊(122-126 ) 執(zhí)行(a) - (e)。
9. 如權(quán)利要求8所迷的編碼器(112),其中,控制器U04)還 被配置為執(zhí)行楔形劃分器(224 ),以將塊(122-126 )劃分為兩個(gè)楔形(130a、 130b),使得兩個(gè)楔形(130a、 130b)中的一個(gè)具有零運(yùn)動(dòng)向 量(132)。
10. —種計(jì)算機(jī)可讀存儲媒介,在其上嵌入了一個(gè)或多個(gè)計(jì)算機(jī)程 序,所述一個(gè)或多個(gè)計(jì)算機(jī)程序?qū)崿F(xiàn)用于分解視頻序列幀的方法(3 00 ), 其中,該視頻序列幀由多個(gè)塊(122-126 )表示,所述一個(gè)或更多個(gè)計(jì) 算機(jī)程序包括一組指令,用于確定(304 )所述多個(gè)塊(122-126 )中的每個(gè)是否一個(gè)或兩個(gè)尺寸 等于預(yù)定的最小尺寸;對于一個(gè)或兩個(gè)尺寸等于預(yù)定的最小尺寸的那些塊(122-126 ), 發(fā)送(306 )用于塊(122-126 )的運(yùn)動(dòng)向量(132);對于兩個(gè)尺寸都超過預(yù)定的最小尺寸的那些塊(122-126 ), 確定(308 )用于塊(122-126 )的運(yùn)動(dòng)向量(132); 將塊(122-126 )劃分(308 )為兩個(gè)楔形(130a、 130b),其 中,楔形U30a、 130b)中的每個(gè)與不同的運(yùn)動(dòng)向量(132)關(guān)聯(lián);將塊(122-126 )分割(308 )為四個(gè)N/2 x N/2的子塊(122-126 );以及在四個(gè)N/2xN/2的子塊(122-126 )中的每個(gè)上重復(fù)步驟 (a)-(c),直到一個(gè)或兩個(gè)尺寸等于預(yù)定的最小尺寸。
全文摘要
在用于分解視頻序列幀的塊(122-126)的方法(300)中,確定是否塊(122-126)的一個(gè)或兩個(gè)尺寸等于預(yù)定的最小尺寸。響應(yīng)于一個(gè)或兩個(gè)尺寸等于預(yù)定的最小尺寸,發(fā)送用于塊(122-126)的運(yùn)動(dòng)向量。響應(yīng)于兩個(gè)尺寸都超過預(yù)定的最小尺寸,確定用于塊(122-126)的運(yùn)動(dòng)向量(132)、將塊(122-126)劃分為兩個(gè)楔形(130a、130b)、將塊(122-126)分割為四個(gè)N/2×N/2的子塊(122-126),并且這些步驟在四個(gè)N/2×N/2的子塊(122-126)的每個(gè)上重復(fù),直到一個(gè)或兩個(gè)尺寸等于預(yù)定的最小尺寸。
文檔編號H04N7/32GK101536528SQ200780040869
公開日2009年9月16日 申請日期2007年10月26日 優(yōu)先權(quán)日2006年10月30日
發(fā)明者D·穆克赫吉, S·劉 申請人:惠普開發(fā)有限公司