專利名稱:一種基于前后兩幀參考幀產(chǎn)生內(nèi)插幀的雙向運(yùn)動估計器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及視頻圖像處理技術(shù)領(lǐng)域,具體來講,涉及一種基于前后兩幀參考幀產(chǎn)生內(nèi)插幀的方法及其雙向運(yùn)動估計器。
背景技術(shù):
運(yùn)動估計算法是現(xiàn)有各種視頻圖像編碼技術(shù)的核心,也是基于運(yùn)動估計與運(yùn)動補(bǔ)償(ME/MC)的視頻圖像后處理技術(shù)的核心,其性能的好壞直接決定了視頻圖像處理的質(zhì)量,對視頻處理系統(tǒng)具有重要意義。同時,運(yùn)動估計器也是視頻壓縮編碼芯片或視頻圖像后 處理芯片中最消耗計算資源的模塊,一般來說,在視頻編碼或視頻圖像后處理硬件系統(tǒng)中,運(yùn)動估計器要占用40% 50%的硬件開銷。如何提高運(yùn)動估計器的運(yùn)算速度與運(yùn)算精度,同時盡量簡化運(yùn)動估計器的結(jié)構(gòu)并提高數(shù)據(jù)的利用率,一直是視頻圖像編碼和視頻圖像后處理領(lǐng)域的研究熱點(diǎn)。幀頻提升,也稱為時間內(nèi)插或幀速率上變換,是指在原視頻圖像兩原始幀之間插入中間幀以實現(xiàn)視頻圖像幀速率的提升,是視頻圖像后處理技術(shù)中的重要組成部分。隨著多媒體技術(shù)特別是數(shù)字電視技術(shù)的快速發(fā)展,幀頻提升得到了廣泛的應(yīng)用。例如,將以24幀/秒拍攝得到的電影膠片在高清晰度電視上播放必須將幀頻提升至50或60幀/秒。在低比特率視頻編碼中,為了降低碼率常通過下采樣即跳過某些視頻幀的方式將傳輸幀率降低至每秒10或15幀,在接收端則需要進(jìn)行幀頻提升以恢復(fù)原幀速率,以恢復(fù)原有的視頻質(zhì)量。此外,在液晶顯示器(LCD)中,常通過將幀頻提升至100或120幀/秒,減少液晶顯示屏的保持時間,從而消除液晶顯示器在顯示動態(tài)畫面時容易出現(xiàn)的拖尾現(xiàn)象,確保更加流暢的動態(tài)效果。不同于壓縮編碼,幀頻提升對運(yùn)動估計的精度要求更高。在眾多幀頻提升算法中,基于塊匹配運(yùn)動估計和運(yùn)動補(bǔ)償?shù)膸l提升算法由于計算簡單、便于實現(xiàn)而被廣泛采納。其中,基于塊匹配的運(yùn)動估計算法可以分為單向運(yùn)動估計和雙向運(yùn)動估計兩類。單向運(yùn)動估計即傳統(tǒng)的用于視頻壓縮編碼中的運(yùn)動估計算法,將兩個連續(xù)幀中的其中一幀作為參考幀并劃分為若干塊,然后將該幀中的參考塊對應(yīng)到另一幀中尋找匹配塊,相應(yīng)地,該對匹配塊對應(yīng)的位移即為該參考塊對應(yīng)的運(yùn)動矢量。由于視頻壓縮的目的是為了得到最小的殘差圖像,故單向運(yùn)動估計可以滿足視頻壓縮的要求。但是,對于幀頻提升來講,其目的是為了獲取質(zhì)量好的內(nèi)插圖像,而單向運(yùn)動估計用于幀頻提升存在的問題是會在內(nèi)插幀中產(chǎn)生空洞和重疊現(xiàn)象?;谶@個原因,雙向運(yùn)動估計應(yīng)運(yùn)而生。它將內(nèi)插幀劃分為若干塊,對應(yīng)于內(nèi)插幀中的當(dāng)前塊到前后兩幀中對稱地尋找匹配塊作為當(dāng)前塊的運(yùn)動矢量,從而簡單地避免了空洞和重疊問題。正是基于這個原因,雙向運(yùn)動估計得到了普遍應(yīng)用。在塊匹配運(yùn)動估計的搜索算法中,常用的有全搜索算法、三步法、交叉搜索算法及菱形搜索算法等。其中,三步法、交叉搜索算法和菱形搜索算法屬于快速搜索算法,具有搜索速度快的特點(diǎn),但其缺點(diǎn)是容易陷入局部最小值,搜索準(zhǔn)確率低。相對而言,全搜索算法雖然需要的硬件資源較大,但由于其搜索精度高,控制邏輯簡單的優(yōu)點(diǎn),在運(yùn)動估計器的硬件實現(xiàn)領(lǐng)域得到了廣泛的應(yīng)用。目前已經(jīng)有許多基于全搜索塊匹配算法(Full-SearchBlock Matching Arithmetic, FS-BMA)的單向運(yùn)動估計器的實現(xiàn)架構(gòu)相繼提出,它們中的大多數(shù)都是基于運(yùn)算單元(PE)陣列來構(gòu)建,以適應(yīng)運(yùn)動估計時大量并行運(yùn)算和高速處理的內(nèi)在要求。如,文獻(xiàn)[I] (Hangu Yeo, Yu Hen Hu. A Novel Modular SystolicArray Architecture for Full-Search Block Matching Motion Estimation[J].IEEE Transactions on Circuits and Systems for Video Technology. 1995, vol.5(5) :407-416)提出了一種低資源消耗,低帶寬需求,可級聯(lián)工作的運(yùn)動估計器結(jié)構(gòu);文獻(xiàn)[2](陳孫陽,陳穎琪.一種改進(jìn)的奇偶陣列結(jié)構(gòu)運(yùn)動估計器設(shè)計[J].信息技術(shù).2010,8 :01-05)提出了一種基于Iai結(jié)構(gòu)改進(jìn)的,采用了奇偶陣列寄存器的單向運(yùn)動估計器的實現(xiàn)架構(gòu)。該結(jié)構(gòu)能夠高效地復(fù)用數(shù)據(jù)從而減少訪問存儲器的次數(shù)。但是,上述結(jié)構(gòu)由于是基于單向運(yùn)動估計的設(shè)計而使其應(yīng)用受到了限制,對于像幀頻提升這樣的應(yīng)用其結(jié)果尚不盡人意。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)存在的上述不足,本發(fā)明的目的在于提供一種基于前后兩幀參考幀產(chǎn)生內(nèi)插幀的雙向運(yùn)動估計器,本估計器能夠靈活地執(zhí)行全搜索雙向運(yùn)動估計算法,并且具有較高的執(zhí)行效率。為了實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案是這樣的
一種基于前后兩幀參考幀產(chǎn)生內(nèi)插幀的雙向運(yùn)動估計器,該運(yùn)動估計器包括
存儲單元,用于緩存前后兩幀參考幀中數(shù)據(jù);
匹配誤差計算單元,將內(nèi)插幀分為若干大小相同的宏塊,基于其中的每個宏塊設(shè)定搜索范圍,根據(jù)存儲單元發(fā)送過來的前后兩幀參考幀中的數(shù)據(jù)計算搜索范圍內(nèi)所有運(yùn)動矢量對應(yīng)的匹配誤差;
比較器樹單元,用于對搜索區(qū)域內(nèi)計算出的所有匹配誤差值的比較得出最小匹配誤差值并輸出該最小匹配誤差值及其對應(yīng)的運(yùn)動矢量;
數(shù)據(jù)存儲器,用于存儲比較器樹單元輸出的所有宏塊的最小匹配誤差值及其對應(yīng)的運(yùn)動矢量,所有的運(yùn)動矢量共同作為運(yùn)動估計的結(jié)果。所述匹配誤差計算單元由n個CALC單元(運(yùn)算單元)構(gòu)成,每個CALC單元由m個PE單元(即內(nèi)部運(yùn)算單元)、奇偶陣列寄存器和一個比較器樹構(gòu)成,即匹配誤差計算單元總共有nXm個PE單元,n個比較器樹;其中,奇偶陣列寄存器包括四組移位寄存器,分別為前一參考幀偶數(shù)列數(shù)據(jù)寄存器、前一參考幀奇數(shù)列數(shù)據(jù)寄存器、后一參考幀偶數(shù)列數(shù)據(jù)寄存器和后一參考幀奇數(shù)列數(shù)據(jù)寄存器,分別對應(yīng)前后兩幀參考幀中偶數(shù)列和奇數(shù)列數(shù)據(jù)的寄存;奇偶陣列寄存器將其存儲的數(shù)據(jù)對應(yīng)輸入m個PE單元,每個PE單元負(fù)責(zé)計算一個搜索點(diǎn)對應(yīng)匹配塊的匹配誤差值,每個CALC單元的m個匹配誤差值輸出到該CALC單元對應(yīng)的比較器樹,由該比較器樹比較并輸出最小匹配誤差值及其對應(yīng)的運(yùn)動矢量,該最小匹配誤差值及其對應(yīng)的運(yùn)動矢量即作為對應(yīng)的CALC單元的輸出;n個CALC單元的輸出再輸入到比較器樹單元,得到最終的最小匹配誤差值及其對應(yīng)的運(yùn)動矢量。進(jìn)一步地,本雙向運(yùn)動估計器還包括控制單元,所述控制單元輸出控制信號到n個CALC單元中的每個PE單元,其中一路控制信號控制PE單元選擇當(dāng)前輸入的值應(yīng)該是奇數(shù)列數(shù)據(jù)還是偶數(shù)列數(shù)據(jù),另一路控制信號用來控制PE單元將計算結(jié)果輸出,當(dāng)該另一路控制信號(latch_en信號)為低時,PE單元輸出呈高阻態(tài),當(dāng)該另一路控制信號(latch_en信號)為高時,PE單元輸出計算得到的匹配誤差值。為了增加信號的驅(qū)動能力和控制信號的同步,本發(fā)明通過在寄存器對信號進(jìn)行鎖存,所述控制單元通過寄存器與PE單元連接,每個CALC單元中的m個PE單元分為相等的
若干組,每個CALC單元中的寄存器的數(shù)量與PE單元分組數(shù)量一致并--對應(yīng),每一個寄存
器與對應(yīng)PE單元分組中的所有PE單元連接。每個PE單元由兩個數(shù)據(jù)選擇器MUX、差值絕對值計算器和累加器acc構(gòu)成,前一參考幀偶數(shù)列數(shù)據(jù)寄存器和前一參考幀奇數(shù)列數(shù)據(jù)寄存器中的數(shù)據(jù)輸入到其中一個數(shù)據(jù)選 擇器MUX,后一參考幀偶數(shù)列數(shù)據(jù)寄存器和后一參考幀奇數(shù)列數(shù)據(jù)寄存器的數(shù)據(jù)輸入到另一個數(shù)據(jù)選擇器MUX ;所述控制單元的一路控制信號同時接兩數(shù)據(jù)選擇器MUX ;兩數(shù)據(jù)選擇器MUX根據(jù)控制信號輸出某列寄存器的數(shù)據(jù)到差值絕對值計算器,差值絕對值計算器的輸出接累加器acc ;所述控制單元的另一路控制信號接累加器acc,控制累加器acc將累加后的匹配誤差值輸出,該輸出即為對應(yīng)PE單元的匹配誤差值。所述存儲單元以條帶形式緩存前后兩幀參考幀中數(shù)據(jù)并按列輸入到匹配誤差計
算單元。與現(xiàn)有技術(shù)相比,本發(fā)明具有如下有益效果
I.本發(fā)明雙向運(yùn)動估計器能夠靈活地執(zhí)行全搜索雙向運(yùn)動估計算法,并且具有較高的執(zhí)行效率。2.本發(fā)明控制單元通過增加寄存器鎖存信號的方式增加信號的驅(qū)動能力,降低信號的延時和控制信號同步。3.本發(fā)明在塊大小和搜索點(diǎn)數(shù)相同的情況下,可以實現(xiàn)效率最高和數(shù)據(jù)復(fù)用;在塊大小和搜索點(diǎn)數(shù)不同的情況下,也可以通過多個CALC單元級聯(lián)的方式實現(xiàn)效率最高和數(shù)據(jù)復(fù)用。4.本發(fā)明可以通過配置使之適用于多種視頻格式和多種像素位寬,這使得本發(fā)明具有較高的靈活性和實用性。
圖I是本發(fā)明運(yùn)動估計器框 圖2是本發(fā)明中所述雙向運(yùn)動估計原理示意 圖3是本發(fā)明中的雙向運(yùn)動估計器的具體實施例框 圖4是本發(fā)明CALC單元內(nèi)部結(jié)構(gòu) 圖5是本發(fā)明增加mux_sel和latch_en信號驅(qū)動能力示意 圖6是本發(fā)明PE單元內(nèi)部結(jié)構(gòu) 圖7是本發(fā)明從存儲單元讀到奇偶陣列寄存器的順序;
圖8是本發(fā)明陣列結(jié)構(gòu)原理示例;
圖9是本發(fā)明PE陣列初始化完成示意圖。
具體實施例方式下面結(jié)合附圖對本發(fā)明作進(jìn)一步說明。參見圖1,從圖上可以看出,本發(fā)明雙向運(yùn)動估計器,該運(yùn)動估計器主要包括
存儲單元10,以條帶的方式緩存前后兩幀參考幀中對應(yīng)數(shù)據(jù)。匹配誤差計算單元20,將內(nèi)插幀分為若干大小相同的矩形宏塊,基于其中的每個宏塊設(shè)定搜索范圍,根據(jù)存儲單元發(fā)送過來的前后兩幀參考幀中的數(shù)據(jù)計算搜索范圍內(nèi)所有運(yùn)動矢量對應(yīng)的匹配誤差;匹配誤差計算單元分為奇偶陣列寄存器201和PE單元203兩部分。其中,奇偶陣列寄存器包括4組移位寄存器,分別為前一參考幀偶數(shù)列數(shù)據(jù)寄存器、前一參考幀奇數(shù)列數(shù)據(jù)寄存器、后一參考幀偶數(shù)列數(shù)據(jù)寄存器和后一參考幀奇數(shù)列數(shù)據(jù)寄存器,對應(yīng)前后兩幀參考幀中的偶數(shù)列和奇數(shù)列數(shù)據(jù)。關(guān)于匹配誤差計算單元的內(nèi)部結(jié)構(gòu),后面將有詳細(xì)描述。 比較器樹單元30,負(fù)責(zé)完成對搜索區(qū)域內(nèi)計算出的所有匹配誤差值的比較,得出最小匹配誤差值并同時輸出該匹配誤差值及其對應(yīng)的運(yùn)動矢量??刂茊卧?0,通過在寄存器中對信號進(jìn)行鎖存,增加信號的驅(qū)動能力和控制信號的同步。數(shù)據(jù)存儲器50,用于存儲比較器樹單元輸出的所有宏塊的最小匹配誤差值及其對應(yīng)的運(yùn)動矢量,所有的運(yùn)動矢量共同作為運(yùn)動估計的結(jié)果。雙向運(yùn)動估計的原理如圖2所示,左側(cè)為前一幀,中間為內(nèi)插幀,右側(cè)為后一幀。與單向運(yùn)動估計不同,雙向運(yùn)動估計將內(nèi)插幀分塊,以內(nèi)插幀中宏塊為參考塊在前后兩參考幀中對稱地尋找匹配塊,從而簡單地避免了單向運(yùn)動估計容易產(chǎn)生的空洞和重疊問題。雙向運(yùn)動估計的匹配誤差函數(shù)有最小均方誤差(Mean Square Error, MSE)準(zhǔn)則、最小平均絕對差(Mean Absolute Difference, MAD)準(zhǔn)則及絕對誤差之和(Sum of AbsoluteDifference, SAD)準(zhǔn)則等,其中,SAD準(zhǔn)則因其實現(xiàn)簡單方便、利于實時性實現(xiàn)等優(yōu)點(diǎn)使用最多。SAD定義如下式所示
M M
SAD(i, /) = Z 21 丨 ( ) - + J, + j)|⑴
ts—1l h*1
其中,與/t+1( +^ + j)分別是當(dāng)前幀Z中位于(《, )和參考幀欠+1中位于(m + i,n+j)處的灰度值,(},j)為像素名(《, 3)與/f+1(/w+j, +刀之間的運(yùn)動矢量(位移矢量),IfxF為宏塊的尺寸。為更好地理解本發(fā)明,下面結(jié)合具體實施方式
及附圖對本發(fā)明進(jìn)行更為詳細(xì)的描述。在以下的描述中,當(dāng)已有技術(shù)的詳細(xì)描述會淡化本發(fā)明的主題內(nèi)容時,這些描述內(nèi)容將被忽略。這里,為敘述方便,定義搜索范圍內(nèi)需要計算的匹配誤差值的個數(shù)為“搜索點(diǎn)數(shù)”,相應(yīng)地,每對需要計算匹配誤差的匹配塊為一個“搜索點(diǎn)”??紤]到雙向運(yùn)動估計的特殊性,其塊尺寸大小和搜索范圍大小均要滿足一定要求。塊尺寸不能過小,塊尺寸過小容易導(dǎo)致估計不準(zhǔn)確;而對于搜索范圍則是不能太大,搜索范圍過大會導(dǎo)致圖像中某些細(xì)節(jié)被背景所取代。同時,對于本發(fā)明中的奇偶陣列結(jié)構(gòu),為滿足效率最高和數(shù)據(jù)復(fù)用,要滿足一個基本原則,即塊大小和搜索點(diǎn)數(shù)相同?;谝陨蟽牲c(diǎn)考慮,本發(fā)明的實施例以塊大小16 X 16、搜索范圍土 7為例,匹配誤差函數(shù)選擇SAD準(zhǔn)則。對于土 7的搜索范圍,搜索點(diǎn)數(shù)為1515。為了滿足陣列結(jié)構(gòu)的數(shù)據(jù)復(fù)用,將搜索窗擴(kuò)充I行I列以滿足搜索點(diǎn)數(shù)等于Ib 16的基本原則,對于多計算出來的SAD值不予采納即可。本發(fā)明的具體實施例采用了層次結(jié)構(gòu)的設(shè)計,主要分為頂層結(jié)構(gòu)、中間層結(jié)構(gòu)及
底層結(jié)構(gòu)三層。頂層結(jié)構(gòu)如圖3所示,由16個CALC單元20和I個比較器樹單元30構(gòu)成,每個CALC單元負(fù)責(zé)計算16個SAD值并輸出最小SAD值及其對應(yīng)運(yùn)動矢量,16個CALC單元計算出的16個最小SAD值再輸入到比較器樹單元30中,由比較器樹單元完成對這16個最小SAD值的比較得到最終的最小SAD值并輸出,同時輸出該SAD值對應(yīng)的運(yùn)動矢量作為運(yùn)動估計的結(jié)果,輸出結(jié)果存入數(shù)據(jù)存儲器50中。Sram存儲單元10將前后兩幀參考幀數(shù)據(jù)以條帶形式存儲,本發(fā)明實施例采用
11X 5個16 X 16塊大小的垂直條帶,然后將數(shù)據(jù)輸入到CALC單元內(nèi)部的移位寄存器中。比較器樹單元的功能是根據(jù)輸入的16個最小SAD數(shù)據(jù)再找出其中的最小值。在本發(fā)明實施例中首先將16個數(shù)據(jù)進(jìn)行鎖存,然后通過兩兩比較的方式得到最小值。需要說明的是,下面的中間層結(jié)構(gòu)中即CALC單元內(nèi)部的比較器樹(見圖4)的功能和實現(xiàn)方式與頂層結(jié)構(gòu)中的比較器樹30 (見圖3)的功能和實現(xiàn)方式完全相同。中間層結(jié)構(gòu)即CALC單元內(nèi)部結(jié)構(gòu),如圖4所示,每個CALC單元內(nèi)部由16個PE單元203及4組奇偶陣列移位寄存器201和一個比較器樹構(gòu)成,每個PE單元負(fù)責(zé)計算一個搜索點(diǎn)對應(yīng)匹配塊的SAD值,輸出到比較器樹,由比較器樹最終輸出最小SAD值及其對應(yīng)的運(yùn)動矢量。16個CALC單元,每個單元包括16個PE單元,則一共有256個PE單元正好對應(yīng)了 16 X I6的搜索點(diǎn)數(shù)。PE單元的輸入數(shù)據(jù)由4組并入并出移位寄存器201提供,每組移位寄存器包括16個IObit位寬的D觸發(fā)器,每一個elk的上升沿移位寄存器根據(jù)圖4中箭頭方向?qū)觸發(fā)器中的值傳入到下一個D觸發(fā)器,同時也將數(shù)據(jù)傳入到PE單元中。這樣,每一個時鐘周期內(nèi)PE單元內(nèi)的數(shù)據(jù)完成一次更新,經(jīng)過256個時鐘周期即可將一個匹配塊所需的16 X 16=256個像素數(shù)據(jù)輸入到PE單元中完成一次SAD值的計算。4組移位寄存器分別為前一幀偶數(shù)列數(shù)據(jù)寄存器fp_eVen (E(rE15),前一幀奇數(shù)列數(shù)據(jù)寄存器fp_odd(0(T015),后一幀偶數(shù)列數(shù)據(jù)寄存器fn_eVen(E(TE15),和后一幀奇數(shù)列數(shù)據(jù)寄存器fn_odd(0(T015)。這四組寄存器都接入到PE單元上,在任意一個時刻,PE單元根據(jù)輸入的控制信號muX_Sel信號選擇當(dāng)前輸入的值應(yīng)該是奇數(shù)列數(shù)據(jù)還是偶數(shù)列數(shù)據(jù)??刂菩盘杔atch_en用來控制PE單元將計算結(jié)果輸出,當(dāng)latch_en信號為低時,PE單元輸出呈高阻態(tài),當(dāng)latch_en信號為高時,PE單元輸出計算得到的SAD值。latch_en信號在系統(tǒng)初始化完成以后每隔256個時鐘周期拉高一次,將所有PE單元內(nèi)的SAD值輸出到比較器樹中。由于每個PE單元的SAD輸出端均要接入比較器,多個數(shù)據(jù)到達(dá)比較器輸入的時間 不容易同步,存在較大的時延,因此將PE單元輸出的SAD值先鎖存在一個寄存器中,然后再接入比較器,如圖4所示。鎖存在寄存器中的SAD值維持若干個時鐘clk,比較器樹在若干個elk之后,即數(shù)據(jù)穩(wěn)定后開始從寄存器中獲取SAD值,開始比較找出最小值。由于控制信號mux_sel和latch_en需要驅(qū)動16個處理單元,為了將長延時的路徑截斷,分別利用4個寄 存器“復(fù)制”每 個信號,每個寄存器分別驅(qū)動4個PE單元,從而增加了信號的驅(qū)動能力,如圖5所示。底層結(jié)構(gòu)則是PE單元的內(nèi)部結(jié)構(gòu),負(fù)責(zé)完成PE單元內(nèi)部的具體計算,如圖6所示。如前所述,在任意一個時刻,PE單元上輸入的四組數(shù)據(jù)只有兩組有效,另外兩組會被過濾掉,這個數(shù)據(jù)選擇的實現(xiàn)是通過PE單元內(nèi)部的2個數(shù)據(jù)選擇器MUX單元來實現(xiàn)的。為了突出關(guān)鍵信號,省略了模塊的時鐘信號elk和復(fù)位信號rst_n。當(dāng)muX_sel信號為高時,MUX單元選擇fp_even和fn_even,反之則選擇fp_odd和fn_odd。PE單元根據(jù)MUX單元輸出的fp、fn信號先計算其差值的絕對值即I fp-fn I,然后將該結(jié)果送入累加器acc中,將每個時鐘周期內(nèi)得到的|fp-fn|結(jié)果進(jìn)行累加。該過程即是SAD匹配準(zhǔn)則的實現(xiàn)過程。每隔256個時鐘周期,一個PE單元正好根據(jù)SAD匹配準(zhǔn)則完成了一個匹配塊所對應(yīng)的256個搜索點(diǎn)的計算,可以得到一個SAD值,此時latch_en信號正好會拉高將SAD計算結(jié)果輸出。數(shù)據(jù)從Sram存儲單元10中流入移位寄存器的順序如圖7所示。Sram按照垂直條帶的結(jié)構(gòu)存儲前后兩幀數(shù)據(jù),讀Sram的方式按照從上到下、從左到右的順序按列讀取數(shù)據(jù),每讀取搜索窗高度的數(shù)據(jù)后向右切換至下一列。為進(jìn)一步說明數(shù)據(jù)從Sram單元10中流入移位寄存器的順序,下面對本發(fā)明的陣列結(jié)構(gòu)原理做詳細(xì)闡述。本發(fā)明實施例采用的宏塊的大小為16 16,由于16X 16大小的宏塊不容易畫圖表不,這里以4 X 4塊大小為例進(jìn)行說明,如圖8所示,其處理過程與塊大小為16 X 16的基本一致。如前所述,在本發(fā)明實施例中為滿足效率最高和數(shù)據(jù)復(fù)用,要滿足一個基本原則,即塊大小和搜索點(diǎn)數(shù)相同?;谠撛瓌t,4 X 4塊大小的搜索范圍應(yīng)為_2 1,此時搜索點(diǎn)數(shù)也為4 X 4。為敘述方便,擬作以下規(guī)定
(I)以宏塊左上角的像素坐標(biāo)表示某個宏塊并以B開頭,像素點(diǎn)坐標(biāo)則以P開頭。例如,當(dāng)前宏塊B (2,2)表示左上角像素點(diǎn)P (2,2)到右下角像素點(diǎn)P (5,5)所圍成的4 X 4宏塊。(2)對于前一幀、后一幀及當(dāng)前幀(內(nèi)插幀)中的數(shù)據(jù)分別用FP、FN及FC做前綴。例如,當(dāng)前幀中的宏塊B (3,3)則用FC_B(3, 3)表示。假定當(dāng)前宏塊為圖8中標(biāo)明為“當(dāng)前宏塊”的加粗實線框所示(即FC_B(2,2)),當(dāng)前宏塊的搜索窗如圖8中長虛線框所示,為左上角像素點(diǎn)P (0,0)到右下角像素點(diǎn)P (6,6)所覆蓋的矩形區(qū)域,大小為7 7。當(dāng)前宏塊與其右側(cè)相鄰塊(B(2,6))的重疊搜索窗部分如圖8中短虛線框所示,即為本發(fā)明實施例的陣列結(jié)構(gòu)可以數(shù)據(jù)復(fù)用的部分。根據(jù)雙向運(yùn)動的對稱搜索原則,當(dāng)前宏塊FC_B(2,2)需要計算SAD值的對應(yīng)宏塊為前一幀中的FP_B (0,0)到FP_B (3,3)對應(yīng)后一幀中的FN_B (4,4)到FN_B (I, I),共16個對應(yīng)宏塊,產(chǎn)生的16個SAD值中的最小值對應(yīng)的運(yùn)動矢量即最終運(yùn)動矢量。這16個SAD值完全并行計算,每個PE單元負(fù)責(zé)其中一個SAD值的計算,而每個SAD值的計算需要一個匹配塊內(nèi)16個像素點(diǎn)的數(shù)據(jù),所以PE單元完成一次SAD值的計算需要16個時鐘周期。而在本發(fā)明實施例中塊大小為16 X 16,依此推算其完成一次SAD值的計算需要消耗256個時鐘周期。由于雙向運(yùn)動估計為對稱搜索,所以前后參考幀中對應(yīng)的搜索窗存在一個錯位。但前后兩幀中對應(yīng)的數(shù)據(jù)量仍是相同的,或者說搜索窗的大小是相同的。例如圖8中塊大小為4X4的情況,當(dāng)搜索范圍為H時,當(dāng)前宏塊FC_B(2,2)在前一幀中的搜索窗為左上角像素FP_P(0,0)到右下角像素FP_P(6,6)所構(gòu)成的矩形窗,而后一幀中的搜索窗則為左上角像素FP_P(1,1)到右下角像素FP_P(7,7)所構(gòu)成的矩形窗,存在錯位但大小相同。為了使數(shù)據(jù)能夠在移位寄存器中順序流入且中間沒有空寄存器,要將搜索窗擴(kuò)充一行一列以滿足陣列結(jié)構(gòu)的寄存器存儲形式,多擴(kuò)充出來的I行I列并不參與運(yùn)算。對于圖8中實例,即前一幀的搜索窗變?yōu)樽笊辖窍袼谾P_P (O,0)到右下角像素FP_P(7,7)所構(gòu)成的矩形窗,后一幀中的搜索窗擴(kuò)充為左上角像素FP_P(1,1)到右下角像素FP_P(8,8)所構(gòu)成的矩形窗。移位寄存器中的數(shù)據(jù)流向如圖4所示,后一幀的數(shù)據(jù)是相對前一幀數(shù)據(jù)反向流入的,前一幀的數(shù)據(jù)由左邊的E15和015流向EO和00,而后一幀的數(shù)據(jù)由右邊的E0、00流向E15和015。
在塊大小為4X4的前提下,當(dāng)開始計算FP_B (0,0)與FN_B (4,4)這對匹配塊所產(chǎn)生的SAD值時,按照SAD準(zhǔn)則,就是計算前一幀中左上角像素FP_P (0,0)至右下角像素FP_P (3,3)共16個像素點(diǎn)與后一幀中左上角像素FN_P (4,4)至右下角像素FN_P (7,7)共16個像素點(diǎn)對應(yīng)絕對差的累加和。像素數(shù)據(jù)掃描方式采用列掃描,即從上到下,從左到右。設(shè)初始時刻為to,在to時刻,前一幀的偶數(shù)列數(shù)據(jù)和后一幀的奇數(shù)列數(shù)據(jù)開始流入,在to時刻后的第4個時鐘開始前一幀的奇數(shù)列數(shù)據(jù)和后一幀的偶數(shù)列數(shù)據(jù)開始流入。設(shè)t0時刻后的第16個時鐘周期為tl時刻,此時前一幀的32個移位寄存器(奇偶各16個)中存入了 16個偶列數(shù)據(jù)和12個奇列數(shù)據(jù),此時PE單元可以開始SAD值的計算。而在t0到tl的這16個時鐘周期是初始化移位寄存器,PE單元不進(jìn)行計算。當(dāng)初始化完成后,以后的數(shù)據(jù)則可以完全流動起來不再需要額外的數(shù)據(jù)初始化時間。初始化完成后的PE陣列如圖9所示,寄存器中所裝載的數(shù)據(jù)見每個寄存器的上方或下方標(biāo)出的像素坐標(biāo)。在本發(fā)明實施例中,由于存在256個PE單元所以初始化時間為256個時鐘周期。在tl時刻的下一個時鐘的上升沿,存有FP_P(0,0)數(shù)據(jù)的寄存器將值打入到PE0,同時該寄存器的值更新為FP_P(1,0)數(shù)據(jù),即移位寄存器向右移動了一位。同時,F(xiàn)N_P(4,4)也被打入到PE0,即可以計算一個對應(yīng)像素點(diǎn)的差值了 ;存儲FN_P(4,4)的寄存器更新為FN_P(5,4),即移位寄存器向左移動了一位。當(dāng)tl時刻后的第二個的時鐘的上升沿時,F(xiàn)P_P(1,0)和FN_P(5,4)被打入到PE0,即又計算了宏塊FP_B(0,0)與FN_B(4,4)對應(yīng)像素點(diǎn)的一個差值,以此類推,經(jīng)過16個時鐘后,PEO單元就計算出了 FP_B(0,0)與FN_B(4,4)所產(chǎn)生的SAD值。同時,其他15個PE單元也并行地計算出了其他15個SAD值。值得注意的是,對圖8中塊大小為4X4的情況下,每隔4個時鐘周期,mux_sel信號會取反一次,作一次奇偶列數(shù)據(jù)切換,所以每一列的后4個數(shù)據(jù)其實不會用于計算,muX_Sel信號會自動切換到讀取另一列的前4個數(shù)據(jù),而過濾掉本列的后4個數(shù)據(jù)。在本發(fā)明實施例中,由于塊大小為16 16,所以PE單兀需要256個時鐘才能計算出一個SAD值,mux_sel也是16個時鐘反轉(zhuǎn)一次,但數(shù)據(jù)流動過程與該例一致。當(dāng)FC_B(2,2)計算完成SAD值后,開始計算下一個宏塊即FC_B(2,6)的SAD值計算。此時計算上一個宏塊所需的數(shù)據(jù)FP_P(0,4),F(xiàn)P_P(1,4),……,F(xiàn)P_P(6,4),F(xiàn)P_P(0, 5),……,F(xiàn)P_P(6,6)等(重疊區(qū)數(shù)據(jù))還留在移位寄存器內(nèi),如圖8中短虛線框所示,而這些數(shù)據(jù)也是計算下一個宏塊即FC_B(2,6)的SAD值所需要用到的數(shù)據(jù),即該結(jié)構(gòu)能夠滿足數(shù)據(jù)復(fù)用的需求,減少數(shù)據(jù)請求次數(shù),提高數(shù)據(jù)利用率。另外,本發(fā)明實施例可以通過配置使之適用于多種視頻格式和多種像素位寬,這樣就使得本發(fā)明實施例具有較高的靈活性和實用性。最后說明的是,以上實施例僅用以說明本發(fā)明的技術(shù)方案而非限制,盡管參照較佳實施例對本發(fā)明進(jìn)行了詳細(xì)說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可以對本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而不脫離本發(fā)明技術(shù)方案的宗旨和范圍,其均應(yīng)涵蓋在本 發(fā)明的權(quán)利要求范圍當(dāng)中。
權(quán)利要求
1.一種基于前后兩幀參考幀產(chǎn)生內(nèi)插幀的雙向運(yùn)動估計器,其特征在于,該運(yùn)動估計器包括 存儲單元,用于緩存前后兩幀參考幀中數(shù)據(jù); 匹配誤差計算單元,將內(nèi)插幀分為若干大小相同的宏塊,基于其中的每個宏塊設(shè)定搜索范圍,根據(jù)存儲單元發(fā)送過來的前后兩幀參考幀中的數(shù)據(jù)計算搜索范圍內(nèi)所有運(yùn)動矢量對應(yīng)的匹配誤差; 比較器樹單元,用于對搜索區(qū)域內(nèi)計算出的所有匹配誤差值的比較得出最小匹配誤差值并輸出該最小匹配誤差值及其對應(yīng)的運(yùn)動矢量; 數(shù)據(jù)存儲器,用于存儲比較器樹單元輸出的所有宏塊的最小匹配誤差值及其對應(yīng)的運(yùn)動矢量,所有的運(yùn)動矢量共同作為運(yùn)動估計的結(jié)果。
2.根據(jù)權(quán)利要求I所述的雙向運(yùn)動估計器,其特征在于所述匹配誤差計算單元由η個CALC單元構(gòu)成,η為大于等于I的自然數(shù),η的大小由運(yùn)動估計的搜索范圍決定,每個CALC單元由m個PE單元、奇偶陣列寄存器和一個比較器樹構(gòu)成,m的大小由運(yùn)動估計的塊大小決定,其中,奇偶陣列寄存器包括四組移位寄存器,分別為前一參考幀偶數(shù)列數(shù)據(jù)寄存器、前一參考幀奇數(shù)列數(shù)據(jù)寄存器、后一參考幀偶數(shù)列數(shù)據(jù)寄存器和后一參考幀奇數(shù)列數(shù)據(jù)寄存器,分別對應(yīng)前后兩幀參考幀中偶數(shù)列和奇數(shù)列數(shù)據(jù)的寄存;奇偶陣列寄存器將其存儲的數(shù)據(jù)對應(yīng)輸入m個PE單元,每個PE單元負(fù)責(zé)計算一個搜索點(diǎn)對應(yīng)匹配塊的匹配誤差值,每個CALC單元的m個匹配誤差值輸出到該CALC單元對應(yīng)的比較器樹,由該比較器樹比較并輸出最小匹配誤差值及其對應(yīng)的運(yùn)動矢量,該最小匹配誤差值及其對應(yīng)的運(yùn)動矢量即作為該CALC單元的輸出;n個CALC單元的輸出再輸入到比較器樹單元,得到最終的最小匹配誤差值及其對應(yīng)的運(yùn)動矢量。
3.根據(jù)權(quán)利要求2所述的雙向運(yùn)動估計器,其特征在于本雙向運(yùn)動估計器還包括控制單元,所述控制單元輸出控制信號到η個CALC單元中的每個PE單元,其中一路控制信號控制PE單元選擇當(dāng)前輸入的值應(yīng)該是奇數(shù)列數(shù)據(jù)還是偶數(shù)列數(shù)據(jù),另一路控制信號用來控制PE單元將計算結(jié)果輸出,當(dāng)該另一路控制信號為低時,PE單元輸出呈高阻態(tài),當(dāng)該另一路控制信號為高時,PE單元輸出計算得到的匹配誤差值。
4.根據(jù)權(quán)利要求3所述的雙向運(yùn)動估計器,其特征在于所述控制單元通過寄存器與PE單元連接,每個CALC單元中的m個PE單元分為相等的若干組,每個CALC單元中的寄存器的數(shù)量與PE單元分組數(shù)量一致并--對應(yīng),每一個寄存器與對應(yīng)PE單元分組中的所有PE單元連接,通過在寄存器中對信號進(jìn)行鎖存,增加信號的驅(qū)動能力和控制信號的同步。
5.根據(jù)權(quán)利要求4所述的雙向運(yùn)動估計器,其特征在于每個PE單元由兩個數(shù)據(jù)選擇器MUX、差值絕對值計算器和累加器acc構(gòu)成,前一參考幀偶數(shù)列數(shù)據(jù)寄存器和前一參考幀奇數(shù)列數(shù)據(jù)寄存器中的數(shù)據(jù)輸入到其中一個數(shù)據(jù)選擇器MUX,后一參考幀偶數(shù)列數(shù)據(jù)寄存器和后一參考幀奇數(shù)列數(shù)據(jù)寄存器的數(shù)據(jù)輸入到另一個數(shù)據(jù)選擇器MUX ;所述控制單元的一路控制信號同時接兩數(shù)據(jù)選擇器MUX ;兩數(shù)據(jù)選擇器MUX根據(jù)控制信號輸出某列寄存器的數(shù)據(jù)到差值絕對值計算器,差值絕對值計算器的輸出接累加器acc ;所述控制單元的另一路控制信號接累加器acc,控制累加器acc將累加后的匹配誤差值輸出,該輸出即為對應(yīng)PE單元的匹配誤差值。
6.根據(jù)權(quán)利要求I至5任一所述的雙向運(yùn)動估計器,其特征在于所述存儲單元以條帶形式緩存前后兩幀參考幀中數(shù)據(jù)并按列輸入到匹配誤差計算單元 。
全文摘要
本發(fā)明公開了一種基于前后兩幀參考幀產(chǎn)生內(nèi)插幀的雙向運(yùn)動估計器,它包括存儲單元,用于緩存前后兩幀參考幀中數(shù)據(jù);匹配誤差計算單元,將內(nèi)插幀分為若干大小相同的宏塊,基于其中的每個宏塊設(shè)定搜索范圍,計算搜索范圍內(nèi)所有運(yùn)動矢量對應(yīng)的匹配誤差;比較器樹單元,用于對搜索區(qū)域內(nèi)計算出的所有匹配誤差值的比較得出最小匹配誤差值并輸出該最小匹配誤差值及其對應(yīng)的運(yùn)動矢量;數(shù)據(jù)存儲器,用于存儲最小匹配誤差值及其對應(yīng)的運(yùn)動矢量。本發(fā)明能夠靈活地執(zhí)行全搜索雙向運(yùn)動估計算法,并且具有較高的執(zhí)行效率;可增加信號的驅(qū)動能力,降低信號的延時和控制信號同步;可以實現(xiàn)效率最高和數(shù)據(jù)復(fù)用;具有較高的靈活性和實用性。
文檔編號H04N7/26GK102630014SQ20121009731
公開日2012年8月8日 申請日期2012年4月5日 優(yōu)先權(quán)日2012年4月5日
發(fā)明者劉艷飛, 周洋生, 張莎, 徐子航, 曹鵬程, 甘平, 田逢春, 黃發(fā), 黃揚(yáng)帆 申請人:重慶大學(xué)