專利名稱:一種基于分層運(yùn)動(dòng)估計(jì)的搜索方法及其實(shí)現(xiàn)系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于多媒體的視頻編碼器硬件實(shí)現(xiàn)領(lǐng)域,具體地講,是ー種適用于FPGA與ASIC實(shí)現(xiàn)、基于分層運(yùn)動(dòng)估計(jì)的搜索方法及其實(shí)現(xiàn)系統(tǒng)。
背景技術(shù):
在視頻編碼器中,采用運(yùn)動(dòng)補(bǔ)償?shù)膸g預(yù)測(cè)編碼是視頻壓縮的主要技術(shù),而搜索窗大小、捜索策略、匹配準(zhǔn)則直接影響編碼器的性能。其中整像元運(yùn)動(dòng)估計(jì)是視頻編碼器中最復(fù)雜的模塊之一,為了滿足高清視頻編碼的實(shí)時(shí)性,可通過硬件加速來實(shí)現(xiàn)編碼。視頻編碼器的硬件實(shí)現(xiàn)需要能在復(fù)雜度與性能間取得較好的平衡。基于塊匹配的捜索方法主要有全捜索,快速捜索,分級(jí)搜索等方法。其中全搜索是在搜索區(qū)內(nèi)逐點(diǎn)搜索,通過準(zhǔn)則函數(shù)例如SAD (Sum of Absolute Difference)值,即初始·值和預(yù)測(cè)值的絕對(duì)誤差和,通過對(duì)每一個(gè)候選運(yùn)動(dòng)向量進(jìn)行計(jì)算而選取出SAD值最小的最佳匹配塊。當(dāng)圖像分辨率較高,運(yùn)動(dòng)比較復(fù)雜情況下,需要在較大搜索窗內(nèi)進(jìn)行捜索,運(yùn)算量是相當(dāng)大的,為了實(shí)現(xiàn)實(shí)時(shí)運(yùn)算,必須采取并行處理。為了減少搜索次數(shù),又提出了多種快速搜索方法,如ニ維對(duì)數(shù)搜索方法、三步搜索法、共軛方向搜索法、正交搜索法、菱形搜索法等??焖偎阉鞣ǖ墓餐幵谟诎咽箿?zhǔn)則函數(shù)(SAD)趨于極小的方向視為最小失真方向,并假定準(zhǔn)則函數(shù)在偏離最小失真方向時(shí)是單調(diào)遞增的,即認(rèn)為它在整個(gè)搜索區(qū)內(nèi)是運(yùn)動(dòng)向量的單極點(diǎn)函數(shù),有唯一極小值??焖賿人鞣椒軠p少大部分運(yùn)算量,能顯著提升捜索速度,但是率失真性能會(huì)有一定的下降,不利于硬件實(shí)現(xiàn),主要是因?yàn)榭焖賿人鞣椒ǖ臄?shù)據(jù)流控制不規(guī)整,不能有效利用片上的存儲(chǔ)數(shù)據(jù)。為此提出的分級(jí)搜索方法在減少運(yùn)算量的同時(shí),可取得接近全搜索的精度和性能,得到真實(shí)的運(yùn)動(dòng)位移矢量。在分級(jí)搜索方法中,先通過對(duì)原始圖像低通濾波和亞取樣得到該圖像序列的低分辨率表示,再對(duì)所得的低分辨率圖像進(jìn)行全捜索。由于分辨率降低,搜索次數(shù)成倍減少,同時(shí)單次SAD計(jì)算需要計(jì)算資源也成倍減小,由此全搜索得到一個(gè)最優(yōu)運(yùn)動(dòng)矢量。以該運(yùn)動(dòng)矢量作為在原始圖像中捜索的起始點(diǎn),開始進(jìn)行精細(xì)搜索,此步搜索窗大小可相對(duì)減小,捜索次數(shù)相應(yīng)減少,最終通過細(xì)搜索得到運(yùn)動(dòng)位移矢量的估計(jì)值。采用分級(jí)搜索的優(yōu)點(diǎn)在于,捜索次數(shù)介于全搜索與快速捜索之間,且在各層搜索時(shí)可看成是全搜索,這樣具有較規(guī)整的數(shù)據(jù)流和控制流,利于硬件實(shí)現(xiàn)。已有的基于分層運(yùn)動(dòng)估計(jì)的硬件通過兩次降采樣進(jìn)行捜索,提高了捜索速度,但連續(xù)兩次4:1降采樣后得到的降采樣層,由原始圖像層的16x16塊變?yōu)?x4塊,這樣導(dǎo)致塊匹配時(shí)由于特征不夠明顯而容易找到偽最佳匹配塊,影響了搜索性能。
發(fā)明內(nèi)容
現(xiàn)有基于硬件實(shí)現(xiàn)的視頻編碼器無論采用全捜索方法還是分層搜索方法,均通過一定程度上犧牲硬件面積來換取速度,若捜索范圍增加,則硬件消耗巨大,不利于FPGA或ASIC電路。本發(fā)的目的在于提出ー種具有接近全捜索性能的分層搜索方法及相應(yīng)的硬件實(shí)現(xiàn)系統(tǒng),使其具有較高的捜索速度和較好的編碼性能,滿足高清編碼器實(shí)時(shí)編碼的要求。為實(shí)現(xiàn)上述目的,本發(fā)明采取如技術(shù)下方案本發(fā)明所述的基于分層運(yùn)動(dòng)估計(jì)的搜索方法,具體為將當(dāng)前幀和參考幀按照比例進(jìn)行一次降采樣,降采樣層進(jìn)行運(yùn)動(dòng)估計(jì)時(shí),設(shè)置候選運(yùn)動(dòng)向量的步長(zhǎng)為降采樣后的2個(gè)整像素単位向量。進(jìn)ー步的,所述降采樣得到4路降采樣圖像,多PE陣列在每一路降采樣圖像中進(jìn)行4路并行捜索,同時(shí)另3路降采樣圖像并行搜索。進(jìn)ー步的,所述方法中片上亮度像素緩存采用分類像素存儲(chǔ)來實(shí)現(xiàn)降采樣的搜索,即按降采樣得到4種像素類型交錯(cuò)存儲(chǔ),同時(shí)分奇偶行與奇偶宏塊列分開存儲(chǔ),共16種像素類型交錯(cuò)存儲(chǔ)。進(jìn)ー步的,所述PE陣列從亮度參考緩存讀取數(shù)據(jù)復(fù)用,一次讀取兩種像素類型的·16字節(jié)寬數(shù)據(jù)用于4路PE陣列的數(shù)據(jù)更新。本發(fā)明中分層搜索的思想是先將當(dāng)前幀和參考幀按照比例降采樣,LI層是LO層4:1降采樣得到的圖像,LO層是原圖像層。搜索時(shí)先在第LI層上進(jìn)行,候選MV捜索步長(zhǎng)為2,計(jì)算SAD時(shí)候,用了 4:1降采樣精度,即64個(gè)像素點(diǎn)參與了 SAD值計(jì)算。本發(fā)明提出的方案僅通過一次4:1降采樣,由原始圖像層的16x16塊變?yōu)?x8塊,塊匹配的特征較明顯;同時(shí)設(shè)置降采樣層的捜索步長(zhǎng)為2來降低計(jì)算量,滿足視頻編碼器的實(shí)時(shí)性。本發(fā)明中,降采樣后得到4路降采樣圖像,通過對(duì)四個(gè)區(qū)域的降采樣圖像采取不同類型的像素點(diǎn)來實(shí)現(xiàn)4個(gè)區(qū)域的并行搜索。同時(shí)在LI層對(duì)每ー個(gè)區(qū)域搜索時(shí),進(jìn)ー步采用了 4路并行捜索,提高搜索速度。采用基于率失真優(yōu)化的支持可變大小塊運(yùn)動(dòng)估計(jì),塊匹配代價(jià)函數(shù)取當(dāng)前塊與參考?jí)K的SAD值與運(yùn)動(dòng)矢量的編碼比特消耗的加權(quán)和。在LI層塊大小為8x8,通過求取最小的匹配代價(jià)函數(shù)便可以得到最優(yōu)的運(yùn)動(dòng)矢量。在LO層搜索時(shí),將以LI層最優(yōu)運(yùn)動(dòng)矢量和視頻編碼器的運(yùn)動(dòng)預(yù)測(cè)模塊得到的運(yùn)動(dòng)矢量為運(yùn)動(dòng)捜索起始點(diǎn),在一個(gè)較小的捜索窗內(nèi)進(jìn)行全捜索,便可得到可變大小塊的塊匹配代價(jià)函數(shù)值,各種模式的匹配代價(jià)將用于編碼器的亞像元運(yùn)動(dòng)估計(jì)與預(yù)測(cè)模式的選擇。本發(fā)明所述的ー種基于分層運(yùn)動(dòng)估計(jì)的搜索方法的實(shí)現(xiàn)系統(tǒng),包括亮度參考像素緩存模塊采用了 Zigzag掃描順序編碼以及片上數(shù)據(jù)交錯(cuò)存儲(chǔ)的緩存方式即按降采樣得到4種像素類型交錯(cuò)存儲(chǔ),同時(shí)分奇偶行與奇偶宏塊列分開存儲(chǔ),共16種像素類型交錯(cuò)存儲(chǔ);分層復(fù)用的PE陣列模塊降采樣得到4路降采樣圖像,多PE陣列在每一路降采樣圖像中進(jìn)行4路并行捜索,同時(shí)另3路降采樣圖像并行搜索;所述PE陣列能在每ー個(gè)時(shí)鐘從亮度參考像素緩存模塊得到有效的數(shù)據(jù)并進(jìn)行SAD值計(jì)算;PE陣列寄存器數(shù)據(jù)更新操作控制模塊用于控制PE陣列從亮度參考像素緩存模塊讀取參考像素到寄存器,一次讀取兩種像素類型的16字節(jié)寬數(shù)據(jù)用于4路PE陣列的數(shù)據(jù)更新,PE陣列的當(dāng)前亮度像素寄存器的數(shù)據(jù)更新操作通過對(duì)不同的當(dāng)前像素寄存器采用移位實(shí)現(xiàn)快速更新。亮度參考像素緩存模塊是硬件實(shí)現(xiàn)的核心,亮度緩存通過像素交錯(cuò)存儲(chǔ)的方式來滿足PE陣列讀取數(shù)據(jù)的需要,使之適合硬件實(shí)現(xiàn)。亮度緩存首先要易于PE陣列計(jì)算時(shí)進(jìn)行數(shù)據(jù)的讀取與更新操作;同時(shí)易于將片外的數(shù)據(jù)按亮度緩存的存儲(chǔ)格式進(jìn)行存儲(chǔ)。本發(fā)明采用了 Zigzag掃描順序編碼以及片上數(shù)據(jù)交錯(cuò)存儲(chǔ)的緩存方式。當(dāng)視頻編碼器從片外存儲(chǔ)器DDR SDRAM讀取原始視頻序列吋,不采用傳統(tǒng)的按光柵順序進(jìn)行宏塊編碼,而是采用Zigzag宏塊順序編碼,可以減少約2/3的外部存儲(chǔ)器訪問帶寬。通過將參考像素按4類像素(正方形、三角形、圓形、五角形),分奇偶行,奇偶宏塊列分開存儲(chǔ),共16路片上RAM存儲(chǔ)亮度參考像素,姆路RAM的位寬為64比特,RAM的姆一地址線對(duì)應(yīng)8個(gè)像素點(diǎn)值。分層復(fù)用的PE陣列模塊是運(yùn)動(dòng)估計(jì)的計(jì)算模塊,本發(fā)明根據(jù)運(yùn)動(dòng)估計(jì)搜索方法設(shè)計(jì)對(duì)應(yīng)的陣列分布,充分利用每ー個(gè)PE単元。在這里假定ー個(gè)PE単元將僅用于兩個(gè)8比特像素值的絕對(duì)差值運(yùn)算,本發(fā)明共采用了 2*1024個(gè)PE単元,其中前后向預(yù)測(cè)各采用1024個(gè)PE單元。計(jì)算16x16的匹配塊需要256個(gè)PE,則同時(shí)有4路16x16塊SAD值并行計(jì)算,16路8x8塊SAD值并行計(jì)算。PE陣列從亮度參考像素模塊讀取參考像素到寄存器,最后由PE陣列來完成計(jì)算工作,需要盡可能保證PE陣列在每ー個(gè)時(shí)鐘能從亮度緩存得到有效的數(shù)據(jù)并進(jìn)行SAD值計(jì)算,保證流水線的時(shí)鐘周期約束。分層復(fù)用的PE陣列模塊中,PE陣列分布呈三級(jí)PEA_32pels陣列單元,PEA_64pels陣列單元,PEA_256pels陣列單元。其中PEA_32pels單元是最基本的陣列單元,·由32個(gè)PE單元構(gòu)成,用于計(jì)算4x8塊的SAD值;PEA_64pels單元包括兩路PEA_32pels單元,由64個(gè)PE單元構(gòu)成,用于計(jì)算8x8塊的SAD值;PEA_256pels單元包括四路PEA_64pels單元,由256個(gè)PE單元構(gòu)成,用于計(jì)算16x16塊及其可變大小塊的SAD值。本發(fā)明的硬件系統(tǒng)主要解決了片上亮度像素緩存的數(shù)據(jù)組織格式,采用分類像素存儲(chǔ)來實(shí)現(xiàn)降采樣的捜索;設(shè)計(jì)出復(fù)雜度適中的數(shù)據(jù)流和控制流,使得硬件實(shí)現(xiàn)簡(jiǎn)單;在不增加額外存儲(chǔ)空間的前提下,増加PE陣列實(shí)現(xiàn)高吞吐量的計(jì)算。本發(fā)明由于采取以上技術(shù)方案,其具有以下優(yōu)點(diǎn)I、降采樣層數(shù)少,搜索精度高;2、設(shè)置降采樣層候選運(yùn)動(dòng)向量的捜索步長(zhǎng)為2,提高搜索速度;3、充分利用片上亮度緩存同一時(shí)刻所有可讀取的像素?cái)?shù)據(jù),多PE陣列并行處理;4、片上RAM與Register充分考慮數(shù)據(jù)復(fù)用,降低帶寬需求;5、減少同一 PE陣列與不同RAM的數(shù)據(jù)交互,降低硬件實(shí)現(xiàn)復(fù)雜度。
圖I是分層搜索的整體硬件構(gòu)架示意圖;圖2是分層捜索的兩層像素關(guān)系示意圖;圖3是兩層運(yùn)動(dòng)估計(jì)的原理圖;圖4是Zigzag宏塊編碼順序示意圖;圖5是片上亮度緩存的存儲(chǔ)結(jié)構(gòu);圖6是PEA單元的結(jié)構(gòu);圖7是PEA_64pels與PEA_256pels單元結(jié)構(gòu)的組成;圖8是PE陣列當(dāng)前像素寄存器的存儲(chǔ)方式;圖9是降采樣層的其中一路降采樣圖像的捜索示意圖。
具體實(shí)施方式
下面對(duì)本發(fā)明的實(shí)施例作詳細(xì)說明,本實(shí)施例以本發(fā)明技術(shù)方案為前提,給出了詳細(xì)的實(shí)施方式和具體的操作過程,但本發(fā)明的保護(hù)范圍不限于下述的實(shí)施例。本實(shí)施例提供ー種適用于FPGA與ASIC實(shí)現(xiàn)、基于分層運(yùn)動(dòng)估計(jì)的搜索方法,具體為將當(dāng)前幀和參考幀按照比例降采樣,LI層是LO層4:1降采樣得到的圖像,LO層是原圖像層。本例以LO層搜索范圍為[-160 160) X [-104 104)為例進(jìn)行說明,則LI層的搜索范圍變?yōu)閇-80 80) X [-52 52)。搜索時(shí)先在第LI層上進(jìn)行,候選MV搜索步長(zhǎng)為2,全搜索[-8080)X[-52 52)區(qū)間內(nèi)共160x104/4=4160個(gè)候選MV,計(jì)算SAD時(shí)候,用了 4:1降采樣精度,即64個(gè)像素點(diǎn)參與了 SAD值計(jì)算。兩層像素關(guān)系示意圖如圖2所示。本實(shí)施例上述方法中,降采樣得到4路降采樣圖像,多PE陣列在每一路降采樣圖像中進(jìn)行4路并行捜索,同時(shí)另3路降采樣圖像并行搜索。如圖2所示,(b)是(a)水平垂直各2: I降采樣后得到的四路降采樣圖像(正方形、三角形、圓形、五角形),通過對(duì)四個(gè)區(qū)域的降采樣圖像采取不同類型的像素點(diǎn)來實(shí)現(xiàn)4個(gè)區(qū)·域的并行搜索。同時(shí)在LI層對(duì)每ー個(gè)區(qū)域搜索時(shí),進(jìn)ー步采用了 4路并行捜索,提高搜索速度。如圖3所示,采用基于率失真優(yōu)化的支持可變大小塊運(yùn)動(dòng)估計(jì),塊匹配代價(jià)函數(shù)取當(dāng)前塊與參考?jí)K的SAD值與運(yùn)動(dòng)矢量的編碼比特消耗的加權(quán)和。在LI層塊大小為8x8,通過求取最小的匹配代價(jià)函數(shù)便可以得到最優(yōu)的運(yùn)動(dòng)矢量。在LO層搜索時(shí),將以LI層最優(yōu)運(yùn)動(dòng)矢量和視頻編碼器的運(yùn)動(dòng)預(yù)測(cè)模塊得到的運(yùn)動(dòng)矢量為運(yùn)動(dòng)捜索起始點(diǎn),在ー個(gè)較小的搜索窗內(nèi)進(jìn)行全捜索,便可得到可變大小塊的塊匹配代價(jià)函數(shù)值,各種模式的匹配代價(jià)將用于編碼器的亞像元運(yùn)動(dòng)估計(jì)與預(yù)測(cè)模式的選擇。如圖I所示,用于實(shí)現(xiàn)上述捜索方法的硬件系統(tǒng)由多個(gè)不同的功能模塊組成,主要有亮度參考像素緩存模塊,分層復(fù)用的PE陣列模塊,PE陣列寄存器數(shù)據(jù)更新操作控制模塊。亮度參考像素片上緩存如圖5所示,圖中ー個(gè)圓圈代表一個(gè)參考像素點(diǎn),其中的字符代表像素類型。將參考圖像的劃分為0 f 共16類參考像素,其中0 7類參考像素為偶宏塊列參考像素,8 f為奇宏塊列參考像素,姆ー類參考像素對(duì)應(yīng)ー個(gè)相應(yīng)類型RAM,亮度參考像素緩存由16個(gè)位寬為64比特的RAM構(gòu)成。本實(shí)施例采用了如圖4所示的Zigzag宏塊掃描順序編碼,毎次更新數(shù)據(jù)時(shí)只讀取一列宏塊列的數(shù)據(jù),只需一次更新8個(gè)偶(奇)宏塊列RAM即可。PEA_32pels結(jié)構(gòu)如圖6所示,該單元是最基本的陣列單元,計(jì)算4x8塊的SAD值;同時(shí)產(chǎn)生4個(gè)2x4塊的SAD值(4x8塊的左上、右上、左下、右下単元),用于可變大小塊的SAD值計(jì)算。PEA_32pels單元構(gòu)成如下5個(gè)8字節(jié)寬的參考像素移位寄存器,4個(gè)8字節(jié)寬的待編碼像素的移位寄存器,32個(gè)PE基本単元,5個(gè)累加器。如圖7所示,2個(gè)PEA_32pels單元構(gòu)成PEA_64pels單元,4個(gè)PEA_64pels單元構(gòu)成PEA_256pels單元。當(dāng)前宏塊像素在寄存器中的存儲(chǔ)方式如圖8所示,在LI層或LO層進(jìn)行塊匹配運(yùn)動(dòng)估計(jì)時(shí),PEA_32pels単元的當(dāng)前宏塊像素寄存器始終存儲(chǔ)0 7類當(dāng)前像素類型中的ー種像素。下面分別對(duì)在LI層和LO層運(yùn)動(dòng)估計(jì)步驟進(jìn)行詳細(xì)的說明。以下描述僅是針對(duì)1024個(gè)PE基本単元,涉及ー幀的處理。對(duì)于P幀,另1024個(gè)PE單元并行處理另一參考幀;對(duì)于B幀,另1024個(gè)PE基本單元并行處理相反方向參考幀。LI層分別對(duì)由原圖像4:1降采樣得到的4路降采樣圖像并行運(yùn)動(dòng)估計(jì),其中每路降采樣圖像進(jìn)行8x8塊的4路并行運(yùn)動(dòng)估計(jì)。降采樣后,i、(i+4)、(i+8)、(i+12) (i=0,l,2,3)共4類像素各構(gòu)成I路降采樣圖像。在本例中約定采取ニ維坐標(biāo)系,原點(diǎn)為當(dāng)前待編碼宏塊的左上角像素點(diǎn),水平向右為X軸正方向,垂直向下為y軸正方向。設(shè)候選運(yùn)動(dòng)向量(X,y),其中x、y均為負(fù)吋,由i=0構(gòu)成的降采樣圖像進(jìn)行運(yùn)動(dòng)估計(jì);x為非負(fù),y為負(fù)吋,由i=l構(gòu)成的降采樣圖像進(jìn)行運(yùn)動(dòng)估計(jì)為負(fù),y為非負(fù)時(shí),由i=2構(gòu)成的降采樣圖像進(jìn)行運(yùn)動(dòng)估計(jì);x、y均為非負(fù)吋,由i=3構(gòu)成的降采樣圖像進(jìn)行運(yùn)動(dòng)估計(jì)。下面僅對(duì)其中一路降采樣圖像進(jìn)行分析,取 i=0 即可,設(shè) PEAl_64pels、PEA2_64pels、PEA3_64pels、PEA4_64pels 用于 4 路并行運(yùn)動(dòng)估計(jì)。如圖 9 所示,PEAl_64pels,PEA2_64pels,PEA3_64pels,PEA4_64pels是水平并行處理,對(duì)候選運(yùn)動(dòng)向量的SAD值計(jì)算采用蛇形掃描的方式進(jìn)行搜索。T=cyclel 時(shí)亥lj, PEAl_64pels 計(jì)算候選運(yùn)動(dòng)向量(-160, -80)的 SAD 值;PEA2_64pels則相對(duì)于PEAl_64pels的運(yùn)動(dòng)向量x軸正方向移動(dòng)4個(gè)整像素單位向量,計(jì)算(-156,-80 )的 SAD 值;同理,PEA3_64pe I s,PEA4_64pe I s 分別計(jì)算(-152,-80 )、( -148,-80 )候選運(yùn)動(dòng)向量的SAD值。4個(gè)PEA_64pels單元在下一周期內(nèi)將計(jì)算的候選運(yùn)動(dòng)向量均向y軸正方向移動(dòng)4個(gè)整像素單位向量。PEAl_64pels由兩個(gè)PEA單元構(gòu)成,PEAl_64pels_·PEAO 與 PEAl_64pels_PEAl ;PEAl_64pels 在下一周期計(jì)算(-160,-76),所需數(shù)據(jù)與計(jì)算(-160,-80)的參考像素?cái)?shù)據(jù)相比只需要更新Sbyte的數(shù)據(jù)即可,PEA的參考像素寄存器為5x8bytes,則其中4個(gè)8bytes寄存器用于參與運(yùn)算,第5個(gè)8bytes寄存器用于讀入需要更新的Sbyte數(shù)據(jù)即可,保證PE陣列在T=CyCle2時(shí)刻可以立即參與運(yùn)算。對(duì)于當(dāng)前像素寄存器不需要更新。對(duì)PEA2_64pels,PEA3_64pels, PEA4_64pels同此操作即可。T=cycle2 時(shí)刻,PEAl_64pels 計(jì)算候選運(yùn)動(dòng)向量(-160,_76);PEA2_64pels 計(jì)算候選運(yùn)動(dòng)向量(-156,-76) ;PEA3_64pels計(jì)算候選運(yùn)動(dòng)向量(-152,-76) ;PEA4_64pels計(jì)算候選運(yùn)動(dòng)向量(-148,-76)。更新參考像素寄存器Sbytes數(shù)據(jù),當(dāng)前像素寄存器不需要更新。同上操作,繼續(xù)向y軸正方向掃描,則T=cyclel9時(shí)刻,PEAl_64pels、PEA2_64pels、PEA3_64pels、PEA4_64pels 分別計(jì)算候選運(yùn)動(dòng)向量(-160,4)、(-156,-4)、(-152,-4)、(-148,-4)的 SAD 值。在T=cycle20時(shí)刻,若繼續(xù)向y軸正方向移動(dòng)的運(yùn)動(dòng)向量(-160,O)、(-156,O)、(-152,0)、(-148,0)屬于另一路降采樣圖像的候選運(yùn)動(dòng)向量的范圍,這里需要向X軸正方向移動(dòng)16個(gè)整像素単位向量,不能數(shù)據(jù)復(fù)用,PE陣列需要空等,直至需要的數(shù)據(jù)讀入?yún)⒖枷袼丶拇嫫?。同時(shí)更新4個(gè)8字節(jié)寬的數(shù)據(jù)需要4個(gè)周期,減去上ー個(gè)周期內(nèi)第5個(gè)8字節(jié)寬的寄存器已更新的操作時(shí)間,共需等待3個(gè)周期。不需更新當(dāng)前像素寄存器。T=cycle23 時(shí)刻,PEAl_64pels、PEA2_64pels、PEA3_64pels、PEA4_64pels 分別計(jì)算候選運(yùn)動(dòng)向量(-144,-4)、(-140,-4)、(-136,-4)、(-132,-4)的 SAD 值。在下ー個(gè)周期內(nèi)各PEA_64pels陣列計(jì)算的候選運(yùn)動(dòng)向量相對(duì)于T=23cycle時(shí)刻的運(yùn)動(dòng)向量沿y軸負(fù)方向移動(dòng)4個(gè)整像素単位向量,故在此周期內(nèi)更新8字節(jié)狂的參考像素?cái)?shù)據(jù),不需更新當(dāng)前像素寄存器。T=cycle24 時(shí)刻,PEAl_64pels、PEA2_64pels、PEA3_64pels、PEA4_64pels 分別計(jì)算候選運(yùn)動(dòng)向量(-144,-8)、(-140,-8)、(-136,-8)、(-132,-8)的SAD值。同時(shí)更新參考像素寄存器Sbytes數(shù)據(jù),不需更新當(dāng)前像素寄存器。同上操作,繼續(xù)向y軸負(fù)方向掃描,則T=cycle41時(shí)刻,PEAl_64pels、PEA2_64pels、PEA3_64pels、PEA4_64pels 分別計(jì)算候選運(yùn)動(dòng)向量(-144,-80)、(-140,-80)、(-136,-80)、(-132,-80)的SAD值。在下ー個(gè)周期內(nèi)需要計(jì)算向x軸正方向移動(dòng)16個(gè)整像素単位向量的候選運(yùn)動(dòng)向量的SAD值,數(shù)據(jù)不能有效復(fù)用,PE陣列需要空等,直至需要的數(shù)據(jù)讀入?yún)⒖枷袼丶拇嫫鳌2恍韪庐?dāng)前像素寄存器。同上,需要等待3個(gè)周期。T=cycle45 時(shí)刻,PEAl_64pels、PEA2_64pels、PEA3_64pels、PEA4_64pels 分別計(jì)算候選運(yùn)動(dòng)向量(-128,-8)、(-124,-8)、(-120,-8)、(-116,-8)的 SAD 值。同時(shí)更新 8byte的數(shù)據(jù),不需更新當(dāng)前像素寄存器。同上操作,至 T=cycle217 時(shí)刻,PEAl_64pels、PEA2_64pels、PEA3_64pels、卩£八4_64 618分別計(jì)算候選運(yùn)動(dòng)向量(-16,4)、(-12,4)、(-8,4)、(4,-4)的SAD值。至此,該路降采樣圖像的塊匹配運(yùn)動(dòng)估計(jì)結(jié)束。對(duì)于另3路降采樣圖像執(zhí)行同樣的操作即可。根據(jù)選擇最小的塊匹配代價(jià),可得到16個(gè)最優(yōu)候選運(yùn)動(dòng)向量。對(duì)這16個(gè)最優(yōu)候選運(yùn)動(dòng)向量的塊匹配代價(jià)進(jìn)行比較,在滿足限·制條件該向量在LO層作為搜索起始點(diǎn)的搜索區(qū)域和以預(yù)測(cè)運(yùn)動(dòng)向量作為搜索起始點(diǎn)的捜索區(qū)域不發(fā)生相互重疊,選取匹配代價(jià)最小的運(yùn)動(dòng)向量作為L(zhǎng)I層的最后候選運(yùn)動(dòng)向量。至此,LI層的運(yùn)動(dòng)估計(jì)結(jié)束,下面對(duì)LO層運(yùn)動(dòng)估計(jì)進(jìn)行相關(guān)說明。LO層以LI層搜索得到的最優(yōu)運(yùn)動(dòng)向量與預(yù)測(cè)運(yùn)動(dòng)向量分別為搜索起始點(diǎn),設(shè)為(cenx, ceny),在[-8 8)x[_6 6)的搜索窗內(nèi)進(jìn)行運(yùn)動(dòng)估計(jì),找到整像元運(yùn)動(dòng)估計(jì)的最優(yōu)運(yùn)動(dòng)向量。LO層計(jì)算姆ー個(gè)候選運(yùn)動(dòng)向量需要256個(gè)PE單元,即ー個(gè)PEA_256pels單元,由4個(gè)PEA_64pels單元構(gòu)成,前后向各4個(gè)PEA_256pels単元,記為PEAl_256pels,PEA2_256pels, PEA3_256pels, PEA4_256pels。LO層運(yùn)動(dòng)估計(jì)將四路并行搜索,同LI層蛇形掃描原理相同。首先確定由于數(shù)據(jù)讀取的需要,需要將搜索擴(kuò)展為[_8_(cenx mod4), 12+(cenxmod 4))或者[-12-(cenx mod 4), 8+(cenx mod 4)), 二者無實(shí)質(zhì)差別,可根據(jù)實(shí)際情況選擇兩者之ー即可。為簡(jiǎn)化后續(xù)說明,這里假定cenx=16,ceny=16,擴(kuò)展搜索窗為[-8,12)。T=cyclel 時(shí)刻,PEAl_256pels, PEA2_256pels, PEA3_256pels, PEA4_256pels 分別計(jì)算候選運(yùn)動(dòng)向量(-8,_6)、(-7,-6)、(-6,-6),(-5, _6)的 SAD 值。其中 PEAl_256pels由四個(gè) PEA_64pels 結(jié)構(gòu)單兀組成,記為 aPEAl_64pels, aPEA2_64pels, aPEA3_64pels,aPEA4_64pels,并假定它們各自存儲(chǔ)的當(dāng)前宏塊像素類型為(0、4),(1,5), (2,6), (3、7)。候選運(yùn)動(dòng)向量(-8,-6)對(duì)應(yīng)的參考宏塊的左上角的像素坐標(biāo)為(8,10),此點(diǎn)像素類型為3。aPEAl_64pels, aPEA2_64pels, aPEA3_64pels, APEA4_64pels 各自計(jì)算以(8,10)、(9,10)、(8,11)、(9,11)為左上角的8x8降采樣塊的SAD值,累加可得LO層可變大小塊的SAD。同時(shí),在此周期內(nèi),各PE陣列需要對(duì)寄存器的像素進(jìn)行更新。假設(shè)aPEAl_64pels由aPEAl_32pels,aPEA2_32pels組成,分別存儲(chǔ)當(dāng)前待編碼宏塊的像素類型為(0、4),參考像素寄存器的對(duì)應(yīng)類型為(3與b、7與f)。這2個(gè)PEA_32pels陣列更新當(dāng)前宏塊的編碼像素類型為(2、6),參考像素對(duì)應(yīng)的類型為(3與b、7與f ),需要更新8字節(jié)寬的數(shù)據(jù)。aPEAl_256pels 的另 3 個(gè) PEA_64pels 陣列以及另 3 個(gè) PEA_256pels 的 PEA_64pels 陣列同此操作。T=cycle2 時(shí)刻,PEAl_256pels, PEA2_256pels, PEA3_256pels, PEA4_256pels 分別計(jì)算候選運(yùn)動(dòng)向量(-8,-5),(-7, -5),(-6, -5),(-5, -5)的SAD值。同時(shí),在此周期內(nèi),各PE陣列需要對(duì)寄存器中像素值進(jìn)行更新。同上操作,繼續(xù)向y軸正方向掃描,則T=cyclel2時(shí)刻,PEAl_256pels,PEA2_256peI s,PEA3_256peI s,PEA4_256peI s 分別計(jì)算候選運(yùn)動(dòng)向量(_8,5 )、( -7,5 )、( -6,5)、(-5,5)位置SAD值。這里需要向X軸正方向移動(dòng)4個(gè)整像素単位向量,數(shù)據(jù)不能有效復(fù)用,PE陣列需要空等,直至需要的數(shù)據(jù)讀入?yún)⒖枷袼丶拇嫫鳌9残璧却?個(gè)周期。T=cyclel6 時(shí)刻,PEAl_256pels, PEA2_256pels, PEA3_256pels, PEA4_256pels 分別計(jì)算候選運(yùn)動(dòng)向量(-4,5)、(-3,5)、(-2,5)、(-1,5)的SAD值。同時(shí),在此周期內(nèi),各PE陣列需要對(duì)寄存器的像素值進(jìn)行更新。下一個(gè)時(shí)鐘周期需要向y軸負(fù)方向移動(dòng)ー個(gè)整像素単位向量進(jìn)行運(yùn)動(dòng)估計(jì)。T=cyclel7 時(shí)刻,PEAl_256pels, PEA2_256pels, PEA3_256pels, PEA4_256pe·ls 分別計(jì)算候選運(yùn)動(dòng)向量(-4,4)、(-3,4)、(-2,4)、(-1,4)的SAD值。同時(shí),在此周期內(nèi),各PE陣列需要對(duì)寄存器的像素值進(jìn)行更新。下ー個(gè)周期需要向y軸負(fù)方向移動(dòng)ー個(gè)整像素単位向量進(jìn)行運(yùn)動(dòng)估計(jì)。同上操作,T=72cycle 時(shí)刻,PEAl_256pels, PEA2_256pels, PEA3_256pels,PEA4_256pels 分別計(jì)算候選運(yùn)動(dòng)向量(8,5)、(9,5)、( 10,5)、( 11,5)的 SAD 值。至此,基于該搜索起始點(diǎn)的LO層局部精細(xì)搜索運(yùn)動(dòng)估計(jì)結(jié)束,根據(jù)選擇最小的塊匹配代價(jià),可得到4個(gè)最優(yōu)候選運(yùn)動(dòng)向量,再對(duì)這4個(gè)最優(yōu)候選運(yùn)動(dòng)向量的塊匹配代價(jià)進(jìn)行比較,可以得到I個(gè)對(duì)應(yīng)該搜索起始點(diǎn)的最優(yōu)運(yùn)動(dòng)向量。同理,對(duì)另一捜索起始點(diǎn)執(zhí)行同樣操作,可以得到I個(gè)對(duì)應(yīng)該搜索起始點(diǎn)的最優(yōu)運(yùn)動(dòng)向量。最后將對(duì)應(yīng)兩捜索起始點(diǎn)的各自最優(yōu)運(yùn)動(dòng)向量的代價(jià)進(jìn)行比較,可以得到整像元運(yùn)動(dòng)估計(jì)的最優(yōu)運(yùn)動(dòng)向量。至此,整像元估計(jì)結(jié)束。盡管本發(fā)明的內(nèi)容已經(jīng)通過上述優(yōu)選實(shí)施例作了詳細(xì)介紹,但應(yīng)當(dāng)認(rèn)識(shí)到上述的描述不應(yīng)被認(rèn)為是對(duì)本發(fā)明的限制。在本領(lǐng)域技術(shù)人員閱讀了上述內(nèi)容后,對(duì)于本發(fā)明的多種修改和替代都將是顯而易見的。因此,本發(fā)明的保護(hù)范圍應(yīng)由所附的權(quán)利要求來限定。
權(quán)利要求
1.一種基于分層運(yùn)動(dòng)估計(jì)的搜索方法,其特征在于將當(dāng)前幀和參考幀按照比例進(jìn)行一次降采樣,降采樣層進(jìn)行運(yùn)動(dòng)估計(jì)時(shí),設(shè)置候選運(yùn)動(dòng)向量的步長(zhǎng)為降采樣后的2個(gè)整像素單位向量。
2.根據(jù)權(quán)利要求I所述的基于分層運(yùn)動(dòng)估計(jì)的搜索方法,其特征在于所述降采樣得到4路降采樣圖像,多PE陣列在每一路降采樣圖像中進(jìn)行4路并行搜索,同時(shí)另3路降采樣圖像并行搜索。
3.根據(jù)權(quán)利要求I或2所述的基于分層運(yùn)動(dòng)估計(jì)的搜索方法,其特征在于所述方法中片上亮度像素緩存采用分類像素存儲(chǔ)來實(shí)現(xiàn)降采樣的搜索,即按降采樣得到4種像素類型交錯(cuò)存儲(chǔ),同時(shí)分奇偶行與奇偶宏塊列分開存儲(chǔ),共16種像素類型交錯(cuò)存儲(chǔ)。
4.根據(jù)權(quán)利要求3所述的基于分層運(yùn)動(dòng)估計(jì)的搜索方法,其特征在于所述PE陣列從亮度像素緩存讀取數(shù)據(jù)復(fù)用,一次讀取兩種像素類型的16字節(jié)寬數(shù)據(jù)用于4路PE陣列的數(shù)據(jù)更新。
5.根據(jù)權(quán)利要求4所述的基于分層運(yùn)動(dòng)估計(jì)的搜索方法,其特征在于所述PE陣列的當(dāng)前亮度像素寄存器的數(shù)據(jù)更新操作通過對(duì)不同的當(dāng)前像素寄存器采用移位實(shí)現(xiàn)快速更新。
6.根據(jù)權(quán)利要求I或2所述的基于分層運(yùn)動(dòng)估計(jì)的搜索方法,其特征在于所述方法采用基于率失真優(yōu)化的支持可變大小塊運(yùn)動(dòng)估計(jì),塊匹配代價(jià)函數(shù)取當(dāng)前塊與參考?jí)K的SAD值與運(yùn)動(dòng)矢量的編碼比特消耗的加權(quán)和。
7.—種如權(quán)利要求1-6所述基于分層運(yùn)動(dòng)估計(jì)的搜索方法的實(shí)現(xiàn)系統(tǒng),其特征在于包括 亮度參考像素緩存模塊采用了 Zigzag掃描順序編碼以及片上數(shù)據(jù)交錯(cuò)存儲(chǔ)的緩存方式即按降采樣得到4種像素類型交錯(cuò)存儲(chǔ),同時(shí)分奇偶行與奇偶宏塊列分開存儲(chǔ),共16種像素類型交錯(cuò)存儲(chǔ); 分層復(fù)用的PE陣列模塊降采樣得到4路降采樣圖像,多PE陣列在每一路降采樣圖像中進(jìn)行4路并行搜索,同時(shí)另3路降采樣圖像并行搜索;所述PE陣列能在每一個(gè)時(shí)鐘從亮度參考像素緩存模塊得到有效的數(shù)據(jù)并進(jìn)行SAD值計(jì)算; PE陣列寄存器數(shù)據(jù)更新操作控制模塊用于控制PE陣列從亮度參考像素緩存模塊讀取參考像素到寄存器,一次讀取兩種像素類型的16字節(jié)寬數(shù)據(jù)用于4路PE陣列的數(shù)據(jù)更新,PE陣列的當(dāng)前亮度像素寄存器的數(shù)據(jù)更新操作通過對(duì)不同的當(dāng)前像素寄存器采用移位實(shí)現(xiàn)快速更新。
8.根據(jù)權(quán)利要求7所述的基于分層運(yùn)動(dòng)估計(jì)的搜索方法的實(shí)現(xiàn)系統(tǒng),其特征在于所述分層復(fù)用的PE陣列模塊,其PE陣列分布呈三級(jí)PEA_32pels陣列單元,PEA_64pels陣列單元,PEA_256pels陣列單元,其中PEA_32pels單元是最基本的陣列單元,由32個(gè)PE單元構(gòu)成,用于計(jì)算4x8塊的SAD值;PEA_64pels單元包括兩路PEA_32pels單元,由64個(gè)PE單元構(gòu)成,用于計(jì)算8x8塊的SAD值;PEA_256pels單元包括四路PEA_64pels單元,由256個(gè)PE單元構(gòu)成,用于計(jì)算16x16塊及其可變大小塊的SAD值。
9.根據(jù)權(quán)利要求7或8所述的基于分層運(yùn)動(dòng)估計(jì)的搜索方法的實(shí)現(xiàn)系統(tǒng),其特征在于所述亮度參考像素緩存模塊通過將參考像素按4類像素,分奇偶行,奇偶宏塊列分開存儲(chǔ),共16路片上RAM存儲(chǔ)亮度參考像素,每路RAM的位寬為64比特,RAM的每一地址線對(duì)應(yīng)8個(gè)像素點(diǎn)值。·
全文摘要
本發(fā)明公開一種基于分層運(yùn)動(dòng)估計(jì)的搜索方法及其實(shí)現(xiàn)系統(tǒng),所述方法將當(dāng)前幀和參考幀按照比例進(jìn)行一次降采樣,降采樣層進(jìn)行運(yùn)動(dòng)估計(jì)時(shí),設(shè)置候選運(yùn)動(dòng)向量的步長(zhǎng)為降采樣后的2個(gè)整像素單位向量。所述系統(tǒng)包含亮度參考像素緩存模塊,分層復(fù)用的PE陣列模塊;PE陣列寄存器數(shù)據(jù)更新操作控制模塊。本發(fā)明提出的方案僅通過一次4:1降采樣,由原始圖像層的16×16塊變?yōu)?×8塊,塊匹配的特征較明顯;同時(shí)設(shè)置降采樣層的搜索步長(zhǎng)為2來降低計(jì)算量,滿足視頻編碼器的實(shí)時(shí)性。
文檔編號(hào)H04N7/26GK102790884SQ20121026493
公開日2012年11月21日 申請(qǐng)日期2012年7月27日 優(yōu)先權(quán)日2012年7月27日
發(fā)明者張小云, 鄧剛, 陳立, 高志勇 申請(qǐng)人:上海交通大學(xué)