亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

最后幀運(yùn)動向量分區(qū)的制作方法

文檔序號:11594807閱讀:200來源:國知局

本申請涉及最后幀運(yùn)動向量分區(qū)。



背景技術(shù):

數(shù)字視頻流通常使用幀序列或靜止圖像來表示視頻。每個幀可以包括多個塊,其又可以包含描述像素的顏色、亮度或其它屬性的值的信息。視頻流中的數(shù)據(jù)量很大,并且視頻的傳輸和存儲可以使用大量的計(jì)算或通信資源。由于視頻數(shù)據(jù)中涉及大量數(shù)據(jù),因此傳輸和存儲需要高性能壓縮。在基于塊的編解碼器中,這涉及預(yù)測技術(shù),其包括使用運(yùn)動向量的預(yù)測。



技術(shù)實(shí)現(xiàn)要素:

本公開總體上涉及使用最后幀運(yùn)動向量分區(qū)來對視頻數(shù)據(jù)(例如視頻流數(shù)據(jù))進(jìn)行編碼和解碼,所述最后幀運(yùn)動向量分區(qū)允許對當(dāng)前幀的分區(qū)是基于由一個或一個以上運(yùn)動向量調(diào)整的前一個幀的分區(qū)。概括地說,利用由新的塊的運(yùn)動向量覆蓋的運(yùn)動向量之一將先前幀分區(qū)移位,將塊分割成用于預(yù)測的分離區(qū)域。

本文中用于編碼或解碼視頻信號的方法的一個方面包含確定在視頻序列中的當(dāng)前幀之前的幀的至少一部分的第一分區(qū)。視頻信號包括定義視頻序列的幀,該幀被分區(qū)成至少一個具有像素的區(qū)域。該方法還包括使用預(yù)測來自第一分區(qū)的第一區(qū)域的至少一個預(yù)測子區(qū)域的運(yùn)動向量將第一分區(qū)修改為第二分區(qū),并且使用第二分區(qū)來編碼或解碼當(dāng)前幀的當(dāng)前區(qū)域。

本文中所描述的裝置的一個方面包括處理器和存儲指令的非暫時性存儲器,所述指令使得處理器執(zhí)行包含以下操作的方法:確定在所述視頻序列中的當(dāng)前幀之前的幀的至少一部分的第一分區(qū);使用運(yùn)動向量將所述第一分區(qū)修改為第二分區(qū),所述運(yùn)動向量預(yù)測來自所述第一分區(qū)的第一區(qū)域的至少一個預(yù)測子區(qū)域;并且,使用所述第二分區(qū)來編碼或解碼所述當(dāng)前幀的當(dāng)前區(qū)域。

本文的裝置的另一方面是一種用于對視頻信號進(jìn)行編碼的裝置,所述視頻信號包括定義視頻序列的幀,每個幀被分區(qū)為塊,每個塊具有像素。該裝置包括處理器和存儲指令的非暫時性存儲器,所述指令使處理器執(zhí)行一種方法,包括:確定在所述視頻序列中的當(dāng)前幀之前的幀的第一塊的第一分區(qū);通過下述方式來將所述第一分區(qū)修改為第二分區(qū):利用預(yù)測所述第一塊的預(yù)測子塊的運(yùn)動向量移動識別所述第一塊的邊界的位置以識別新的塊,并且通過使用預(yù)測由所述第一分區(qū)定義的第一塊的至少一個預(yù)測子塊的運(yùn)動向量,由所述幀的至少部分地覆蓋所述新的塊的預(yù)測子塊的運(yùn)動向量來修改在所述位置的所述新的塊的所述邊界內(nèi)包含的所述第一分區(qū);并且,使用所述第二分區(qū)來對所述當(dāng)前幀的當(dāng)前塊進(jìn)行編碼,所述當(dāng)前塊與所述第一塊并置(collocate)。

在以下的詳細(xì)描述、所附權(quán)利要求和附圖中更詳細(xì)地描述本公開的這些和其它方面。

附圖說明

這里的描述參考了下面描述的附圖,其中在幾個視圖中相同的附圖標(biāo)號指代相同的部件。

圖1是視頻編碼和解碼系統(tǒng)的示意圖。

圖2是可以實(shí)現(xiàn)發(fā)送站或接收站的計(jì)算設(shè)備的示例的框圖。

圖3是待編碼和隨后解碼的視頻流的圖。

圖4是根據(jù)本文的教導(dǎo)的一個方面的視頻壓縮系統(tǒng)的框圖。

圖5是根據(jù)本文的教導(dǎo)的另一方面的視頻解壓縮系統(tǒng)的框圖。

圖6是使用最后幀運(yùn)動向量分區(qū)對區(qū)域進(jìn)行編碼或解碼的過程的流程圖。

圖7a-7c是用于解釋圖6的過程的一個示例的圖。

圖8a和8b是用于解釋圖6的過程的另一示例的圖。

具體實(shí)施方式

視頻流可以通過各種技術(shù)被壓縮以減少傳輸或存儲視頻流所需的帶寬。視頻流可以被編碼成比特流,其可以涉及壓縮,然后視頻流可以被發(fā)送到解碼器,解碼器可以解碼或解壓縮視頻流,以將其準(zhǔn)備用于觀看或進(jìn)一步處理。對視頻流進(jìn)行編碼可以涉及在視頻質(zhì)量和比特流大小之間進(jìn)行權(quán)衡的參數(shù),其中增加解碼的視頻流的感知質(zhì)量可以增加傳輸或存儲比特流所需的比特?cái)?shù)。

一種實(shí)現(xiàn)優(yōu)良壓縮性能的技術(shù)通過空間和/或運(yùn)動補(bǔ)償預(yù)測利用視頻信號的空間和時間相關(guān)性。例如,幀間預(yù)測使用運(yùn)動向量來識別類似于待編碼的當(dāng)前塊的先前編碼和解碼的塊。通過對運(yùn)動向量以及兩個塊之間的差進(jìn)行編碼,解碼器可以重新創(chuàng)建當(dāng)前塊。

通常希望對盡可能大的塊進(jìn)行編碼以最小化包括在用于對塊進(jìn)行解碼的比特流的報(bào)頭內(nèi)的數(shù)據(jù)量。然而,大塊會導(dǎo)致比期望的更大量的失真,特別是在塊內(nèi)存在大量運(yùn)動的情況下。由于這個原因,并且為了更好地匹配塊內(nèi)的對象,更大的塊可以被分區(qū)成幾個更小的塊。例如,可以將16×16像素的塊或更大的塊劃分成低至4×4像素的大小的塊以用于預(yù)測。使用其它技術(shù)(例如掩模、楔形物等)對幀進(jìn)行分區(qū)呈現(xiàn)相同的質(zhì)量。因此,本文中使用塊進(jìn)行分區(qū)的描述僅是幀分區(qū)的輸出的一個示例。

當(dāng)前,從頭開始將每個幀分區(qū)——即,不考慮先前幀的分區(qū)。相反,本文的教導(dǎo)描述了一種選項(xiàng),其中最后幀的分區(qū)在幀中由運(yùn)動向量移位以生成新的分區(qū),而不是每次重新分區(qū)整個幀。一般來說,通過移位先前幀分區(qū)(例如,利用新區(qū)域或塊的運(yùn)動向量所覆蓋的運(yùn)動向量之一)將塊(或由幀分區(qū)的先前區(qū)域)分割為單獨(dú)區(qū)域。每個新區(qū)域可以具有其自己的運(yùn)動向量,并且這允許幀的非正方形區(qū)域的單獨(dú)模式和運(yùn)動向量。通過使用運(yùn)動向量來改變先前幀的分區(qū)以使其對于新幀有效,可以減少預(yù)測成本(包括計(jì)算時間)。在對其中可以使用本文的教導(dǎo)的環(huán)境的初始討論之后描述進(jìn)一步的細(xì)節(jié)。

圖1是視頻編碼和解碼系統(tǒng)100的示意圖。發(fā)送站102可以是例如具有諸如圖2所描述的硬件的內(nèi)部配置的計(jì)算機(jī)。然而,發(fā)送站102的其它合適的實(shí)施方式是可能的。例如,發(fā)送站102的處理可以分布在多個設(shè)備中。

網(wǎng)絡(luò)104可以連接發(fā)送站102和接收站106,用于視頻流的編碼和解碼。具體地,可以在發(fā)送站102中對視頻流進(jìn)行編碼,并且可以在接收站106中對編碼的視頻流進(jìn)行解碼。網(wǎng)絡(luò)104可以是例如互聯(lián)網(wǎng)。網(wǎng)絡(luò)104還可以是局域網(wǎng)(lan)、廣域網(wǎng)(wan)、虛擬專用網(wǎng)絡(luò)(vpn)、蜂窩電話網(wǎng)絡(luò)或?qū)⒁曨l流從發(fā)送站102傳送到在此示例中的接收站106的任何其它裝置。

在一個示例中,接收站106可以是具有諸如圖2中所描述者的硬件的內(nèi)部配置的計(jì)算機(jī)。然而,接收站106的其它合適的實(shí)施方式是可能的。例如,接收站106的處理可以分布在多個設(shè)備中。

視頻編碼和解碼系統(tǒng)100的其它實(shí)施方式是可能的。例如,實(shí)施方式可以省略網(wǎng)絡(luò)104。在另一實(shí)施方式中,視頻流可以被編碼,然后被存儲以便稍后傳輸?shù)浇邮照?06或具有存儲器的任何其它設(shè)備。在一個實(shí)施方式中,接收站106接收(例如,經(jīng)由網(wǎng)絡(luò)104、計(jì)算機(jī)總線和/或某個通信路徑)編碼的視頻流,并存儲視頻流以供稍后解碼。在示例實(shí)施方式中,實(shí)時傳輸協(xié)議(rtp)用于通過網(wǎng)絡(luò)104傳輸編碼的視頻。在另一實(shí)施方式中,可以使用除rtp之外的傳輸協(xié)議,例如基于超文本傳輸協(xié)議(http)的視頻流協(xié)議。

例如,當(dāng)在視頻會議系統(tǒng)中使用時,發(fā)送站102和/或接收站106可以包括如下所述的編碼和解碼視頻流的能力兩者。例如,接收站106可以是視頻會議參與者,其從視頻會議服務(wù)器(例如,發(fā)送站102)接收編碼視頻比特流以進(jìn)行解碼和查看,并且進(jìn)一步編碼和發(fā)送其自己的視頻比特流到視頻會議服務(wù)器用于由其他參與者解碼和查看。

圖2是可以實(shí)現(xiàn)發(fā)送站或接收站的計(jì)算設(shè)備200的示例的框圖。例如,計(jì)算設(shè)備200可以實(shí)現(xiàn)圖1的發(fā)送站102和接收站106中的一個或兩個。計(jì)算設(shè)備200可以是包括多個計(jì)算設(shè)備的計(jì)算系統(tǒng)的形式,或者可以是單個計(jì)算設(shè)備的形式,例如移動電話、平板計(jì)算機(jī)、膝上型計(jì)算機(jī)、筆記本計(jì)算機(jī)和臺式計(jì)算機(jī)等。

計(jì)算設(shè)備200中的cpu202可以是中央處理單元。替選地,cpu202可以是現(xiàn)在存在或?qū)黹_發(fā)的能夠操縱或處理信息的任何其它類型的設(shè)備或多個設(shè)備。盡管所公開的實(shí)施方式可以用所示的單個處理器(例如cpu202)來實(shí)現(xiàn),但是可以使用多個處理器來實(shí)現(xiàn)在速度和效率方面的優(yōu)點(diǎn)。

在實(shí)施方式中,計(jì)算設(shè)備200中的存儲器204可以是只讀存儲器(rom)設(shè)備或隨機(jī)存取存儲器(ram)設(shè)備。任何其它合適類型的存儲設(shè)備可以用作存儲器204。存儲器204可以包括由cpu202使用總線212訪問的代碼和數(shù)據(jù)206。存儲器204還可以包括操作系統(tǒng)208和應(yīng)用程序210,應(yīng)用程序210包括允許cpu202執(zhí)行這里描述的方法的至少一個程序。例如,應(yīng)用程序210可以包括應(yīng)用1至n,其還包括執(zhí)行這里描述的方法的視頻編碼應(yīng)用。計(jì)算設(shè)備200還可以包括輔助存儲214,輔助存儲214例如可以是與移動計(jì)算設(shè)備一起使用的存儲器卡。因?yàn)橐曨l通信會話可以包含大量的信息,所以它們可以全部或部分地存儲在輔助存儲214中,并且根據(jù)處理需要被加載到存儲器204中。

計(jì)算設(shè)備200還可以包括一個或多個輸出設(shè)備,諸如顯示器218。在一個示例中,顯示器218可以是將顯示器與可操作以感測觸摸輸入的觸敏元件組合的觸敏顯示器。顯示器218可以經(jīng)由總線212耦合到cpu202。補(bǔ)充或替代顯示器218,可以提供允許用戶編程或以其它方式使用計(jì)算設(shè)備200的其它輸出設(shè)備。當(dāng)輸出設(shè)備是或包括顯示器時,顯示器可以以各種方式實(shí)現(xiàn),包括通過液晶顯示器(lcd)、陰極射線管(crt)顯示器或發(fā)光二極管(led)顯示器(例如,有機(jī)led(oled)顯示器)。

計(jì)算設(shè)備200還可以包括圖像感測設(shè)備220(例如,相機(jī))或者現(xiàn)在存在或者將來開發(fā)的可以感測諸如操作計(jì)算設(shè)備200的用戶的圖像的圖像的圖像感測設(shè)備220,或者可以與之進(jìn)行通信。圖像感測設(shè)備220可以被定位成使得其指向操作計(jì)算設(shè)備200的用戶。在示例中,圖像感測設(shè)備220的位置和光軸可以被配置使得視場包括與顯示器218直接相鄰并且從其可見顯示器218的區(qū)域。

計(jì)算設(shè)備200還可以包括聲音感測設(shè)備222(例如麥克風(fēng))或者現(xiàn)在存在的或今后開發(fā)的可以感測計(jì)算設(shè)備200附近的聲音的任何其它聲音感測設(shè)備,或者與之通信。聲音感測設(shè)備222可以被定位成使得它指向操作計(jì)算設(shè)備200的用戶,并且可以被配置為在用戶操作計(jì)算設(shè)備200時接收由用戶發(fā)出的聲音,例如語音或其它話語。

盡管圖2將計(jì)算設(shè)備200的cpu202和存儲器204描述為集成到單個單元中,但是可以利用其它配置。cpu202的操作可以分布在可以直接耦合或跨越局域或其它網(wǎng)絡(luò)耦合的多個機(jī)器(每個具有一個或多個處理器的機(jī)器)上。存儲器204可以分布在多個機(jī)器上,例如基于網(wǎng)絡(luò)的存儲器或在執(zhí)行計(jì)算設(shè)備200的操作的多個機(jī)器中的存儲器。盡管這里被描繪為單條總線,但是計(jì)算設(shè)備200的總線212可以由多條總線構(gòu)成。此外,輔助存儲214可以直接耦合到計(jì)算設(shè)備200的其它組件,或者可以經(jīng)由網(wǎng)絡(luò)訪問,并且可以包括諸如存儲卡的單個集成單元或諸如多個存儲卡的多個單元。計(jì)算設(shè)備200因此可以以各種各樣的配置來實(shí)現(xiàn)。

圖3是待編碼并隨后解碼的視頻流300的示例的圖。視頻流300包括視頻序列302。在下一級,視頻序列302包括多個相鄰幀304。雖然三個幀被描繪為相鄰幀304,但是視頻序列302可以包括任何數(shù)量的相鄰幀304。然后可以將相鄰的幀304進(jìn)一步細(xì)分為單獨(dú)的幀,例如幀306。在下一級,幀306可以被劃分為一系列平面或段308。例如,段308可以是允許并行處理的幀的子集。段308還可以是可以將視頻數(shù)據(jù)分離成單獨(dú)顏色的幀的子集。例如,彩色視頻數(shù)據(jù)的幀306可以包括亮度平面和兩個色度平面??梢砸圆煌姆直媛蕦Χ?08進(jìn)行采樣。

無論幀306是否被劃分為段308,幀306可以進(jìn)一步細(xì)分為塊310,塊310可以包含對應(yīng)于例如幀306中的16×16個像素的數(shù)據(jù)。塊310還可以被布置為包括來自像素?cái)?shù)據(jù)的一個或多個平面的數(shù)據(jù)。塊310還可以具有任何其它合適的大小,例如4×4像素、8×8像素、16×8像素、8×16像素、16×16像素或更大??梢愿鶕?jù)本文的教導(dǎo)來分區(qū)由框架306的分區(qū)生成的塊310或其它區(qū)域,如下面更詳細(xì)地討論的。也就是說,待編碼的區(qū)域可以是分區(qū)為更小的子塊或區(qū)域的較大的區(qū)域。更具體地,待編碼的當(dāng)前區(qū)域可以被分割成使用例如不同的預(yù)測模式編碼的更小的像素組。這些像素組在本文中可被稱為預(yù)測子塊、預(yù)測子區(qū)域或預(yù)測單元。在一些情況下,由于僅使用一個預(yù)測模式來對該區(qū)域進(jìn)行編碼,因此只有一個預(yù)測子區(qū)域包含待編碼的整個區(qū)域。除非另有說明,否則在下面的圖4和5中的塊的編碼和解碼的描述同樣適用于較大區(qū)域的預(yù)測子塊、預(yù)測子區(qū)域或預(yù)測單元。

圖4是根據(jù)實(shí)施方式的編碼器400的框圖。如上所述,可以在發(fā)送站102中諸如通過提供存儲在存儲器(例如存儲器204)中的計(jì)算機(jī)軟件程序來實(shí)現(xiàn)編碼器400。計(jì)算機(jī)軟件程序可以包括機(jī)器指令,其當(dāng)由諸如cpu202的處理器執(zhí)行時,使發(fā)送站102以圖4所述的方式對視頻數(shù)據(jù)進(jìn)行編碼。編碼器400還可以被實(shí)現(xiàn)為包括在例如發(fā)送站102中的專用硬件。編碼器400具有以下階段以在前向路徑(由實(shí)線連接線示出)中執(zhí)行各種功能,以使用視頻流300作為輸入來生成編碼或壓縮比特流420:幀內(nèi)/幀間預(yù)測階段402、變換階段404、量化階段406和熵編碼階段408。編碼器400還可以包括重構(gòu)路徑(由虛連接線所示)以重構(gòu)用于未來塊的編碼的幀。在圖4中,編碼器400具有以下階段來執(zhí)行重構(gòu)路徑中的各種功能:反量化階段410、反變換階段412、重構(gòu)階段414和環(huán)路濾波階段416。編碼器400的其它結(jié)構(gòu)變型可以用于對視頻流300進(jìn)行編碼。

當(dāng)視頻流300被呈現(xiàn)用于編碼時,每個幀306可以以像素(例如,區(qū)域)為單位被處理,例如塊。在幀內(nèi)/幀間預(yù)測階段402,可使用幀內(nèi)(intra-fram)預(yù)測(也稱為幀內(nèi)(intra)預(yù)測)或幀間(inter-frame)預(yù)測(本文中也稱為幀間(inter)預(yù)測)來對塊進(jìn)行編碼。在任何情況下,可以形成預(yù)測(或預(yù)測器)塊。在幀內(nèi)預(yù)測的情況下,可從當(dāng)前幀中的先前已經(jīng)編碼和重構(gòu)的樣本形成預(yù)測塊。在幀間預(yù)測的情況下,可從一個或多個先前建構(gòu)的參考幀中的樣本形成預(yù)測塊。

接下來,仍參考圖4,可以在幀內(nèi)/幀間預(yù)測階段402從當(dāng)前塊減去預(yù)測塊,以生成殘差塊(也稱為殘差)。變換階段404使用基于塊的變換在將殘差變換為例如頻域中的變換系數(shù)。這種基于塊的變換包括例如離散余弦變換(dct)和非對稱離散正弦變換(adst)。其它基于塊的變換是可能的。此外,不同變換的組合可以應(yīng)用于單個殘差。在變換的應(yīng)用的一個示例中,dct將殘差塊變換到頻域中,其中變換系數(shù)值基于空間頻率。最低頻率(dc)系數(shù)在矩陣左上角且最高頻率系數(shù)在矩陣右下角。值得注意的是,預(yù)測塊的大小可以不同于變換塊的大小,以及因此得到的殘差塊的大小可以不同于變換塊的大小。例如,殘差塊或區(qū)域可以被分割成應(yīng)用單獨(dú)變換的較小塊區(qū)域。

量化階段406使用量化器值或量化等級將變換系數(shù)轉(zhuǎn)換為離散量子值,其稱為量化變換系數(shù)。例如,變換系數(shù)可以除以量化器值并被截?cái)?。量化變換系數(shù)隨后由熵編碼階段408進(jìn)行熵編碼。可使用任何數(shù)量的技術(shù)(包括令牌和二進(jìn)制樹)來執(zhí)行熵譯碼。然后將熵編碼的系數(shù)連同用于對塊進(jìn)行解碼的其它信息(其可以包括例如所使用的預(yù)測類型、變換類型、運(yùn)動向量和量化器值)一起輸出到壓縮比特流420。壓縮比特流420可以也稱為編碼的視頻流或編碼的視頻比特流,且這些術(shù)語將在本文中互換使用。

在圖4中的重構(gòu)路徑(由虛連接線示出)可以用于確保編碼器400和解碼器500(下面描述)使用相同的參考幀來解碼壓縮比特流420。重構(gòu)路徑執(zhí)行與在下面更詳細(xì)地討論的解碼過程期間發(fā)生功能類似的功能,包括在反量化階段410對量化的變換系數(shù)進(jìn)行反量化并且在反變換階段412對反量化的變換系數(shù)進(jìn)行反變換,以生成導(dǎo)數(shù)殘差塊(也稱為導(dǎo)數(shù)殘差)。在重構(gòu)階段414,可以將在幀內(nèi)/幀間預(yù)測階段402處預(yù)測的預(yù)測塊添加到導(dǎo)數(shù)殘差以創(chuàng)建重構(gòu)塊。環(huán)路濾波階段416可以應(yīng)用于重構(gòu)塊以減少諸如塊偽影的失真。

編碼器400的其它變型可以用于對壓縮的比特流420進(jìn)行編碼。例如,基于非變換的編碼器400可以針對某些塊或幀直接量化殘差信號,而不需要變換階段404。在另一實(shí)施方式中,編碼器400可以將量化階段406和反量化階段410組合成單個階段。編碼器400可以根據(jù)該技術(shù)對任何大小或形狀的像素組進(jìn)行編碼。因此,待編碼的像素組可以更一般地稱為區(qū)域。

圖5是根據(jù)另一實(shí)施方式的解碼器500的框圖。解碼器500可以例如通過提供存儲在存儲器204中的計(jì)算機(jī)軟件程序在接收站106中實(shí)現(xiàn)。計(jì)算機(jī)軟件程序可以包括機(jī)器指令,當(dāng)由諸如cpu202的處理器執(zhí)行時,使得接收站106以圖5中描述的方式解碼視頻數(shù)據(jù)。解碼器500還可以在包括在例如發(fā)送站102或接收站106中的硬件中實(shí)現(xiàn)。

類似于上文所論述的編碼器400的重構(gòu)路徑,解碼器500在一個示例中包括以下階段以執(zhí)行各種功能以從壓縮比特流420生成輸出視頻流516:熵解碼階段502、反量化階段504、反變換階段506、幀內(nèi)/幀間預(yù)測階段508、重構(gòu)階段510、環(huán)路濾波階段512和解塊濾波階段514。解碼器500的其它結(jié)構(gòu)變體可用于對壓縮比特流420解碼。

當(dāng)呈現(xiàn)壓縮比特流420用于解碼時,壓縮比特流420內(nèi)的數(shù)據(jù)元素可以由熵解碼階段502解碼,以生成量化變換系數(shù)集。反量化階段504對量化的變換系數(shù)進(jìn)行反量化(例如,通過將量化的變換系數(shù)乘以量化器值),并且反變換階段506使用所選擇的變換類型對反量化的變換系數(shù)進(jìn)行反變換,以生成導(dǎo)數(shù)殘差,其可以與在編碼器400中通過反變換階段412而生成者相同。使用從壓縮比特流420解碼的報(bào)頭信息,解碼器500可以使用幀內(nèi)/幀間預(yù)測階段508來創(chuàng)建與在編碼器400中例如在幀內(nèi)/幀間預(yù)測階段402處創(chuàng)建的預(yù)測塊相同的預(yù)測塊。在重構(gòu)階段510處,可將預(yù)測塊添加到導(dǎo)數(shù)殘差以創(chuàng)建重構(gòu)塊。環(huán)路濾波階段512可以應(yīng)用于重構(gòu)塊以減少塊偽影??梢詫χ貥?gòu)塊應(yīng)用其它濾波。在此示例中,將解塊濾波階段514應(yīng)用于重構(gòu)塊以減少塊失真,且將結(jié)果輸出為輸出視頻流516。輸出視頻流516還可被稱為解碼的視頻流,且術(shù)語將在本文中互換使用。

解碼器500的其它變型可用于解碼壓縮的比特流420。例如,解碼器500可以在沒有解塊濾波階段514的情況下生成輸出視頻流516。雖然為了簡化說明而參考框進(jìn)行描述,根據(jù)本技術(shù),解碼器500可解碼任何大小或形狀的像素組(例如,區(qū)域)。

如上簡述,可以通過最后幀運(yùn)動向量分區(qū)(即,通過使用運(yùn)動向量調(diào)整最后幀的分區(qū))來分區(qū)幀或幀的區(qū)域以用于編碼或解碼。一般來說,利用由新區(qū)域的運(yùn)動向量覆蓋的運(yùn)動向量之一將先前幀分區(qū)移位來將區(qū)域分裂為單獨(dú)區(qū)域。

圖6是根據(jù)本公開的一個實(shí)施方式的用于通過最后幀運(yùn)動向量分區(qū)對區(qū)域進(jìn)行編碼或解碼的過程600的流程圖。方法或過程600可以在諸如計(jì)算設(shè)備200的系統(tǒng)中實(shí)現(xiàn)以輔助視頻流的編碼或解碼。過程600可以被實(shí)現(xiàn)為例如由諸如發(fā)送站102或接收站106的計(jì)算設(shè)備執(zhí)行的軟件程序。軟件程序可以包括存儲在諸如存儲器204的存儲器中的機(jī)器可讀指令,其當(dāng)由諸如cpu202的處理器執(zhí)行時,使得計(jì)算設(shè)備執(zhí)行過程600。過程600也可以使用硬件整體或部分地實(shí)現(xiàn)。如上所述,一些計(jì)算設(shè)備可以具有多個存儲器和多個處理器,并且在這種情況下過程600的步驟或操作可以使用不同的處理器和存儲器來分布。本文中單數(shù)形式的術(shù)語“處理器”和“存儲器”的使用包括僅具有一個處理器或一個存儲器的計(jì)算設(shè)備以及具有多個處理器或存儲器的設(shè)備,每個處理器或存儲器可用于執(zhí)行一些但不必全部的所記載的步驟。

為了簡化說明,將過程600描繪和描述為一系列步驟或操作。然而,根據(jù)本公開的步驟和操作可以以各種次序和/或同時發(fā)生。另外,根據(jù)本公開的步驟或操作可以與本文未呈現(xiàn)和描述的其它步驟或操作一起發(fā)生。此外,根據(jù)本公開主題,并非需要所有示出的步驟或操作用于實(shí)現(xiàn)根據(jù)所公開的主題的方法??梢詫斎胄盘柕拿總€幀的每個塊重復(fù)過程600。在一些實(shí)施方式中,根據(jù)過程600僅處理一個或多個幀的一些塊。舉例來說,當(dāng)執(zhí)行過程600時可省略使用幀內(nèi)預(yù)測模式編碼的塊。

當(dāng)過程600是編碼過程時,輸入信號可以是例如視頻流300。輸入信號可以由以任何數(shù)量的方式執(zhí)行過程600的計(jì)算機(jī)接收。例如,輸入信號可以由圖像感測設(shè)備220捕獲,或者通過連接到總線212的輸入從另一設(shè)備接收。在另一實(shí)施方式中,可以從輔助存儲214檢索輸入信號。輸入信號的其它接收方式和其它源也是可能的。例如,當(dāng)過程600是解碼過程時,輸入信號可以是諸如壓縮比特流420的編碼比特流。

使用輸入信號,在602處確定區(qū)域的第一分區(qū)。這可以包括確定在視頻序列中的當(dāng)前幀之前的幀的至少一部分的第一分區(qū)。

當(dāng)過程600是編碼過程時,確定第一分區(qū)可以包含使用速率失真計(jì)算。例如,當(dāng)幀是視頻序列中的第一幀時,可以通過將幀劃分為塊并且從多個可用預(yù)測模式中確定用于塊的最佳預(yù)測模式來執(zhí)行第一分區(qū),所述多個可用預(yù)測模式由例如根據(jù)圖4的編碼處理的最低速率失真值確定。在一個示例中,塊為16×16像素塊,且可用預(yù)測模式可包括用于塊且用于塊的具有8×16像素、16×8像素、8×8像素、8×4像素、4×8像素和4×4像素的大小的子塊的若干幀內(nèi)預(yù)測和幀間預(yù)測模式。在另一示例中,幀不是視頻序列中的第一幀。在此情況下,可基于先前幀(例如,在幀之前的視頻序列中的最后一幀)的分區(qū)來如本文中所描述來確定第一分區(qū)。

當(dāng)過程600是解碼過程時,確定第一分區(qū)可以包括從諸如關(guān)于圖5描述的編碼視頻比特流解碼幀。在一個實(shí)施方式中,根據(jù)由編碼器確定的分區(qū)來對解碼的幀進(jìn)行解碼。

無論過程600是編碼過程還是解碼過程,第一分區(qū)定義幀的第一區(qū)域的至少一個預(yù)測子區(qū)域。在604使用運(yùn)動向量修改第一分區(qū)。在一個實(shí)施方式中,修改第一分區(qū)包括使用預(yù)測來自第一分區(qū)的第一區(qū)域的至少一個預(yù)測子區(qū)域的運(yùn)動向量將第一分區(qū)修改為第二分區(qū)。在一些情況下,這是通過由運(yùn)動向量將幀內(nèi)的第一區(qū)域的位置移動,然后由至少部分地覆蓋所述新區(qū)域的預(yù)測子區(qū)域的至少一個運(yùn)動向量將包含在新區(qū)域位置的邊界內(nèi)的第一分區(qū)修改而實(shí)現(xiàn)。在其它情況下,這是通過由運(yùn)動向量修改包含在第一區(qū)域的邊界內(nèi)的第一分區(qū)來實(shí)現(xiàn)。

圖7a-7c是用于解釋圖6的過程600的一個示例的圖。更具體地,圖7a-7c解釋了在過程600的604處修改第一分區(qū)。該示例示出了導(dǎo)致形成為塊的區(qū)域的分區(qū),因此使用術(shù)語塊。然而,參考圖圖7a-7c對過程600的描述將適用于可以具有或可以不具有矩形形狀的區(qū)域。

圖7a示出視頻序列中的當(dāng)前幀之前的幀的第一分區(qū)700的一部分。在基于塊的分區(qū)的該示例中,第一塊702被分區(qū)為僅一個預(yù)測子塊。也就是說,使用由圖7a中的第一塊702的邊界內(nèi)的箭頭表示的單個運(yùn)動向量來預(yù)測第一塊702。在圖7a中示出了第一分區(qū)700的幾個其它預(yù)測子塊。具體地,通過示例標(biāo)記三個其它塊的預(yù)測子塊。

將第一塊702上方的塊分區(qū)為四個相等大小的預(yù)測子塊,其中兩個被標(biāo)記為預(yù)測子塊706和預(yù)測子塊708。使用由在圖7a中的預(yù)測子塊706的邊界內(nèi)的箭頭示出的運(yùn)動向量預(yù)測預(yù)測子塊706,而使用圖7a中的預(yù)測子塊708的邊界內(nèi)的箭頭所示的運(yùn)動向量來預(yù)測預(yù)測子塊708。預(yù)測子塊706、708的運(yùn)動向量不同,或者它們表示的塊的部分將被示為單個子塊。使用不同的預(yù)測模式和/或不同的運(yùn)動向量對第一塊702上方的塊的剩余兩個子塊進(jìn)行編碼。

上述塊右側(cè)的塊也被分區(qū)為四個相等大小的預(yù)測子塊,其中之一被標(biāo)記為預(yù)測子塊710。使用通過圖7a中的預(yù)測子塊710的邊界內(nèi)的點(diǎn)所示的幀內(nèi)預(yù)測來預(yù)測預(yù)測子塊710。在該示例中,該塊的剩余預(yù)測子塊沒有被標(biāo)記,因?yàn)檫@里不使用它們,但是每個可以使用不同的預(yù)測模式和/或不同的運(yùn)動向量來編碼。

將第一塊702右側(cè)的塊分區(qū)為兩個相等大小的預(yù)測子塊,其中之一被標(biāo)記為預(yù)測子塊712。使用通過圖7中的預(yù)測子塊712的邊界內(nèi)的點(diǎn)所示的幀內(nèi)預(yù)測來預(yù)測預(yù)測子塊712。在該示例中,該塊的剩余預(yù)測子塊沒有被標(biāo)記,因?yàn)檫@里不使用該塊,但它使用不同的預(yù)測模式對其進(jìn)行編碼。

第一塊702可以是16×16像素塊、32×32像素塊或某個其它大小的塊。當(dāng)?shù)谝粔K702是例如16×16像素塊時,預(yù)測子塊706、708、710每個包括8×8個像素,并且預(yù)測子塊712是8×16個像素。

如上所述,可以使用運(yùn)動向量將第一分區(qū)修改為第二分區(qū),該運(yùn)動向量預(yù)測來自第一分區(qū)的第一區(qū)域的至少一個預(yù)測子區(qū)域。在圖7a-7c的示例中,這是通過由運(yùn)動向量將幀內(nèi)的第一區(qū)域(這里是塊)的位置移動,然后通過由至少部分地覆蓋新位置的預(yù)測子區(qū)域的至少一個運(yùn)動向量將包含在新位置的邊界內(nèi)的第一分區(qū)進(jìn)行修改來實(shí)現(xiàn)。如圖7a所示,第一塊702被移動到由新的塊704指示的位置。包括在新的塊704的邊界內(nèi)的第一分區(qū)包括第一塊702、預(yù)測子塊706、708、710和預(yù)測子塊712的部分。至少部分地覆蓋新的塊704的預(yù)測子塊的運(yùn)動向量包括用于第一塊702和預(yù)測子塊706、708的運(yùn)動向量。圖7b示出了第一分區(qū)的修改,由此由另一運(yùn)動向量調(diào)整由新的塊704的邊界內(nèi)的相鄰預(yù)測塊或子塊之間的頂點(diǎn)720、722定義的邊界。所使用的運(yùn)動向量可以僅是可用運(yùn)動向量中的一個,諸如最大或最小運(yùn)動向量,或者其可以是可用運(yùn)動向量的組合,例如平均或加權(quán)平均。加權(quán)平均可基于使用每一運(yùn)動向量預(yù)測的新的塊704的部分(例如,作為整體的區(qū)域中的像素的數(shù)量)。圖7c示出了結(jié)果產(chǎn)生的用于新的塊704的第二分區(qū)730,其包括五個預(yù)測子塊732-740。

更一般地說,圖7a-7c示出了過程,由此修改第一分區(qū)包括使用運(yùn)動向量將第一區(qū)域的外邊界調(diào)整到幀內(nèi)的更新的位置,其中更新的位置覆蓋幀的區(qū)域的部分(例如,預(yù)測子區(qū)域的部分)。然后,由相同的運(yùn)動向量(或不同的運(yùn)動向量)在更新的位置內(nèi)移動區(qū)域的部分的角或頂點(diǎn)(以及具有它們的邊界),以將第一分區(qū)修改為第二分區(qū)。

圖8a和8b是用于解釋圖6的過程600的另一示例的圖。在這種情況下,通過由運(yùn)動向量修改包含在第一區(qū)域的邊界內(nèi)的第一分區(qū)來實(shí)現(xiàn)使用運(yùn)動向量修改第一分區(qū)。因?yàn)閳D8a和8b示出了分區(qū)成塊,所以這些區(qū)域被稱為塊。如圖8a所示,塊800被分區(qū)為四個預(yù)測子塊,其中一個使用運(yùn)動向量802預(yù)測,并且其它三個被幀內(nèi)預(yù)測。在這種情況下,針對塊810示出修改的第二分區(qū),其中,如圖7b中那樣,利用運(yùn)動向量802移動預(yù)測子塊之間的交叉點(diǎn)(角或頂點(diǎn)),以將第一分區(qū)修改為第二分區(qū)。

可基于例如預(yù)測模式或運(yùn)動向量值而試探性地確定,或?qū)嶒?yàn)地通過測試不同技術(shù)且選擇最適合正被編碼的塊(和幀)的一個,來確定用于修改分區(qū)的運(yùn)動向量之間的選擇。用于修改根據(jù)圖6處理的幀的每個塊的分區(qū)的技術(shù)可以由比特流內(nèi)的標(biāo)志或其它標(biāo)識符來識別,使得解碼器生成后續(xù)幀的相同分區(qū)。到對于幀使用相同的技術(shù)的程度,這可以在幀報(bào)頭中發(fā)送。替選地或附加地,可在區(qū)域(例如,塊)或段報(bào)頭中發(fā)送用于修改基于區(qū)域或段的分區(qū)的運(yùn)動向量以供解碼器使用。在一些實(shí)施方式中,僅需要從編碼器發(fā)送模式標(biāo)識符以指示使用最后幀運(yùn)動向量分區(qū)來執(zhí)行區(qū)域、段或幀的分區(qū),以使解碼器能夠生成新分區(qū)。在這些實(shí)施方式的變型中,僅在編碼器處執(zhí)行過程600,并且解碼器可以例如根據(jù)圖5解碼位于比特流內(nèi)的分區(qū)的區(qū)域。

一旦確定了修改的第二分區(qū),則在606處將其用于對當(dāng)前幀的當(dāng)前區(qū)域進(jìn)行編碼或解碼。當(dāng)前區(qū)域可以與第一區(qū)域并置。例如,當(dāng)前區(qū)域和第一區(qū)域可以是并置塊。并置區(qū)域在不同幀內(nèi)具有相同的像素坐標(biāo)。替選地,當(dāng)前區(qū)域可被運(yùn)動向量(例如在示例中的第一塊702的運(yùn)動向量)在當(dāng)前幀內(nèi)從第一區(qū)域位置移位。對當(dāng)前區(qū)域進(jìn)行編碼包括通過生成當(dāng)前區(qū)域的預(yù)測子區(qū)域的殘差,并將殘差編碼到具有解碼當(dāng)前區(qū)域所需的信息的編碼比特流中,來對第二分區(qū)的預(yù)測子區(qū)域進(jìn)行編碼。例如,編碼過程可以包括使用如關(guān)于圖4所描述的變換階段404、量化階段406和熵編碼階段408來處理殘差。每個預(yù)測子區(qū)域的殘差可以使用不同的預(yù)測模式來生成,通過對每個的最佳模式的可用預(yù)測模式的窮盡測試來確定,或者可以基于第一區(qū)域的先前預(yù)測模式從更小的預(yù)測模式列表中來確定。

當(dāng)過程600是解碼過程時,修改的分區(qū)可以用于確定用于對殘差進(jìn)行解碼的當(dāng)前區(qū)域的每個預(yù)測子區(qū)域的殘差的大小,然后為每個預(yù)測子區(qū)域生成類似大小的預(yù)測區(qū)域以添加到殘差以重構(gòu)當(dāng)前區(qū)域。例如,解碼過程可以包括使用熵解碼階段502、反量化階段504和反變換階段506處理殘差,如相對于圖5所描述的。然后,可以在重構(gòu)階段510重構(gòu)當(dāng)前區(qū)域,如也參照圖5所描述的。

盡管已關(guān)于具有使用基于塊的分區(qū)技術(shù)形成的矩形預(yù)測子塊的某些示例描述了過程600,但過程600可用于從幀的各種分區(qū)技術(shù)產(chǎn)生的區(qū)域。過程600例如通過使用被運(yùn)動向量移位了的最后一幀的掩模,對掩模工作良好。使用具有在單獨(dú)預(yù)測的兩個大體連續(xù)的像素區(qū)域之間的邊界的掩模,第一分區(qū)將定義第一區(qū)域的兩個預(yù)測子區(qū)域,并且第二分區(qū)將包括兩個更新的預(yù)測子區(qū)域,其中更新的預(yù)測子區(qū)域是利用運(yùn)動向量在第一區(qū)域內(nèi)移動的原始預(yù)測子區(qū)域之間的邊界。也就是說,例如,第一分區(qū)可使用掩模來定義第一區(qū)域的兩個預(yù)測子區(qū)域,其中兩個預(yù)測子區(qū)域中的每一個在掩模內(nèi)的邊界的相對側(cè)上。因此,修改第一分區(qū)包括:利用運(yùn)動向量移動掩模內(nèi)的邊界,以生成用于預(yù)測的更新的邊界,使得當(dāng)更新的掩模用于預(yù)測時,第二分區(qū)包括在更新的邊界的相對側(cè)上的兩個更新的預(yù)測子區(qū)域。使用例如楔形、顏色、殘差和三個運(yùn)動向量模式掩模的分區(qū)技術(shù)得到的區(qū)域都可以從根據(jù)過程600的最后幀運(yùn)動向量分區(qū)中獲益。

通過使用運(yùn)動向量來改變先前幀的分區(qū)以使其對于新幀有效,可以最小化當(dāng)編碼新幀時與分區(qū)有關(guān)的計(jì)算。本文的教導(dǎo)提供了在具有允許幀的新定義區(qū)域具有其自己的運(yùn)動向量和/或編碼模式并且允許用于像素的非正方形塊的單獨(dú)模式和運(yùn)動向量的靈活性的情況下避免重新分區(qū)整個幀的選項(xiàng)。這有助于提供對壓縮的良好預(yù)測。

上文所描述的編碼和解碼的方面圖示編碼和解碼技術(shù)的一些示例。然而,應(yīng)當(dāng)理解,作為權(quán)利要求中使用的那些術(shù)語的編碼和解碼可以意味著數(shù)據(jù)的壓縮、解壓縮、變換或任何其它處理或變化。

詞語“示例”在本文中用于表示用作示例、實(shí)例或說明。在本文中被描述為“示例”的任何方面或設(shè)計(jì)不一定被解釋為相對于其它方面或設(shè)計(jì)是優(yōu)選的或有利的。相反,使用詞語“示例”旨在以具體的方式呈現(xiàn)概念。如本申請中所使用的,術(shù)語“或”旨在表示包括性的“或”而不是排他性的“或”。也就是說,除非另有規(guī)定或從上下文中清楚,否則“x包括a或b”意在表示任何自然的包括性排列。也就是說,如果x包括a;x包括b;或x包括a和b兩者,則在任何前述情況下滿足“x包括a或b”。此外,除非另有說明或從上下文中清楚地指示單數(shù)形式,否則本申請和所附權(quán)利要求中使用的冠詞“一”和“一個”通常應(yīng)被解釋為意指“一個或多個”。此外,貫穿全文使用術(shù)語“實(shí)施方式”或“一個實(shí)施方式”并不旨在表示相同的實(shí)施例或?qū)嵤┓绞剑沁@樣描述。

發(fā)送站102和/或接收站106(以及其上存儲的和/或由其執(zhí)行的由編碼器400和解碼器500包括的算法、方法、指令等)的實(shí)施方式可以以在硬件、軟件或其任何組合實(shí)現(xiàn)。硬件可以包括例如計(jì)算機(jī)、知識產(chǎn)權(quán)(ip)核、專用集成電路(asic)、可編程邏輯陣列、光學(xué)處理器、可編程邏輯控制器、微代碼、微控制器、服務(wù)器、微處理器、數(shù)字信號處理器或任何其它合適的電路。在權(quán)利要求中,術(shù)語“處理器”應(yīng)當(dāng)被理解為單獨(dú)地或組合地包括任何前述硬件。術(shù)語“信號”和“數(shù)據(jù)”可互換使用。此外,發(fā)送站102和接收站106的部分不一定必須以相同的方式實(shí)現(xiàn)。

此外,在一個方面,例如,發(fā)送站102或接收站106可以使用具有計(jì)算機(jī)程序的通用計(jì)算機(jī)或通用處理器來實(shí)現(xiàn),所述計(jì)算機(jī)程序在被執(zhí)行時執(zhí)行任何本文描述的相應(yīng)的方法、算法和/或指令。附加地或替選地,例如,可以使用可以包含用于執(zhí)行本文所述的任何方法、算法或指令的其它硬件的專用計(jì)算機(jī)/處理器。

發(fā)送站102和接收站106可以例如在視頻會議系統(tǒng)中的計(jì)算機(jī)上實(shí)現(xiàn)。替選地,發(fā)送站102可以在服務(wù)器上實(shí)現(xiàn),并且接收站106可以在與服務(wù)器分離的設(shè)備上實(shí)現(xiàn),諸如手持通信設(shè)備。在這種情況下,發(fā)送站102可以使用編碼器400將內(nèi)容編碼為編碼視頻信號,并將編碼視頻信號發(fā)送到通信設(shè)備。繼而,通信設(shè)備然后可以使用解碼器500對編碼的視頻信號進(jìn)行解碼。替選地,通信設(shè)備可以解碼在通信設(shè)備上本地存儲的內(nèi)容,例如,未由發(fā)送站102發(fā)送的內(nèi)容。其它合適的發(fā)送并且接收實(shí)現(xiàn)方案是可用的。例如,接收站106可以是通常固定的個人計(jì)算機(jī)而不是便攜式通信設(shè)備,和/或,包括編碼器400的設(shè)備還可以包括解碼器500。

此外,本發(fā)明的實(shí)施方式的全部或一部分可以采用可從例如有形計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)訪問的計(jì)算機(jī)程序產(chǎn)品的形式。計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)可以是能夠例如有形地包含、存儲、傳送或傳輸程序以由任何處理器使用或與任何處理器結(jié)合使用的任何設(shè)備。介質(zhì)可以是例如電子、磁性、光學(xué)、電磁或半導(dǎo)體設(shè)備。也可使用其它合適的介質(zhì)。

已經(jīng)描述了上述實(shí)施例、實(shí)施方式和方面以便于容易理解本發(fā)明,并且不限制本發(fā)明。相反,本發(fā)明旨在覆蓋包括在所附權(quán)利要求的范圍內(nèi)的各種修改和等同布置,其范圍符合最寬泛的解釋,以包括法律允許的所有這樣的修改和等同結(jié)構(gòu)。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1