本發(fā)明涉及高清數(shù)字視頻壓縮編碼
技術(shù)領(lǐng)域:
,尤其涉及一種hevc整像素運(yùn)動(dòng)估計(jì)方法及裝置。
背景技術(shù):
:hevc(highefficiencyvideocoding)是下一代視頻壓縮編碼標(biāo)準(zhǔn)。在相同視頻清晰度的情況下,視頻壓縮后的碼率只有h.264的50%。整像素運(yùn)動(dòng)估計(jì)是幀間預(yù)測(cè)的一部分,在hevc中,cu(codeunit)是最基本的幀間編碼單元,其尺寸大小為64×64,32×32,,16×16,8×8,單位為像素。每個(gè)cu可以被劃分為多個(gè)pu,pu是幀間預(yù)測(cè)的基本單元,大小可以從8×4到64×64。運(yùn)動(dòng)估計(jì)是在已編碼的圖(參考幀)中為當(dāng)前pu尋找一個(gè)最佳匹配塊,該塊與當(dāng)前pu相對(duì)位置的偏移即為最優(yōu)運(yùn)動(dòng)矢量(mv,motionvector)。在hevc中,圖像處理像素塊的大小最大為64×64,這對(duì)數(shù)據(jù)帶寬和速度都提出了非常大的挑戰(zhàn),為此有必要進(jìn)行深入研究,以減少帶寬成本和數(shù)據(jù)處理代價(jià)。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的是提供一種hevc整像素運(yùn)動(dòng)估計(jì)方法及裝置,可以以較低的帶寬成本和數(shù)據(jù)處理代價(jià)完成hevc標(biāo)準(zhǔn)下的整像素運(yùn)動(dòng)估計(jì)。本發(fā)明的目的是通過以下技術(shù)方案實(shí)現(xiàn)的:一種hevc整像素運(yùn)動(dòng)估計(jì)裝置,包括:劃分單元,用于將待處理的最大編碼單元lcu根據(jù)lcu四叉樹劃分深度進(jìn)行劃分處理;粗搜索單元,用于對(duì)劃分后深度為0~2處的2n×2n的像素塊分別進(jìn)行粗搜索,根據(jù)每個(gè)搜索點(diǎn)的率失真代價(jià),確定各深度的像素塊粗搜索的最佳匹配點(diǎn);其中,n=8,16,32;細(xì)搜索單元,用于在細(xì)搜索時(shí),對(duì)劃分后的像素塊以及參考圖像搜索窗口進(jìn)行下采樣處理;對(duì)深度為0~2處的所有像素塊分別進(jìn)行細(xì)搜索,搜索中心點(diǎn)為相應(yīng)深度粗搜索的最佳匹配點(diǎn);對(duì)深度為3處的n×n的像素塊分別進(jìn)行細(xì)搜索,搜索中心點(diǎn)為深度2像素塊粗搜索的最佳匹配點(diǎn);根據(jù)每個(gè)搜索點(diǎn)的率失真代價(jià),得到各個(gè)像素塊細(xì)搜索的最佳匹配點(diǎn),即各個(gè)像素塊的最佳運(yùn)動(dòng)矢量;同時(shí),進(jìn)行最佳模式判決最終得到lcu的最佳劃分模式。所述粗搜索時(shí),在±64范圍內(nèi)以步長為8進(jìn)行全搜索;其中,劃分后待處理的像素塊存儲(chǔ)于currentram中,參考像素存儲(chǔ)于referenceram中;lcu的像素大小為64×64,當(dāng)劃分為深度為1的四個(gè)32×32的像素塊時(shí),分別對(duì)四個(gè)32×32的像素塊進(jìn)行粗搜索;其中,64×64的lcu的深度為0;對(duì)于每一個(gè)32×32的像素塊,其還包含了深度為2的四個(gè)16×16的像素塊,則對(duì)于這五個(gè)像素塊進(jìn)行粗搜索時(shí),采用層次復(fù)用的參考像素調(diào)度策略來進(jìn)行不同搜索點(diǎn)參考像素的調(diào)度,從而獲得每一像素塊在各搜索點(diǎn)的sad值;利用一個(gè)深度為256的sadram來存儲(chǔ)32×32的像素塊的sad值;當(dāng)四個(gè)32×32的像素塊粗搜索完成后,能夠得到深度為0的64×64的lcu在各搜索點(diǎn)的sad值;利用相應(yīng)運(yùn)動(dòng)矢量的編碼比特?cái)?shù)r(mv),及其在各搜索點(diǎn)的sad值,來計(jì)算用每一深度的像素塊在各搜索點(diǎn)的率失真代價(jià):rdcost=sad+λr(mv);上式中,λ拉格朗日乘數(shù)因子;對(duì)于每一深度的像素塊,選擇率失真代價(jià)最小的搜索點(diǎn)作為最佳匹配點(diǎn)。所述采用層次復(fù)用的參考像素調(diào)度策略來進(jìn)行不同搜索點(diǎn)參考像素的調(diào)度,從而獲得每一像素塊在各搜索點(diǎn)的sad值包括:對(duì)于32×32的像素塊,將其分為四個(gè)32×8的像素塊,并將160×160像素的參考圖像搜索窗口劃分為20個(gè)160×8的像素塊,每一160×8的像素塊稱為一個(gè)8行參考像素;取參考圖像搜索窗口第一個(gè)8行參考像素,能夠第一個(gè)32×8像素塊在mvy=-64時(shí)16個(gè)搜索點(diǎn)的sad值,記為sad_0;取參考圖像搜索窗口第二個(gè)8行參考像素,能夠第二個(gè)32×8像素塊的mvy=-64的sad,記為sad_1,同時(shí)也能計(jì)算第一個(gè)32×8像素塊在mvy=-56的sad;取參考圖像搜索窗口第三個(gè)8行參考像素,能計(jì)算第三個(gè)32×8像素塊的mvy=-64的sad,記為sad_2,也能計(jì)算第二個(gè)32×8像素塊在mvy=-56的sad,以及第一個(gè)32×8像素塊在mvy=-48的sad;取參考圖像搜索窗口中第四個(gè)8行參考像素,能計(jì)算第四個(gè)32×8像素塊的mvy=-64的sad,記為sad_3,也能第三個(gè)32×8像素塊在mvy=-56的sad、第二個(gè)32×8像素塊在mvy=-48的sad,以及第一個(gè)32×8像素塊在mvy=-48的sad;合并sad_0、sad_1、sad_2和sad_3,得到32×32的像素塊在mvy=-64的sad值;依次類推,采用上述方式直至計(jì)算完成所有的搜索點(diǎn)的sad值;采用這種策略,每次計(jì)算時(shí)只需取8行參考像素則能完成sad的計(jì)算;其中,采用兩個(gè)8行寄存器緩沖參考圖像中的8行參考像素;第一個(gè)8行寄存器緩沖先緩沖參考圖像搜索窗口的第一個(gè)8行像素,之后全部轉(zhuǎn)移到第二個(gè)8行寄存器;每個(gè)周期第二個(gè)8行寄存器向右移8個(gè)像素,同時(shí)第一個(gè)8行寄存器緩存參考圖像搜索窗口的下一個(gè)8行參考像素;這兩個(gè)8行寄存器在粗搜索與細(xì)搜索時(shí)復(fù)用,且第一個(gè)8行寄存器設(shè)為linebuffer形式;對(duì)于32×32的像素塊中所包含的四個(gè)16×16的像素塊,將每一16×16的像素塊劃分為兩個(gè)16×8的像素塊,再以步長為8在±64范圍內(nèi)進(jìn)行全搜索,且采用8個(gè)深度為16的fifo模塊來緩存每一16×8的像素塊的sad值。所述細(xì)搜索時(shí),對(duì)劃分后的像素塊以及參考圖像搜索窗口進(jìn)行2:1下采樣處理,對(duì)各深度的像素塊在相應(yīng)搜索中心點(diǎn)±7范圍內(nèi)進(jìn)行搜索,搜索步長為1;利用光柵掃描的方式來處理參考像素,達(dá)到完全復(fù)用上下左右搜索點(diǎn)的參考像素的目的;對(duì)參考像素左右方向采用循環(huán)右移方式,上下方向采用向下移位方式;對(duì)于深度為1的32×32的像素塊需要46×46個(gè)參考像素塊,共需要46×32個(gè)8bit寄存器,則經(jīng)過下采樣處理后共需要46×16個(gè)8bit寄存器;對(duì)于深度為2的16×16的像素塊需要30×30參考像素塊,共需要30×16個(gè)8bit寄存器,則經(jīng)過下采樣處理后共需要30×8個(gè)8bit寄存器;同時(shí),復(fù)用粗搜索中的兩個(gè)8行寄存器,進(jìn)行參考像素的緩沖與調(diào)用。一種hevc整像素運(yùn)動(dòng)估計(jì)方法,通過前述的裝置實(shí)現(xiàn),該方法包括:將待處理的最大編碼單元lcu根據(jù)lcu四叉樹劃分深度進(jìn)行劃分處理;對(duì)劃分后深度為0~2處的2n×2n的像素塊分別進(jìn)行粗搜索,根據(jù)每個(gè)搜索點(diǎn)的率失真代價(jià),確定各深度的像素塊粗搜索的最佳匹配點(diǎn);其中,n=8,16,32;在細(xì)搜索時(shí),對(duì)劃分后的像素塊以及參考圖像搜索窗口進(jìn)行下采樣處理;對(duì)深度為0~2處的所有像素塊分別進(jìn)行細(xì)搜索,搜索中心點(diǎn)為相應(yīng)深度粗搜索的最佳匹配點(diǎn);對(duì)深度為3處的n×n的像素塊分別進(jìn)行細(xì)搜索,搜索中心點(diǎn)為深度2像素塊粗搜索的最佳匹配點(diǎn);最終得到各個(gè)像素塊細(xì)搜索的最佳匹配點(diǎn),即各個(gè)像素塊的最佳運(yùn)動(dòng)矢量;同時(shí),進(jìn)行最佳模式判決最終得到lcu的最佳劃分模式。所述粗搜索時(shí),在±64范圍內(nèi)以步長為8進(jìn)行全搜索;其中,劃分后待處理的像素塊存儲(chǔ)于currentram中,參考像素存儲(chǔ)于referenceram中;lcu的像素大小為64×64,當(dāng)劃分為深度為1的四個(gè)32×32的像素塊時(shí),分別對(duì)四個(gè)32×32的像素塊進(jìn)行粗搜索;其中,64×64的lcu的深度為0;對(duì)于每一個(gè)32×32的像素塊,其還包含了深度為2的四個(gè)16×16的像素塊,則對(duì)于這五個(gè)像素塊進(jìn)行粗搜索時(shí),采用層次復(fù)用的參考像素調(diào)度策略來進(jìn)行不同搜索點(diǎn)參考像素的調(diào)度,從而獲得每一像素塊在各搜索點(diǎn)的sad值;利用一個(gè)深度為256的sadram來存儲(chǔ)32×32的像素塊的sad值;當(dāng)四個(gè)32×32的像素塊粗搜索完成后,能夠得到深度為0的64×64的lcu在各搜索點(diǎn)的sad值;利用相應(yīng)運(yùn)動(dòng)矢量的編碼比特?cái)?shù)r(mv),及其在各搜索點(diǎn)的sad值,來計(jì)算用每一深度的像素塊在各搜索點(diǎn)的率失真代價(jià):rdcost=sad+λr(mv);上式中,λ拉格朗日乘數(shù)因子;對(duì)于每一深度的像素塊,選擇率失真代價(jià)最小的搜索點(diǎn)作為最佳匹配點(diǎn)。所述采用層次復(fù)用的參考像素調(diào)度策略來進(jìn)行不同搜索點(diǎn)參考像素的調(diào)度,從而獲得每一像素塊在各搜索點(diǎn)的sad值包括:對(duì)于32×32的像素塊,將其分為四個(gè)32×8的像素塊,并將160×160像素的參考圖像搜索窗口劃分為20個(gè)160×8的像素塊,每一160×8的像素塊稱為一個(gè)8行參考像素;取參考圖像搜索窗口第一個(gè)8行參考像素,能夠第一個(gè)32×8像素塊在mvy=-64時(shí)16個(gè)搜索點(diǎn)的sad值,記為sad_0;取參考圖像搜索窗口第二個(gè)8行參考像素,能夠第二個(gè)32×8像素塊的mvy=-64的sad,記為sad_1,同時(shí)也能計(jì)算第一個(gè)32×8像素塊在mvy=-56的sad;取參考圖像搜索窗口第三個(gè)8行參考像素,能計(jì)算第三個(gè)32×8像素塊的mvy=-64的sad,記為sad_2,也能計(jì)算第二個(gè)32×8像素塊在mvy=-56的sad,以及第一個(gè)32×8像素塊在mvy=-48的sad;取參考圖像搜索窗口中第四個(gè)8行參考像素,能計(jì)算第四個(gè)32×8像素塊的mvy=-64的sad,記為sad_3,也能第三個(gè)32×8像素塊在mvy=-56的sad、第二個(gè)32×8像素塊在mvy=-48的sad,以及第一個(gè)32×8像素塊在mvy=-48的sad;合并sad_0、sad_1、sad_2和sad_3,得到32×32的像素塊在mvy=-64的sad值;依次類推,采用上述方式直至計(jì)算完成所有的搜索點(diǎn)的sad值;采用這種策略,每次計(jì)算時(shí)只需取8行參考像素則能完成sad的計(jì)算;其中,采用兩個(gè)8行寄存器緩沖參考圖像中的8行參考像素;第一個(gè)8行寄存器緩沖先緩沖參考圖像搜索窗口的第一個(gè)8行像素,之后全部轉(zhuǎn)移到第二個(gè)8行寄存器;每個(gè)周期第二個(gè)8行寄存器向右移8個(gè)像素,同時(shí)第一個(gè)8行寄存器緩存參考圖像搜索窗口的下一個(gè)8行參考像素;這兩個(gè)8行寄存器在粗搜索與細(xì)搜索時(shí)復(fù)用,且第一個(gè)8行寄存器設(shè)為linebuffer形式;對(duì)于32×32的像素塊中所包含的四個(gè)16×16的像素塊,將每一16×16的像素塊劃分為兩個(gè)16×8的像素塊,再以步長為8在±64范圍內(nèi)進(jìn)行全搜索,且采用8個(gè)深度為16的fifo模塊來緩存每一16×8的像素塊的sad值。所述細(xì)搜索時(shí),對(duì)劃分后的像素塊以及參考圖像搜索窗口進(jìn)行2:1下采樣處理,對(duì)各深度的像素塊在相應(yīng)搜索中心點(diǎn)±7范圍內(nèi)進(jìn)行搜索,搜索步長為1;利用光柵掃描的方式來處理參考像素,達(dá)到完全復(fù)用上下左右搜索點(diǎn)的參考像素的目的;對(duì)參考像素左右方向采用循環(huán)右移方式,上下方向采用向下移位方式;對(duì)于深度為1的32×32的像素塊需要46×46個(gè)參考像素塊,共需要46×32個(gè)8bit寄存器,則經(jīng)過下采樣處理后共需要46×16個(gè)8bit寄存器;對(duì)于深度為2的16×16的像素塊需要30×30參考像素塊,共需要30×16個(gè)8bit寄存器,則經(jīng)過下采樣處理后共需要30×8個(gè)8bit寄存器;同時(shí),復(fù)用粗搜索中的兩個(gè)8行寄存器,進(jìn)行參考像素的緩沖與調(diào)用。由上述本發(fā)明提供的技術(shù)方案可以看出,每次搜索參考像素都是完全復(fù)用的,可以減少帶寬,同時(shí)加快數(shù)據(jù)處理速度,粗搜索和細(xì)搜索階段sad計(jì)算單元復(fù)用,可以減少資源的利用;此外,該方案以較低的資源利用率,實(shí)時(shí)性的特點(diǎn)完成hevc標(biāo)準(zhǔn)下的整像素運(yùn)動(dòng)估計(jì)。附圖說明為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域的普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他附圖。圖1為本發(fā)明實(shí)施例提供的一種hevc整像素運(yùn)動(dòng)估計(jì)裝置的示意圖;圖2為本發(fā)明實(shí)施例提供的粗搜索時(shí)層次復(fù)用的參考像素調(diào)度策略的示意圖;圖3為本發(fā)明實(shí)施例提供的粗搜索的實(shí)現(xiàn)框架示意圖;圖4為本發(fā)明實(shí)施例提供的對(duì)深度為0的像素塊的細(xì)搜索時(shí)下采樣及分塊示意圖;圖5為本發(fā)明實(shí)施例提供的細(xì)搜索對(duì)參考像素進(jìn)行移位操作示意圖;圖6為本發(fā)明實(shí)施例提供的整個(gè)裝置的工作流程圖;圖7為本發(fā)明實(shí)施例提供的整個(gè)裝置的工作示意圖;圖8為本發(fā)明實(shí)施例提供的裝置的實(shí)現(xiàn)框架示意圖。具體實(shí)施方式下面結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明的保護(hù)范圍。本發(fā)明實(shí)施例提供一種hevc整像素運(yùn)動(dòng)估計(jì)裝置,如圖1所示,該裝置主要包括:劃分單元,用于將待處理的最大編碼單元(lcu)根據(jù)lcu四叉樹劃分深度進(jìn)行劃分處理;粗搜索單元,用于對(duì)劃分后深度為0~2處的2n×2n的像素塊分別進(jìn)行粗搜索,根據(jù)每個(gè)搜索點(diǎn)的率失真代價(jià),確定各深度的像素塊粗搜索的最佳匹配點(diǎn);其中,n=8,16,32;細(xì)搜索單元,用于在細(xì)搜索時(shí),對(duì)劃分后的像素塊以及參考圖像搜索窗口進(jìn)行下采樣處理;對(duì)深度為0~2處的所有像素塊分別進(jìn)行細(xì)搜索,搜索中心點(diǎn)為相應(yīng)深度粗搜索的最佳匹配點(diǎn);對(duì)深度為3處的n×n的像素塊分別進(jìn)行細(xì)搜索,搜索中心點(diǎn)為深度2像素塊粗搜索的最佳匹配點(diǎn);根據(jù)每個(gè)搜索點(diǎn)的率失真代價(jià),得到各個(gè)像素塊細(xì)搜索的最佳匹配點(diǎn),即各個(gè)像素塊的最佳運(yùn)動(dòng)矢量;同時(shí),進(jìn)行最佳模式判決最終得到lcu的最佳劃分模式。本領(lǐng)域技術(shù)人員可以理解,lcu劃分后的像素塊即為cu,cu進(jìn)一步劃分后的像素塊即為pu,文中為避免cu與pu的混用,因而統(tǒng)稱像素塊。本領(lǐng)域技術(shù)人員可以理解,上述劃分單元、粗搜索單元、細(xì)搜索單元可以集成在處理器中。所屬領(lǐng)域的技術(shù)人員還可以清楚地了解到,為描述的方便和簡潔,僅以上述各功能模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能;此外,該裝置還包括若干寄存器以及ram,以配合上述劃分單元、粗搜索單元、細(xì)搜索單元來實(shí)現(xiàn)hevc整像素運(yùn)動(dòng)估計(jì),具體的將在下文介紹裝置工作過程時(shí)進(jìn)行詳細(xì)的說明。一、像素塊劃分。本發(fā)明實(shí)施例中,首先要獲取待處理的lcu,其像素大小為64×64;然后,按照lcu四叉樹劃分深度進(jìn)行劃分處理,如表1所示,為深度與像素塊尺寸的對(duì)應(yīng)關(guān)系表。depthsizedepth=064×64,64×32,32×64depth=132×32,32×16,16×32depth=216×16,16×8,8×16depth=38×8,8×4,4×8表1深度與像素塊尺寸的對(duì)應(yīng)關(guān)系在做整個(gè)運(yùn)動(dòng)估計(jì)時(shí),預(yù)先并不知道lcu最終的劃分情況,所以要遍歷所有可能的lcu的劃分方式,最終選擇最好的劃分方式。hevc中支持了對(duì)稱與非對(duì)稱的劃分方式,考慮硬件資源,本發(fā)明實(shí)施例的方案采用了對(duì)稱劃分方式;劃分為2n×2n、n×n、2n×n、n×2n。如果將lcu劃分為四個(gè)大小為32×32像素塊,則參考圖像搜索窗口大小為160×160像素。本發(fā)明實(shí)施例中,可以將劃分后待處理的像素塊存儲(chǔ)于currentram中,參考像素存儲(chǔ)于referenceram中;可選的,這兩個(gè)ram的位寬均可為32×8bit。二、粗搜索。本發(fā)明實(shí)施例中,粗搜索時(shí),在±64范圍內(nèi)以步長為8進(jìn)行全搜索;并只針對(duì)0~2處的2n×2n的像素塊,即64×64,32×32,16×16的像素塊。如果將lcu劃分為四個(gè)大小為32×32像素塊,則需要分別對(duì)四個(gè)32×32的像素塊進(jìn)行粗搜索;同理,如果采用其他表1所示的其他劃分方式,也需要分別對(duì)劃分后的像素塊進(jìn)行粗搜索。由于,對(duì)于每一個(gè)32×32的像素塊,其還包含了深度為2的四個(gè)16×16的像素塊,則對(duì)于這五個(gè)像素塊進(jìn)行粗搜索時(shí),采用層次復(fù)用的參考像素調(diào)度策略來進(jìn)行不同搜索點(diǎn)參考像素的調(diào)度,可以讓其參考像素完全復(fù)用,從而獲得每一像素塊在各搜索點(diǎn)的sad值。另外,為了方便進(jìn)行l(wèi)cu的粗搜索,利用一個(gè)深度為256的sadram來存儲(chǔ)32×32的像素塊的sad值;當(dāng)四個(gè)32×32的像素塊粗搜索完成后,就能夠得到深度為0的64×64的lcu在各搜索點(diǎn)的sad值。本發(fā)明實(shí)施例中,將率失真代價(jià)(rate-distortioncost,rdcost)作為確定最佳匹配點(diǎn)的依據(jù),因此,可以利用相應(yīng)運(yùn)動(dòng)矢量的編碼比特?cái)?shù)r(mv),其在各搜索點(diǎn)的sad值,來計(jì)算用每一深度的像素塊在各搜索點(diǎn)的率失真代價(jià):rdcost=sad+λr(mv);上式中,λ拉格朗日乘數(shù)因子;對(duì)于每一深度的像素塊,選擇率失真代價(jià)最小的搜索點(diǎn)作為最佳匹配點(diǎn)。下面詳細(xì)介紹層次復(fù)用的參考像素調(diào)度策略原理及其實(shí)現(xiàn)方式。在之前的步驟中已經(jīng)提到了lcu有多種劃分方式,以劃分為四個(gè)大小為32×32像素塊為例,在以32×32cu為一個(gè)sad處理陣列時(shí),搜索步長為8,對(duì)參考圖像來說,相鄰搜索點(diǎn)之間會(huì)有很多參考像素是相同的,如左右兩點(diǎn)之間有24×32像素塊是相同的,上下兩點(diǎn)之間有32×24像素塊是相同的。為減少處理的周期數(shù),需考慮上下左右搜索點(diǎn)參考像素的完全復(fù)用,因而使用層次復(fù)用的參考像素調(diào)度策略,可以讓其參考像素完全復(fù)用;具體的調(diào)度圖如圖2所示,具體如下:如圖2(a)所示,對(duì)于32×32的像素塊,將其分為四個(gè)32×8的像素塊;并將160×160像素的參考圖像搜索窗口劃分為20個(gè)160×8的像素塊,每一160×8的像素塊稱為一個(gè)8行參考像素;1)取圖2(a)右邊中參考圖像搜索窗口第一個(gè)8行參考像素,可以計(jì)算圖2(a)左中第一個(gè)32×8像素塊在mvy=-64時(shí)16個(gè)搜索點(diǎn)的sad值(如圖2(b)所示),記為sad_0,但是無法計(jì)算圖2(a)左中第2、3、4的32×8像素塊在mvy=-64的sad值。2)取圖2(a)右中參考圖像搜索窗口第二個(gè)8行參考像素,可以計(jì)算圖2(a)左中第二個(gè)32×8像素塊的mvy=-64的sad,記為sad_1,同時(shí)也可以計(jì)算圖2(a)左中第一個(gè)32×8像素塊在mvy=-56的sad(如圖2(b)所示)。3)取圖2(a)右中參考圖像搜索窗口第三個(gè)8行參考像素,可以計(jì)算圖2(a)左中第三個(gè)32×8像素塊的mvy=-64的sad,記為sad_2。也可以計(jì)算圖2(a)左中第二個(gè)32×8像素塊在mvy=-56的sad,還可以計(jì)算圖2(a)左中第一個(gè)32×8像素塊在mvy=-48的sad(如圖2(b)所示)。4)取圖2(a)右中參考圖像搜索窗口第四個(gè)8行參考像素時(shí),則可以計(jì)算圖2(a)左中第四個(gè)32×8像素塊的mvy=-64的sad,記為sad_3。也可以計(jì)算圖2(a)左中第三個(gè)32×8像素塊在mvy=-56的sad,計(jì)算圖2(a)左中第二個(gè)32×8像素塊在mvy=-48的sad,計(jì)算圖2(a)左中第一個(gè)32×8像素塊在mvy=-48的sad(如圖2(b)所示)。5)合并sad_0、sad_1、sad_2和sad_3,可得到32×32的像素塊在mvy=-64的sad值。依次類推,采用上述方式直至計(jì)算完成所有的搜索點(diǎn)的sad值。采用這種策略,每次計(jì)算時(shí)只需取8行參考像素則能完成sad的計(jì)算。同理,對(duì)于32×32的像素塊中所包含的四個(gè)16×16的像素塊,將每一16×16的像素塊劃分為兩個(gè)16×8的像素塊,再以步長為8在±64范圍內(nèi)進(jìn)行全搜索,但由于同一搜索點(diǎn)的sad是分層得到的,因此,需要緩存每一個(gè)16×8的像素塊的sad值,本發(fā)明實(shí)施例中,采用了8個(gè)深度為16的fifo模塊來緩存每一16×8的像素塊的sad值。另一方面,本發(fā)明實(shí)施例中,為了配合層次復(fù)用的參考像素調(diào)度策略,采用了兩個(gè)8行寄存器緩沖參考圖像中的8行參考像素;第一個(gè)8行寄存器緩沖先緩沖參考圖像搜索窗口的第一個(gè)8行像素,之后全部轉(zhuǎn)移到第二個(gè)8行寄存器;每個(gè)周期第二個(gè)8行寄存器向右移8個(gè)像素,同時(shí)第一個(gè)8行寄存器緩存參考圖像搜索窗口的下一個(gè)8行參考像素;同時(shí),這兩個(gè)8行寄存器在粗搜索與細(xì)搜索時(shí)復(fù)用,每行是160個(gè)像素。粗搜索的實(shí)現(xiàn)框架如圖3所示,圖3中右上方的第一個(gè)refregisterarray即為第一個(gè)8行寄存器,其從referenceram中讀取參考圖像搜索窗口的第一個(gè)8行像素,然后,轉(zhuǎn)移到其下方的refregisterarray(即第二個(gè)8行寄存器),第二個(gè)8行寄存器向右移15次就可計(jì)算出同一水平位置16個(gè)搜索點(diǎn)的sad值。圖3中中間靠左部分的curpuregisters存儲(chǔ)了待進(jìn)行粗搜索的像素塊,其與currentram連接來讀取相應(yīng)數(shù)據(jù)。根據(jù)圖2的層次復(fù)用的參考像素調(diào)度策略,將第二個(gè)8行參考像素寄存器最右端的32×8個(gè)像素送入4個(gè)sad計(jì)算單元(即圖3虛線框所示部分),最后,配合圖3左下方的8個(gè)fifo模塊的數(shù)據(jù)從而可以計(jì)算得到各像素塊在每個(gè)搜索點(diǎn)的率失真代價(jià),最后,通過簡單的數(shù)值比較方式就可以得到粗搜索的最優(yōu)mv,也即粗搜索的最佳匹配點(diǎn)。三、細(xì)搜索。細(xì)搜索階段是針對(duì)表1中所有深度的像素塊(2n×2n,n×2n,2n×n)進(jìn)行的,對(duì)不同深度的像素塊以相應(yīng)深度像素塊在粗搜索得到的最佳匹配點(diǎn)為搜索中心點(diǎn),在±7范圍內(nèi)以步長為1進(jìn)行搜索,通過對(duì)相鄰搜索點(diǎn)的參考像素進(jìn)行移位操作,讓其在調(diào)度過程中參考像素完全復(fù)用。本發(fā)明實(shí)施例中,細(xì)搜索之前,要對(duì)劃分后的像素塊以及參考圖像搜索窗口進(jìn)行2:1下采樣處理。示例性的,如圖4所示,對(duì)于lcu,其像素大小為64×64,進(jìn)行2:1下采樣處理為64×32的像素塊,通常的sad計(jì)算單元一次只能計(jì)算32×32像素塊的sad值,所以可以將64×32的像素塊分為兩個(gè)32×32像素塊來細(xì)搜索。粗搜索時(shí),由于同一個(gè)lcu中,劃分后的待處理的像素塊的搜索中心點(diǎn)(或起始點(diǎn))是相同的,因此,sad計(jì)算單元可以合并,通過合并4個(gè)32×32像素塊的sad可以得到64×64像素塊粗搜索的最佳mv,利用該最佳mv指向位置作為深度為0pu的細(xì)搜索中心點(diǎn)。但此時(shí)依然以深度為0的粗搜索的最佳匹配點(diǎn)作為搜索中心點(diǎn)。由于細(xì)搜索用全搜索算法,因而利用光柵掃描的方式來處理參考像素,達(dá)到完全復(fù)用上下左右搜索點(diǎn)的參考像素的目的;對(duì)參考像素左右方向采用循環(huán)右移方式,上下方向采用向下移位方式。本發(fā)明實(shí)施例中,對(duì)參考像素進(jìn)行移位操作的過程如圖5所示,為了便于圖像的繪制,而采用了8×8大小的像素塊為例進(jìn)行介紹,圖中帶有灰度的像素塊表示要送入sad計(jì)算單元的參考像素的數(shù)據(jù)。其中,(a)通過循環(huán)右移可以得到同一水平方向相鄰搜索點(diǎn)的參考像素,如(b),處理完同一水平方向搜索點(diǎn)后回到原來位置(c),然后再向下移位得到垂直方向相鄰搜索點(diǎn)參考像素(d)。本領(lǐng)域技術(shù)人員可以理解,細(xì)搜索時(shí)主要是參考像素的獲取,后續(xù)計(jì)算sad值也可以通過常規(guī)方式實(shí)現(xiàn)。在具體實(shí)現(xiàn)時(shí),細(xì)搜索需要配合若干寄存器進(jìn)行參考像素塊的存儲(chǔ)、調(diào)用。對(duì)于深度為1的32×32的像素塊需要46×46(7+32+7)個(gè)參考像素塊,共需要46×32個(gè)8bit寄存器,則經(jīng)過下采樣處理后共需要46×16個(gè)8bit寄存器;對(duì)于深度為2的16×16的像素塊需要30×30(7+16+7)參考像素塊,共需要30×16個(gè)8bit寄存器,則經(jīng)過下采樣處理后共需要30×8個(gè)8bit寄存器;同時(shí),復(fù)用粗搜索中的兩個(gè)8行寄存器,進(jìn)行參考像素的緩沖與調(diào)用。此外,由于參考像素都存儲(chǔ)于referenceram,同一行參考像素在一個(gè)周期就可得到。同理,最終可以得到各個(gè)像素塊細(xì)搜索的最佳匹配點(diǎn),即各個(gè)像素塊的最佳運(yùn)動(dòng)矢量;同時(shí),根據(jù)相應(yīng)像素塊最佳運(yùn)動(dòng)矢量,通過最佳模式判決可得到lcu的最佳劃分模式。結(jié)合上文的內(nèi)容,整個(gè)裝置的工作流程圖、工作示意圖,及實(shí)現(xiàn)框架分別如圖6~8所示。圖6為整個(gè)裝置的工作流程圖。圖6的左側(cè)部分為像素塊劃分及粗搜索過程,右側(cè)部分為細(xì)搜索過程,根據(jù)像素塊的深度分為兩套處理流程,細(xì)搜索的原理一樣,區(qū)別在于由于深度3的像素塊沒有進(jìn)行粗搜索,因而,需要使用深度2的像素塊粗搜索的最佳匹配點(diǎn)作為搜索中心點(diǎn),而深度0~2的像素塊則直接使用其粗搜索的最佳匹配點(diǎn)作為搜索中心點(diǎn)。圖7整個(gè)裝置的工作示意圖,主要涉及粗搜索與細(xì)搜索過程,及這兩個(gè)過程所涉及的搜索范圍等參數(shù)。圖8為裝置的實(shí)現(xiàn)框架。圖8中,所涉及的ram、寄存器等器件在前文中也提到過了,這里主要通過這些器件來展示工作過程;其中的mvcost單元提供率失真代價(jià)計(jì)算時(shí)所需要的運(yùn)動(dòng)矢量的編碼比特?cái)?shù)r(mv),rdcost單元是用來計(jì)算率失真代價(jià)(還接收?qǐng)D3中8個(gè)fifo模塊的數(shù)據(jù),圖8中未示出),comparator單元是用來進(jìn)行計(jì)算率失真代價(jià)的比較,從而獲得最優(yōu)運(yùn)動(dòng)矢量(bestmv)。本領(lǐng)域技術(shù)人員可以理解,rdcost單元、comparator單元的主要負(fù)責(zé)粗搜索、細(xì)搜索時(shí)率失真代價(jià)的計(jì)算與比較,也就是說,在實(shí)際工作中,可以將rdcost單元、comparator單元獨(dú)立設(shè)置,前文提到的粗搜索單元、細(xì)搜索單元負(fù)責(zé)搜索過程,然后配合rdcost單元、comparator單元進(jìn)行后續(xù)工作,使得rdcost單元、comparator單元在粗搜索、細(xì)搜索時(shí)復(fù)用。本領(lǐng)域技術(shù)人員可以理解,粗搜索時(shí),由于同一個(gè)lcu中,劃分后的待處理的像素塊的搜索中心點(diǎn)(或起始點(diǎn))是相同的,因此,sad計(jì)算單元可以合并,通過合并4個(gè)32×32像素塊的sad可以得到64×64像素塊的sad;所以在粗搜索時(shí),根據(jù)需要的數(shù)據(jù)存入currentram中。同理,在細(xì)搜索階段,由于深度為0的像素塊是分成兩塊處理的,所以每次處理時(shí),也是根據(jù)需要的數(shù)據(jù)存入currentram中。另一方面,還將本發(fā)明實(shí)施例上述方案與hm中算法在編碼效率上的差異進(jìn)行比較,比較結(jié)果如表2所示。表2比較結(jié)果表2中的配置模式:lowdelay-p、lowdelay、randomaccess是制定hevc標(biāo)準(zhǔn)的官方給的參考軟件hm中的三種軟件運(yùn)行參數(shù)的配置方式。運(yùn)動(dòng)估計(jì)中,這三種配置模式主要定義的參考幀的選取方式。lowdelay-p配置中,對(duì)當(dāng)前幀的參考幀選取一般是單向預(yù)測(cè)模式。lowdelay和randomaccess配置中,對(duì)當(dāng)前幀的參考幀選取一般是雙向預(yù)測(cè)模式。使用本發(fā)明提供的方法和hm中的運(yùn)動(dòng)估計(jì)算法進(jìn)行比較,比較結(jié)果用bd-rate和bd-pnsr這兩個(gè)參數(shù)來衡量。bd-rate表示兩種算法的最后編碼比特?cái)?shù)的區(qū)別,bd-pnsr表示重建圖像和原圖像的差異。pnsr表示峰值信噪比。根據(jù)表2可知,本發(fā)明采用的算法在randomaccess的配置下的bd-rate增多為5.71%,結(jié)合硬件設(shè)計(jì)的資源大小和數(shù)據(jù)組織的難易程度,5.71%在硬件上是可以接受的。本發(fā)明實(shí)施例上述方案中,每次搜索參考像素都是完全復(fù)用的,可以減少帶寬,同時(shí)加快數(shù)據(jù)處理速度,粗搜索和細(xì)搜索階段sad計(jì)算單元復(fù)用,可以減少資源的利用。該匹配方法以較低的資源利用率,實(shí)時(shí)性的特點(diǎn)完成hevc標(biāo)準(zhǔn)下的整像素運(yùn)動(dòng)估計(jì)。另一方面,本發(fā)明實(shí)施例還提供一種hevc整像素運(yùn)動(dòng)估計(jì)方法,該方法基于前述實(shí)施例所述的裝置實(shí)現(xiàn),該方法主要包括:將待處理的最大編碼單元lcu根據(jù)lcu四叉樹劃分深度進(jìn)行劃分處理;對(duì)劃分后深度為0~2處的2n×2n的像素塊分別進(jìn)行粗搜索,根據(jù)每個(gè)搜索點(diǎn)的率失真代價(jià),確定各深度的像素塊粗搜索的最佳匹配點(diǎn);其中,n=8,16,32;在細(xì)搜索時(shí),對(duì)劃分后的像素塊以及參考圖像搜索窗口進(jìn)行下采樣處理;對(duì)深度為0~2處的所有像素塊分別進(jìn)行細(xì)搜索,搜索中心點(diǎn)為相應(yīng)深度粗搜索的最佳匹配點(diǎn);對(duì)深度為3處的n×n的像素塊分別進(jìn)行細(xì)搜索,搜索中心點(diǎn)為深度2像素塊粗搜索的最佳匹配點(diǎn);最終得到各個(gè)像素塊細(xì)搜索的最佳匹配點(diǎn),即各個(gè)像素塊的最佳運(yùn)動(dòng)矢量;同時(shí),進(jìn)行最佳模式判決最終得到lcu的最佳劃分模式。進(jìn)一步的,所述粗搜索時(shí),在±64范圍內(nèi)以步長為8進(jìn)行全搜索;其中,劃分后待處理的像素塊存儲(chǔ)于currentram中,參考像素存儲(chǔ)于referenceram中;lcu的像素大小為64×64,當(dāng)劃分為深度為1的四個(gè)32×32的像素塊時(shí),分別對(duì)四個(gè)32×32的像素塊進(jìn)行粗搜索;其中,64×64的lcu的深度為0;對(duì)于每一個(gè)32×32的像素塊,其還包含了深度為2的四個(gè)16×16的像素塊,則對(duì)于這五個(gè)像素塊進(jìn)行粗搜索時(shí),采用層次復(fù)用的參考像素調(diào)度策略來進(jìn)行不同搜索點(diǎn)參考像素的調(diào)度,從而獲得每一像素塊在各搜索點(diǎn)的sad值;利用一個(gè)深度為256的sadram來存儲(chǔ)32×32的像素塊的sad值;當(dāng)四個(gè)32×32的像素塊粗搜索完成后,能夠得到深度為0的64×64的lcu在各搜索點(diǎn)的sad值;利用相應(yīng)運(yùn)動(dòng)矢量的編碼比特?cái)?shù)r(mv),及其在各搜索點(diǎn)的sad值,來計(jì)算用每一深度的像素塊在各搜索點(diǎn)的率失真代價(jià):rdcost=sad+λr(mv);上式中,λ拉格朗日乘數(shù)因子;對(duì)于每一深度的像素塊,選擇率失真代價(jià)最小的搜索點(diǎn)作為最佳匹配點(diǎn)。進(jìn)一步的,所述采用層次復(fù)用的參考像素調(diào)度策略來進(jìn)行不同搜索點(diǎn)參考像素的調(diào)度,從而獲得每一像素塊在各搜索點(diǎn)的sad值包括:對(duì)于32×32的像素塊,將其分為四個(gè)32×8的像素塊,并將160×160像素的參考圖像搜索窗口劃分為20個(gè)160×8的像素塊,每一160×8的像素塊稱為一個(gè)8行參考像素;取參考圖像搜索窗口第一個(gè)8行參考像素,能夠第一個(gè)32×8像素塊在mvy=-64時(shí)16個(gè)搜索點(diǎn)的sad值,記為sad_0;取參考圖像搜索窗口第二個(gè)8行參考像素,能夠第二個(gè)32×8像素塊的mvy=-64的sad,記為sad_1,同時(shí)也能計(jì)算第一個(gè)32×8像素塊在mvy=-56的sad;取參考圖像搜索窗口第三個(gè)8行參考像素,能計(jì)算第三個(gè)32×8像素塊的mvy=-64的sad,記為sad_2,也能計(jì)算第二個(gè)32×8像素塊在mvy=-56的sad,以及第一個(gè)32×8像素塊在mvy=-48的sad;取參考圖像搜索窗口中第四個(gè)8行參考像素,能計(jì)算第四個(gè)32×8像素塊的mvy=-64的sad,記為sad_3,也能第三個(gè)32×8像素塊在mvy=-56的sad、第二個(gè)32×8像素塊在mvy=-48的sad,以及第一個(gè)32×8像素塊在mvy=-48的sad;合并sad_0、sad_1、sad_2和sad_3,得到32×32的像素塊在mvy=-64的sad值;依次類推,采用上述方式直至計(jì)算完成所有的搜索點(diǎn)的sad值;采用這種策略,每次計(jì)算時(shí)只需取8行參考像素則能完成sad的計(jì)算;其中,采用兩個(gè)8行寄存器緩沖參考圖像中的8行參考像素;第一個(gè)8行寄存器緩沖先緩沖參考圖像搜索窗口的第一個(gè)8行像素,之后全部轉(zhuǎn)移到第二個(gè)8行寄存器;每個(gè)周期第二個(gè)8行寄存器向右移8個(gè)像素,同時(shí)第一個(gè)8行寄存器緩存參考圖像搜索窗口的下一個(gè)8行參考像素;這兩個(gè)8行寄存器在粗搜索與細(xì)搜索時(shí)復(fù)用,且第一個(gè)8行寄存器設(shè)為linebuffer形式;對(duì)于32×32的像素塊中所包含的四個(gè)16×16的像素塊,將每一16×16的像素塊劃分為兩個(gè)16×8的像素塊,再以步長為8在±64范圍內(nèi)進(jìn)行全搜索,且采用8個(gè)深度為16的fifo模塊來緩存每一16×8的像素塊的sad值。進(jìn)一步的,所述細(xì)搜索時(shí),對(duì)劃分后的像素塊以及參考圖像搜索窗口進(jìn)行2:1下采樣處理,對(duì)各深度的像素塊在相應(yīng)搜索中心點(diǎn)±7范圍內(nèi)進(jìn)行搜索,搜索步長為1;利用光柵掃描的方式來處理參考像素,達(dá)到完全復(fù)用上下左右搜索點(diǎn)的參考像素的目的;對(duì)參考像素左右方向采用循環(huán)右移方式,上下方向采用向下移位方式;對(duì)于深度為1的32×32的像素塊需要46×46個(gè)參考像素塊,共需要46×32個(gè)8bit寄存器,則經(jīng)過下采樣處理后共需要46×16個(gè)8bit寄存器;對(duì)于深度為2的16×16的像素塊需要30×30參考像素塊,共需要30×16個(gè)8bit寄存器,則經(jīng)過下采樣處理后共需要30×8個(gè)8bit寄存器;同時(shí),復(fù)用粗搜索中的兩個(gè)8行寄存器,進(jìn)行參考像素的緩沖與調(diào)用。需要說明的是,上述方法所設(shè)計(jì)的各個(gè)器件在前面的實(shí)施例中已經(jīng)有詳細(xì)描述,故在這里不再贅述。以上所述,僅為本發(fā)明較佳的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本
技術(shù)領(lǐng)域:
的技術(shù)人員在本發(fā)明披露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求書的保護(hù)范圍為準(zhǔn)。當(dāng)前第1頁12