預(yù)測模式選擇方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及視頻編碼領(lǐng)域,特別涉及一種預(yù)測模式選擇方法及裝置。
【背景技術(shù)】
[0002]在HEVC(High Efficient Video Coding,高效率視頻編碼)標準中,提出了預(yù)測單元(Predict1n Unit,簡稱:PU)的概念。預(yù)測單元是進行幀間預(yù)測和幀內(nèi)預(yù)測的基本單
J L.ο
[0003]在HEVC標準中,提供了若干種幀間預(yù)測模式和若干種幀內(nèi)預(yù)測模式可供選擇。為了查找到最優(yōu)的預(yù)測模式,現(xiàn)有技術(shù)需要計算當(dāng)前預(yù)測單元在每一種預(yù)測模式下的率失真代價,并且從中挑選出率失真代價最小的預(yù)測模式作為最終采用的預(yù)測模式。
[0004]在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:由于需要計算每一種預(yù)測模式下的率失真代價,且率失真代價的計算量較大,導(dǎo)致預(yù)測模式的選擇過程需要花費較多的耗時,占整個編碼過程耗時的60%?70%。
【發(fā)明內(nèi)容】
[0005]為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實施例提供了一種預(yù)測模式選擇方法及裝置。所述技術(shù)方案如下:
[0006]根據(jù)本公開的第一方面,提供了一種預(yù)測模式選擇方法,所述方法包括:
[0007]分別計算當(dāng)前預(yù)測單元在采用幀間skip模式時的率失真代價Jskip、采用幀間merge模式時的率失真代價Jmwge和采用幀間2N*2N模式下的率失真代價J 2W2N;
[0008]檢測所述Jskip是否小于所述J 和所述J胃;
[0009]若所述JskiI/J、于所述J 和所述J 2_,則將所述JskipS置為候選率失真代價
Jmode?
[0010]計算所述當(dāng)前預(yù)測單元在采用至少一種幀內(nèi)預(yù)測模式時的率失真代價Jintra;
[0011]從所述JnrodJP至少一個所述J intM中選擇出率失真代價最小的預(yù)測模式作為所述當(dāng)前預(yù)測單元的最終預(yù)測模式。
[0012]根據(jù)本公開的第二方面,提供了一種預(yù)測模式選擇裝置,所述裝置包括:
[0013]第一計算模塊,用于分別計算當(dāng)前預(yù)測單元在采用幀間skip模式時的率失真代價Jskip、采用幀間merge模式時的率失真代價Jnrage和采用幀間2N*2N模式下的率失真代價
J2N*2N;
[0014]跳過檢測模塊,用于檢測所述Jskip是否小于所述J 和所述J 2_;
[0015]跳過設(shè)置模塊,用于若所述Jski/j、于所述Jm_和所述J 2_,則將所述Jskip設(shè)置為候選率失真代價Jm。‘
[0016]第二計算模塊,還用于計算所述當(dāng)前預(yù)測單元在采用至少一種幀內(nèi)預(yù)測模式時的率失真代價Jintaa;
[0017]最終決策模塊,用于從所述Jnrode和至少一個所述Jintra中選擇出率失真代價最小的預(yù)測模式作為所述當(dāng)前預(yù)測單元的最終預(yù)測模式。
[0018]本發(fā)明實施例提供的技術(shù)方案帶來的有益效果是:
[0019]通過在幀間skip模式較優(yōu)時,跳過除幀間skip模式、幀間merge模式和幀間2N*2N模式之外的其它7種幀間預(yù)測模式的率失真代價計算過程,減少了預(yù)測模式選擇過程所需要的計算量,能夠有效降低預(yù)測模式選擇的耗時,滿足一些實時性要求較高的場景的需求。
【附圖說明】
[0020]為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0021]圖1是本發(fā)明實施例涉及的預(yù)測單元的8種幀間預(yù)測模式的劃分示意圖;
[0022]圖2是本發(fā)明一個實施例提供的預(yù)測模式選擇方法的方法流程圖;
[0023]圖3是本發(fā)明另一個實施例提供的預(yù)測模式選擇方法的方法流程圖;
[0024]圖4是本發(fā)明一個實施例提供的預(yù)測模式選擇裝置的結(jié)構(gòu)示意圖;
[0025]圖5是本發(fā)明另一個實施例提供的預(yù)測模式選擇裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0026]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地詳細描述。
[0027]首先對本實施例所涉及的幾個名詞進行簡介:
[0028]圖像幀:一段視頻由若干幀圖像幀構(gòu)成。視頻壓縮編碼一般采取基于塊的編碼方式,即把視頻中的一幀圖像幀分成多個互不重疊的塊,之后對這些塊進行編碼。每個圖像幀在視頻編碼時可以采用幀間預(yù)測編碼方式或幀內(nèi)預(yù)測編碼方式。
[0029]在HEVC標準中,提出了編碼單元、預(yù)測單元和變換單元的概念。
[0030]編碼單元:是一個圖像幀中進行編碼的基本單元。編碼單元可以是64*64的像素塊。
[0031]預(yù)測單元:是一個圖像幀中進行預(yù)測的基本單元。預(yù)測單元可以是64*64、32*32、16*16,8*8等像素尺寸的塊。
[0032]變換單元:是一個圖像幀中呈現(xiàn)殘差(Residual)或變換系數(shù)(TransformCoefficients)的基本單元。變換單元也可以是32*32、16*16、8*8、4*4等像素尺寸的塊。本文中不涉及編碼單元和變換單元的討論。
[0033]對于一個預(yù)測單元,HEVC標準中提供了 10種幀間預(yù)測模式和3種幀內(nèi)預(yù)測模式。
[0034]10種幀間預(yù)測模式包括:幀間skip模式、幀間merge模式、幀間2N*2N模式、幀間N*N模式、幀間2N*N模式、幀間N*2N模式、幀間2N*UD模式、幀間2N*nD模式、幀間nL*2N模式、幀間nR*2N模式,如圖1所示。
[0035]其中,幀間2N*2N模式、幀間N*N模式、幀間2N*N模式、幀間N*2N模式屬于四種對稱預(yù)測方式;幀間2N*UD模式和幀間2N*nD模式屬于水平方向的不對稱預(yù)測方式;幀間nL*2N模式、幀間nR*2N模式屬于垂直方向的不對稱預(yù)測方式。
[0036]3種幀內(nèi)預(yù)測模式包括:幀內(nèi)2N*2N模式、幀內(nèi)N*N模式和幀內(nèi)PCM模式。
[0037]在HEVC標準中,當(dāng)決策當(dāng)前預(yù)測單元的最優(yōu)預(yù)測模式時,需要計算當(dāng)前預(yù)測單元采用上述13種預(yù)測模式時分別對應(yīng)的率失真代價,計算量非常大,導(dǎo)致預(yù)測模式的選擇過程需要花費較多的耗時,占整個編碼過程耗時的60%?70%。
[0038]請參考圖2,其示出了本發(fā)明一個實施例提供的預(yù)測模式選擇方法的方法流程圖。本實施例以該預(yù)測模式選擇方法應(yīng)用于視頻編碼器中來舉例說明。該方法包括:
[0039]步驟201,分別計算當(dāng)前預(yù)測單元在采用幀間skip模式時的率失真代價Jskip、采用幀間merge模式時的率失真代價Jnrage和采用幀間2N*2N模式下的率失真代價J 2N*2N;
[0040]率失真代價,是率失真優(yōu)化(Rate - distort1n optimizat1n,簡稱RDO)代價的簡稱。率失真代價的計算過程為已有技術(shù),本文不再贅述。
[0041 ] 步驟202,檢測1物是否小于J merge^P J 2_;
[0042]步驟203,若Jskip小于J_和J 2N*2N,則將JskipS置為候選率失真代價J ffl0de;
[0043]步驟204,計算當(dāng)前預(yù)測單元在采用至少一種幀內(nèi)預(yù)測模式時的率失真代價
T.J intra?
[0044]步驟205,從Jnwde和至少一個J intra中選擇出率失真代價最小的預(yù)測模式作為當(dāng)前預(yù)測單元的最終預(yù)測模式。
[0045]綜上所述,本實施例提供的預(yù)測模式選擇方法,在幀間skip模式較優(yōu)時,跳過除幀間skip模式、幀間merge模式和幀間2N*2N模式之外的其它7種幀間預(yù)測模式的率失真代價計算過程,減少了預(yù)測模式選擇過程所需要的計算量,能夠有效降低預(yù)測模式選擇的耗時,滿足一些實時性要求較高的場景的需求。
[0046]請參考圖3,其示出了本發(fā)明另一個實施例提供的預(yù)測模式選擇方法的方法流程圖。本實施例以該預(yù)測模式選擇方法應(yīng)用于視頻編碼器中來舉例說明。該方法包括:
[0047]步驟301,分別計算當(dāng)前預(yù)測單元在采用幀間skip模式時的率失真代價Jskip、采用幀間merge模式時的率失真代價Jnrage和采用幀間2N*2N模式下的率失真代價J 2N*2N;
[0048]步驟302,檢測1_是否小于J merge^P J 2_;
[0049]若Jskip小于J _和J 2N*2N,則進入步驟303 ;
[0050]若Jskip不小于 J merge^P J 2N*2N,則進入步驟 304。
[0051]步驟303,將JskipS置為候選率失真代價J mode;
[0052]步驟304,分別計算當(dāng)前預(yù)測單元在采用幀間N*N模式時的率失真代價Jn?、采用幀間2N*N模式時的率失真代價J2n?和采用幀間N*2N模式下的率失真代價J _2N。
[0053]步驟305,從 Jmerge、J2_、Jn*n、J2?N和 J N*2N中查找出第一最小值;
[0054]若第一最小值是JmOTge,則進入步驟306。
[0055]若第一最小值不是Jmerge,則進入步驟307。
[0056]步驟306,將第一最小值設(shè)置為候選率失真代價Jnwde;