新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于FPGA實(shí)現(xiàn)視頻圖像的一種運(yùn)動(dòng)估計(jì)設(shè)計(jì)

基于FPGA實(shí)現(xiàn)視頻圖像的一種運(yùn)動(dòng)估計(jì)設(shè)計(jì)

作者: 時(shí)間:2017-06-05 來(lái)源:網(wǎng)絡(luò) 收藏

人類獲取的信息中70%來(lái)自于視覺(jué)。視頻信息具有直觀性、確切性和高效性等優(yōu)點(diǎn),其在多媒體信息中占有重要地位,成為了主導(dǎo)現(xiàn)代生活的主力軍。然而,視頻信息信息量太大,對(duì)信息存儲(chǔ)設(shè)備及通信網(wǎng)絡(luò)均提出了很高要求,嚴(yán)重阻礙了人們對(duì)有效信息的獲取和使用。而解決這個(gè)問(wèn)題的途徑就是視頻編碼即視頻壓縮。

目前,視頻編碼的主控制芯片主要有3種:ASIC、和DSP。ASIC和PGA屬于硬件設(shè)計(jì),DSP屬于軟件設(shè)計(jì)。從功能上說(shuō),全定制ASIC(Applieation Speeifie IntegratedCircuit)的功耗低、設(shè)計(jì)密度大并且能夠完成高速設(shè)計(jì),但同時(shí)其開發(fā)周期很長(zhǎng),投片成本很高而且不容易對(duì)解決方案進(jìn)行優(yōu)化,應(yīng)用范圍很窄;DSp(Digital Signal Proeessing)可以提供強(qiáng)大的數(shù)字信號(hào)處理能力,其可編程特色可以支持各種標(biāo)準(zhǔn)格式的視頻編解碼算法,但其處理速度低、硬件結(jié)構(gòu)不靈活;(Field Programmable Gato Airay)兼有了兩者的一些優(yōu)點(diǎn)如可編程、功耗低等,同時(shí)又具有設(shè)計(jì)周期短、開發(fā)成本低、處理速度快、設(shè)計(jì)靈活等特點(diǎn)。

1 原理

主要是針對(duì)幀間預(yù)測(cè),去除視頻幀在空間域和時(shí)間域的冗余度。塊匹配方法是目前編碼效率較高,普遍采用的一種編碼方法。首先,其要將當(dāng)前幀進(jìn)行劃分。長(zhǎng)期實(shí)踐表明,將當(dāng)前幀劃分為多個(gè)16x16的塊是比較合理的。其次,要根據(jù)劃分出的當(dāng)前塊的具體情況,以及所采用的搜索方法來(lái)決定搜索窗口的大小。最后,要在所確定的搜索窗口里面,依據(jù)某種塊匹配準(zhǔn)則找到當(dāng)前塊的匹配塊以及由匹配塊到當(dāng)前塊的運(yùn)動(dòng)矢量。圖1所示是塊匹配法的原理框圖,其中的箭頭就是由參考幀到當(dāng)前幀的運(yùn)動(dòng)矢量。

目前經(jīng)常采用的塊匹配準(zhǔn)則主要有歸一化互相關(guān)函數(shù)(NCCF),最小均方差(MSE)以及最小絕對(duì)值(MAD)。其中由于SAD準(zhǔn)則在算法上并不需要做任何的乘法運(yùn)算,可以減少很多的時(shí)間資源和硬件資源,從而使得SAD準(zhǔn)則成為了現(xiàn)在通常使用的匹配準(zhǔn)則。

其中A是參考幀中的搜索窗口區(qū)域,k-1和fk分別是當(dāng)前幀和參考幀中的像素點(diǎn)值,(x0,y0)是塊中的其中一個(gè)點(diǎn)。

本文引用地址:http://m.butianyuan.cn/article/201706/348984.htm

搜索采用的是三步搜索法,它是按照由粗到細(xì)的搜索理念,以一個(gè)像素為搜索精度,分為4,2,1,3個(gè)搜索步長(zhǎng)進(jìn)行搜索。一般選取原點(diǎn)作為起始點(diǎn),分別按照4,2,1,3個(gè)步長(zhǎng)組成9個(gè)點(diǎn)構(gòu)成的點(diǎn)群進(jìn)行匹配運(yùn)算,每次都是以誤差最小的塊為準(zhǔn)匹配塊,在第二和第三步搜索時(shí)分別以第一和第二步搜索到的準(zhǔn)匹配塊作為它們搜索的起始點(diǎn)。原理如圖2所示。


2 硬件實(shí)現(xiàn)

的原理圖如圖3所示。


2.1 地址計(jì)數(shù)器模塊

地址計(jì)數(shù)器主要是產(chǎn)生出可以在RRAM(參考?jí)K存儲(chǔ)器)和CRAM(當(dāng)前塊存儲(chǔ)器)中有目的地進(jìn)行尋址的地址信號(hào)。如圖4所示。

地址計(jì)數(shù)器模塊的設(shè)計(jì)與當(dāng)前塊和參考?jí)K的存儲(chǔ)有很大的關(guān)系。將數(shù)據(jù)存入當(dāng)前塊存儲(chǔ)器和參考?jí)K存儲(chǔ)器時(shí)的順序是由左到右,由下到上,即當(dāng)前塊存儲(chǔ)器是(-7,-7),(-6,-7),(-5,-7)……(8,-7),(-7,-6),(-6,-6)……(8,7),(8,8)。而參考?jí)K存儲(chǔ)器是(-15,-15),(-15,-14),(-15,-13)……(-15,16),(-14,-15),(-14,-14)……(16,15),(16,16)。則可知在尋址當(dāng)前塊存儲(chǔ)器時(shí)可以直接按照地址的由左到右,由下到上累加。其計(jì)算公式如式(2)所示:

C_addr=(j+7)×16+(i+8) (2)

對(duì)于參考?jí)K存儲(chǔ)器,它是一個(gè)32x32的數(shù)據(jù)塊,設(shè)計(jì)的目的是從其中取出符合三步搜索法的9個(gè)數(shù)據(jù)塊,當(dāng)然這九個(gè)數(shù)據(jù)塊都是16x16的,而且是以原點(diǎn)為中心組成的搜索點(diǎn)群。其計(jì)算公式如式(3)所示:

R_addr=(j+15)x32+(i+16) (3)

Clk是時(shí)鐘頻率信號(hào),當(dāng)它發(fā)生上升沿跳變時(shí)會(huì)使得產(chǎn)生的地址跳變到下一個(gè)新值。
Clr是清零信號(hào),當(dāng)它是低電平時(shí),地址計(jì)數(shù)器可以產(chǎn)生從零開始的連續(xù)地址。

由于,當(dāng)前塊存儲(chǔ)器只是一個(gè)16x16的RAM,其總的存儲(chǔ)空間是256,則可知使用八位地址就可以進(jìn)行尋址整個(gè)空間,即CRAM_ADDR是八位輸出信號(hào)。而參考?jí)K存儲(chǔ)器是一個(gè)32x32的的RAM,其總的存儲(chǔ)空間是1 024,則可知使用十位地址就可以進(jìn)行尋址整個(gè)空間,即RRAM_ADDR是十位輸出信號(hào)。

2.2 參考?jí)K分頻器模塊

參考?jí)K分頻器模塊主要是將從參考?jí)K存儲(chǔ)器中輸出的信號(hào)經(jīng)過(guò)分頻處理后,存儲(chǔ)在9個(gè)獨(dú)立的單元,以便后續(xù)的處理,如圖5所示。

由參考?jí)K輸出的信號(hào)是256x9個(gè)連續(xù)的像素值,而當(dāng)前塊輸出的信號(hào)只是256個(gè)連續(xù)信號(hào)在連續(xù)時(shí)鐘驅(qū)動(dòng)下的九次重復(fù),這樣就很難在256x9個(gè)時(shí)鐘周期內(nèi)完成對(duì)9個(gè)匹配塊的處理,更難在256個(gè)時(shí)鐘周期內(nèi)完成。因此要通過(guò)參考?jí)K分頻器將參考?jí)K存儲(chǔ)器連續(xù)輸出的256x9個(gè)像素點(diǎn)值進(jìn)行九次分頻,存儲(chǔ)在9個(gè)RAM單元之中。這樣當(dāng)下一個(gè)時(shí)鐘周期的上升沿到來(lái)時(shí),這9個(gè)RAM可以同時(shí)輸出信號(hào),并在接下來(lái)的255個(gè)時(shí)鐘周期之后將里面存儲(chǔ)的所有信號(hào)輸出,而且輸出的這些信號(hào)相互之間是完全獨(dú)立的。同時(shí),為了使后面的各模塊能夠很好的進(jìn)行,參考?jí)K分頻器模塊還引入了當(dāng)前塊的像素值信號(hào),使得存入9個(gè)RAM單元的信號(hào)不僅僅是參考?jí)K的像素點(diǎn)值,還有當(dāng)前塊的像素點(diǎn)值以便保證后面的減法器可以正常工作。

2.3 減法器模塊

減法器模塊主要是完成當(dāng)前塊像素點(diǎn)值和參考?jí)K像素點(diǎn)值之間的作差,并將做差結(jié)果進(jìn)行取絕對(duì)值運(yùn)算。本減法器是采用9個(gè)LPM(參數(shù)化模塊庫(kù))元件庫(kù)中的減法器合成的。而LPM中的減法器將被減數(shù)和減數(shù)明確地分開了。因此,在將當(dāng)前塊和參考?jí)K像素點(diǎn)值輸入到減法器之前先對(duì)二者進(jìn)行比較,再分別輸入到減法器的被減數(shù)和減數(shù)端口。這樣當(dāng)減法器設(shè)置為無(wú)符號(hào)數(shù)運(yùn)算時(shí),輸出結(jié)果就相當(dāng)于取了絕對(duì)值的差值。從時(shí)鐘周期的角度發(fā)現(xiàn),整個(gè)減法器在256x9個(gè)時(shí)鐘周期內(nèi)是都在運(yùn)行的,但是所要采集的有用信號(hào)僅僅是9個(gè)獨(dú)立的256個(gè)時(shí)鐘周期,即每個(gè)減法器僅僅使用256個(gè)時(shí)鐘周期的有用信號(hào),其他時(shí)鐘周期內(nèi)的信號(hào)對(duì)于其他減法器是有用信號(hào),但是對(duì)于本減法器卻是干擾信號(hào),必須要消除。這就是在參考?jí)K分頻器里面引入當(dāng)前塊信息的原因。

2.4 累加比較器模塊

累加比較器主要是完成對(duì)每個(gè)減法器輸出的取過(guò)絕對(duì)值的差值信號(hào)的累加,并將累加結(jié)果進(jìn)行比較輸出最佳運(yùn)動(dòng)矢量。累加比較器的設(shè)計(jì)和減法器的設(shè)計(jì)有很大關(guān)系,除了在上述的取絕對(duì)值方面二者相互要求比較嚴(yán)格之外,在時(shí)序方面,二者也有很大關(guān)聯(lián)。9個(gè)減法器在參考?jí)K分頻器模塊的作用下,工作于所有的時(shí)鐘周期里面,而累加比較器則是以減法器輸出的信號(hào)作為累加原材料的,這就使得累加比較器也必須從時(shí)鐘的起始點(diǎn)就開始工作。確定運(yùn)動(dòng)矢量的標(biāo)準(zhǔn)是SAD最小值。也就是要通過(guò)比較9個(gè)累加結(jié)果,確定出最小值,并由地址計(jì)數(shù)器模塊找到這個(gè)最小值所對(duì)應(yīng)的運(yùn)動(dòng)矢量。

2.5 整體方案

整體方案主要是將三步搜索法中的三步分開進(jìn)行。在外部輸入信號(hào)的控制下,先輸入第一步搜索的地址計(jì)算控制因子,使得尋址范圍是在步長(zhǎng)為4的9個(gè)數(shù)據(jù)塊群里面,第一步搜索完成時(shí)將第一步搜索到的最佳運(yùn)動(dòng)矢量輸入到第二步的搜索中,完成機(jī)制和第一步唯一的區(qū)別就是地址計(jì)算和產(chǎn)生的尋址范圍不同,這樣一直到完成第三步搜索時(shí),將第三步搜索得到的最佳運(yùn)動(dòng)矢量作為當(dāng)前塊在這個(gè)搜索窗口里面的最佳運(yùn)動(dòng)矢量。

3 實(shí)驗(yàn)結(jié)果與分析

本設(shè)計(jì)采用Stratix II系列的EP2S15F484C3器件進(jìn)行仿真,仿真結(jié)果如圖6所示。

由仿真結(jié)果可知整個(gè)搜索過(guò)程完全符合時(shí)序要求,總的邏輯資源占用率是27%。組合查找表使用了2 169個(gè),占總數(shù)量12 480的17%。專用邏輯寄存器使用了2 855個(gè),占總數(shù)量12 480的23%。而用的總的寄存器數(shù)也就是2 855。使用了180個(gè)片上引腳,占總個(gè)數(shù)的52%。使用了86 088比特的塊存儲(chǔ)器單元,占總的快存儲(chǔ)器數(shù)量的21%。搜索到的最佳運(yùn)動(dòng)矢量(0,-7),由前兩步的搜索結(jié)果可知其完全正確。

4 結(jié)束語(yǔ)

本文中采用設(shè)計(jì)的運(yùn)動(dòng)估計(jì)方案無(wú)論在搜索速度,資源利用還是時(shí)序控制上都具有一定的優(yōu)越性,可以大大提高設(shè)計(jì)的性價(jià)比。另外,隨著半導(dǎo)體工藝的不斷進(jìn)步,F(xiàn)PGA的性價(jià)比將不斷提高,將使得運(yùn)動(dòng)估計(jì)乃至視頻編碼的技術(shù)不斷提高。



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉