蔣 林 馮 茹
(西安科技大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 陜西 西安 710121)
由于多視點(diǎn)視頻的數(shù)據(jù)量呈現(xiàn)爆炸式增長,這對(duì)3D-HEVC等三維編碼技術(shù)提出了極高的要求。隨著視頻編碼技術(shù)的不斷發(fā)展,幀間預(yù)測技術(shù)經(jīng)歷了不斷提升與改進(jìn)的過程。視差估計(jì)是3D-HEVC中計(jì)算復(fù)雜度較高的模塊,其編碼時(shí)間占到整個(gè)編碼時(shí)間的60%。視差估計(jì)算法本質(zhì)就是用于尋找當(dāng)前編碼塊或者當(dāng)前預(yù)測塊在不同視點(diǎn)上對(duì)應(yīng)圖像中的最佳匹配塊。也就是按照某種數(shù)學(xué)準(zhǔn)則在左右圖像上尋找匹配點(diǎn)或塊的過程,就是一個(gè)圖像匹配的過程。獲取的視差矢量就是兩個(gè)對(duì)應(yīng)點(diǎn)或塊之間的位置差異,它代表了左右圖像在空域上和時(shí)域上的冗余信息。直接根據(jù)深度圖推導(dǎo)視差矢量(Disparity Vector,DV),提出基于深度圖的視差矢量[1](Depth Map based Disparity Vector,DMDV),計(jì)算復(fù)雜度高,內(nèi)存占用量大。Chen等[2]提出相鄰塊視差矢量(Disparity Vector From Neighboring Blocks,NBDV)。NBDV算法的基本思想是利用從另一視點(diǎn)預(yù)測得到的、與當(dāng)前編碼塊位于同一編碼位置的相鄰塊的時(shí)空運(yùn)動(dòng)信息,導(dǎo)出當(dāng)前編碼塊的視差矢量。為了提高獲取視差矢量的計(jì)算效率,很多學(xué)者對(duì)此進(jìn)行研究,提出多種解決方案。
文獻(xiàn)[3]提出基于參考?jí)K與當(dāng)前編碼塊的空間相關(guān)性和時(shí)間相關(guān)性,來獲取當(dāng)前編碼塊的視差矢量,并且對(duì)基于深度圖的視差矢量獲取提出改進(jìn),從而有效節(jié)省編碼比特?cái)?shù),提高時(shí)效性。文獻(xiàn)[2]計(jì)算當(dāng)前編碼塊的視差矢量,不使用深度圖獲取,而是在紋理圖編碼后,利用當(dāng)前編碼塊在時(shí)域上和空域上的相關(guān)性,來預(yù)測當(dāng)前塊的視差矢量,來降低編碼冗余。文獻(xiàn)[4]提出了一種可擴(kuò)展的大規(guī)模并行快速搜索算法,降低運(yùn)動(dòng)估計(jì)ME和視差估計(jì)DE在塊匹配過程中的計(jì)算成本,相比于現(xiàn)有的全搜索和快速搜索,在計(jì)算復(fù)雜度方面分別提高245.8倍和8.4倍。文獻(xiàn)[5]提出運(yùn)動(dòng)和視差矢量早期確定算法,以降低3D-HEVC計(jì)算復(fù)雜度,采用自適應(yīng)優(yōu)化算法來選擇有效的視圖間視差矢量(DV)候選。文獻(xiàn)[6]提出了一種基于單向視差搜索算法的三維高效視頻編碼(3D-HEVC)視差估計(jì)(Disparity Estimation,DE)的硬件設(shè)計(jì)。該架構(gòu)被用于處理四個(gè)方形預(yù)測單元(PU)尺寸,而不是使用所有24種可能的PU尺寸。文獻(xiàn)[7]提出搜索所有時(shí)域和空域相鄰塊的DV,所有有用的DV被構(gòu)成一個(gè)候選列表,刪除列表中的冗余的DV,求出剩余DV的平均值作為最后的NBDV,提高獲取DV的速率。為解決PU無法并行處理問題,文獻(xiàn)[8]提出一種并行的處理方案。在此基礎(chǔ)上,文獻(xiàn)[9]提出一種以編碼單元(CU)為基礎(chǔ)的編碼單元去執(zhí)行DV的推導(dǎo),不僅節(jié)省相鄰塊,還使多個(gè)PU進(jìn)行并行處理。
綜上所述,針對(duì)3D-HEVC視差估計(jì)算法計(jì)算復(fù)雜度高的問題,主要通過三方面來進(jìn)行優(yōu)化:一是從搜索算法并行化的角度來優(yōu)化;二是通過四叉樹結(jié)構(gòu)進(jìn)行快速的模式?jīng)Q策方法來減少編碼冗余;三是通過邊緣信息加快對(duì)編碼塊的搜索。3D-HEVC測試模型中無論是紋理視頻還是深度視頻幀間預(yù)測算法都是串行執(zhí)行的,因此,減少視差估計(jì)過程中的計(jì)算復(fù)雜度,始終是提升3D-HEVC編碼效率的關(guān)鍵。研究視差估計(jì)算法的并行性對(duì)于整體編碼效率的提升起著至關(guān)重要的作用。
NBDV通過每一個(gè)當(dāng)前CU的空域時(shí)域相鄰塊的運(yùn)動(dòng)矢量或者運(yùn)動(dòng)補(bǔ)償預(yù)測(MCP)得到的視差矢量。這種原理與Merge/AMVP很相似,空域和時(shí)域相鄰塊按照所給順序進(jìn)行搜索,第一個(gè)可用的DV作為最后的NBDV。最初搜索相鄰塊的順序是空域DCP塊——時(shí)域DCP塊。
如圖1所示,當(dāng)前編碼單元有5個(gè)相鄰塊,分別記作A0、A1、B0、B1、B2。搜索視差矢量按照A1、B1、B0、A0、B2的順序?qū)γ恳粋€(gè)塊進(jìn)行搜索,如果找到第一個(gè)可用的視差矢量(DV),就認(rèn)作為當(dāng)前編碼單元的NBDV。
圖1 空域相鄰參考?jí)K
在時(shí)域上進(jìn)行視差矢量搜索時(shí),由于候選幀數(shù)目龐雜,并且空域相鄰塊DV的準(zhǔn)確性不如時(shí)域相鄰塊DV,因此首先搜索時(shí)域DCP塊,其次是空域DCP塊,最后搜索空域DV-MCP,搜索步驟較為煩瑣。根據(jù)文獻(xiàn)[10]提到減少搜索塊的方法,從每個(gè)候選幀圖像搜索18個(gè)塊變?yōu)楝F(xiàn)在只搜索兩個(gè)塊,即中間的塊(T1)和右下角的塊(T0),時(shí)域塊的搜索順序?yàn)門1-T0,如圖2所示。
圖2 時(shí)域相鄰參考?jí)K
基于相鄰塊的視差矢量預(yù)測算法是將一幀圖像分為互不重疊的許多宏塊,并且認(rèn)為一個(gè)塊內(nèi)所有的像素點(diǎn)的相對(duì)位移是相同的,其目的是為當(dāng)前視點(diǎn)的一幀圖像的每個(gè)塊查找最佳匹配塊,從而在其參考視點(diǎn)的參考幀搜索到最佳匹配塊,圖3為相鄰塊視差矢量的塊匹配示意圖。
圖3 視差估計(jì)塊匹配示意圖
通常選擇SAD作為匹配準(zhǔn)則,若塊大小為N×N,第n幀中左上角坐標(biāo)(x,y)的塊與第n-1幀中左上角坐標(biāo)(x+a,y+b)的塊之間的SAD如式(1)所示。
fn-1(x+a+i,y+b+j)|
(1)
式中:fn(x+i,y+j)表示第n幀中坐標(biāo)為(x+i,y+j)%處的像素值,fn-1(x+a+i,y+b+j)表示第n-1幀中坐標(biāo)為(x+a+i,y+b+j)處的像素值。(a,b)表示視差矢量DV,即當(dāng)前塊到參考?jí)K之間的相對(duì)位移。
視差估計(jì)中最耗時(shí)的模塊是塊匹配操作,在進(jìn)行塊匹配操作時(shí),在時(shí)域上和空域上分別搜索與當(dāng)前編碼塊相鄰的塊,判斷其相鄰塊與當(dāng)前編碼塊的SAD值,并選擇最小SAD值,將此SAD值及其對(duì)應(yīng)塊存儲(chǔ),計(jì)算視差矢量。由于搜索的相鄰塊數(shù)目煩瑣,且對(duì)于視差估計(jì)算法中數(shù)據(jù)計(jì)算密集,訪存量較大,全局?jǐn)?shù)據(jù)較少,像素之間處理相互獨(dú)立,塊與塊之間的處理也相互獨(dú)立,因此存在較大的并行性。
塊匹配已經(jīng)成為視差估計(jì)算法中最廣泛使用的方法,其中SAD值計(jì)算模塊占據(jù)了大量的編碼時(shí)間,塊匹配的基本思想就是將每一幀視頻劃分為固定大小的塊,并且基于某種搜索規(guī)則和匹配標(biāo)準(zhǔn),通過在搜索窗口的塊匹配來估計(jì)和當(dāng)前塊最相似的塊,并且通過塊的相對(duì)位移來獲得視差矢量。因此,視差估計(jì)的準(zhǔn)確性以及運(yùn)算速率直接影響到編碼的質(zhì)量和性能??紤]到搜索過程中只關(guān)注當(dāng)前編碼塊的結(jié)果,不需要參考其他塊匹配的結(jié)果,所以可以同時(shí)進(jìn)行幾個(gè)塊的匹配操作,并且這幾個(gè)塊同時(shí)執(zhí)行相同的處理過程,因此,對(duì)于視差估計(jì)算法的并行性分析尤為關(guān)鍵。從軟件的角度,并行的方式分為任務(wù)級(jí)并行和數(shù)據(jù)級(jí)并行,任務(wù)級(jí)并行是指在不同的時(shí)間內(nèi)并行完成不同的任務(wù),因?yàn)槿蝿?wù)的數(shù)量是一定的,所以任務(wù)級(jí)并行是不可擴(kuò)展的,本文主要從數(shù)據(jù)級(jí)并行的角度來對(duì)算法的宏塊進(jìn)行并行。在查找最佳塊匹配過程中主要是SAD值計(jì)算和加載參考?jí)K兩個(gè)模塊。
SAD值計(jì)算模塊主要是由當(dāng)前編碼塊存儲(chǔ)器、參考?jí)K存儲(chǔ)器、預(yù)測單元,以及存儲(chǔ)視差矢量和SAD值的寄存器這幾部分組成,將一個(gè)預(yù)測單元塊分成許多比如8×8的小塊,這些小塊可以并行的進(jìn)行處理,沒有數(shù)據(jù)相關(guān)性,最后將所有預(yù)測單元得出的數(shù)據(jù)合并并且存儲(chǔ)其視差矢量和SAD值。加載參考?jí)K主要是從搜索窗中加載并下發(fā)不同的參考?jí)K,在加載和下發(fā)參考?jí)K后進(jìn)行數(shù)據(jù)的更新。在加載和下發(fā)參考?jí)K數(shù)據(jù)過程中,可以同時(shí)向不同的PE下發(fā)數(shù)據(jù),這樣每個(gè)PE可以并行地處理參考?jí)K數(shù)據(jù),減少時(shí)間和資源消耗。
3D-HEVC編碼過程中,一幀視頻圖像由多個(gè)或一個(gè)slice組成,而一個(gè)slice又可以被分割為多個(gè)編碼樹單元(Coding Tree Unit,CTU),CTU的尺寸大小為8×8到64×64。編碼效率取決于CU尺寸的大小以及劃分的深度,尺寸越大,分割的深度越大,編碼效率也就越高。CU攜帶著編碼塊的運(yùn)動(dòng)信息,大小范圍從8×8到64×64,其中塊劃分方式分別為:64×64塊深度為0、32×32塊深度為1、16×16塊深度為2、8×8塊深度為3。為了對(duì)編碼過程中CU塊的尺寸大小分布情況解釋更加清晰,對(duì)3D-HEVC參考軟件(HTM)中幾種測試序列進(jìn)行了分析統(tǒng)計(jì)。圖4是不同深度下幾種測試序列分布情況。這幾種測試序列Depth為0即塊大小為8×8占比最為明顯,均超過總分布的60%,因此,論文中選擇8×8塊進(jìn)行視差估計(jì)并行實(shí)現(xiàn)。
圖4 CU不同尺寸的分布情況
本文提出的具體并行設(shè)計(jì)思想:首先,讀入當(dāng)前編碼塊和搜索窗數(shù)據(jù);其次,同時(shí)在空域上和時(shí)域上搜索相鄰塊獲取視差矢量,時(shí)域相鄰塊順序?yàn)門0、T1,在其中選擇與當(dāng)前編碼塊最匹配的塊,空域相鄰塊順序?yàn)锳1、B1、B0、A0和B2,在其中選擇與當(dāng)前編碼塊最匹配的塊;最后通過比較這兩個(gè)最優(yōu)塊候選塊選出一個(gè)最匹配塊,計(jì)算視差矢量,完成一個(gè)塊的視差估計(jì),即當(dāng)前塊的NBDV過程結(jié)束。圖5是視差估計(jì)算法流程圖,并行化過程如下:
圖5 視差估計(jì)算法流程
1) 從當(dāng)前幀中按照CTU的執(zhí)行順序依次處理8×8的塊,從參考?jí)K中取對(duì)應(yīng)搜索窗大小塊,將數(shù)據(jù)準(zhǔn)備好,分配到不同的PE。
2) 同時(shí)調(diào)度相關(guān)PE,在時(shí)域相鄰塊T0和T1和空域相鄰塊A1、B1、B0、A0和B2同時(shí)進(jìn)行搜索,計(jì)算各自的SAD值,進(jìn)行塊匹配操作。在這個(gè)過程中,考慮到數(shù)據(jù)之間存在相關(guān)性,因此在進(jìn)行塊匹配之前就已經(jīng)將當(dāng)前塊和搜索窗數(shù)據(jù)分配在不同PE,使得不同PE可以同時(shí)操作,并行計(jì)算各自的SAD值。
3) 根據(jù)上一步計(jì)算得到的SAD值,分別計(jì)算空域和時(shí)域相鄰塊的最優(yōu)SAD值,并選取各自最小的SAD值,分別得到最優(yōu)時(shí)域和空域相鄰塊。
4) 根據(jù)上一步得到的最小空域相鄰塊SAD值和時(shí)域相鄰塊SAD值進(jìn)行比較,從這兩個(gè)SAD值中得到最優(yōu)的SAD,得到最匹配的塊,由此得到視差矢量,完成一個(gè)塊的視差估計(jì)。
結(jié)合3D-HEVC視頻編碼標(biāo)準(zhǔn)的特點(diǎn),本文采用一種可編程可重構(gòu)的視頻陣列處理器進(jìn)行并行化設(shè)計(jì)。視頻陣列處理器[11]由1 024個(gè)輕核處理單元(PE),通過鄰接互連組成32×32的陣列處理器,其中每16個(gè)PE組成一個(gè)處理器簇(PEG)。采用全局片上網(wǎng)絡(luò)局部共享存儲(chǔ)的通信機(jī)制,即簇內(nèi)通過鄰接互連和共享存儲(chǔ)進(jìn)行數(shù)據(jù)交互,簇間通過片上網(wǎng)絡(luò)進(jìn)行遠(yuǎn)距離通信,圖6所示為視頻陣列處理器的硬件結(jié)構(gòu),包括數(shù)據(jù)輸入存儲(chǔ)、數(shù)據(jù)輸出存儲(chǔ)、全局控制器、陣列處理器和指令存儲(chǔ)器五部分組成。全局控制器是可重構(gòu)機(jī)制的核心,主要是對(duì)PE上計(jì)算資源的管理與控制,上層接入主機(jī),下層是PE組成的陣列處理器。在主機(jī)接口與陣列處理器之間形成一個(gè)層次化編程網(wǎng)絡(luò),它可以對(duì)陣列資源進(jìn)行合理的分配與調(diào)度,實(shí)現(xiàn)多種模式的靈活切換。在每個(gè)處理單元中都有一個(gè)指令存儲(chǔ)和數(shù)據(jù)存儲(chǔ),因?yàn)樯婕暗絻煞N模式的切換,將指令存儲(chǔ)分為兩部分,0~511號(hào)地址配置為0,512~1023號(hào)地址配置為1,并通過全局控制器發(fā)出的指令讓對(duì)應(yīng)的PE執(zhí)行相應(yīng)的操作,從而達(dá)到兩種配置間的任意切換。指令下發(fā)網(wǎng)絡(luò)是動(dòng)態(tài)重構(gòu)機(jī)制的核心模塊,論文主要用到的是指令下發(fā)模塊中的指令下發(fā)和指令廣播操作。首先將指令存儲(chǔ)在每個(gè)PE自帶的指令存儲(chǔ)中,再通過指令廣播的方式啟動(dòng)需要進(jìn)行操作的PE。指令下發(fā)操作的作用是將全局指令存儲(chǔ)器中的指令下發(fā)到指定的PE。
圖6 可重構(gòu)機(jī)制的視差估計(jì)算法的硬件結(jié)構(gòu)
在視差估計(jì)算法中,由于搜索當(dāng)前編碼塊在空域和時(shí)域上相鄰塊數(shù)目較多,搜索順序復(fù)雜,耗時(shí)較長,且算法效率低下,因此本文采用數(shù)據(jù)并行的思想,在同一時(shí)間處理時(shí)域上和空域上塊數(shù)據(jù),縮短數(shù)據(jù)讀取時(shí)間和計(jì)算時(shí)間從而提高算法的計(jì)算效率。這里以8×8塊為例,給出算法的映射圖如圖7所示。
圖7 視差估計(jì)算法并行映射圖
具體的操作步驟如下:
Step1原始數(shù)據(jù)和參考數(shù)據(jù)加載。當(dāng)前幀的數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)輸入存儲(chǔ)(Data Input Memory,DIM)中,參考幀數(shù)據(jù)存儲(chǔ)在外部數(shù)據(jù)輸出存儲(chǔ)(Data Output Memory,DOM)的。PE00與DIM相連,將外部存儲(chǔ)中原始的一幀圖像分為8×8的塊送給PE00,然后PE00在進(jìn)行數(shù)據(jù)分配,分別下發(fā)給PE01、PE02、PE11、PE12、PE13、PE21和PE22;PE10與DOM相連,將外部存儲(chǔ)中參考幀圖像分為16×16塊送給PE10,然后PE10再進(jìn)行數(shù)據(jù)分配,分別下發(fā)給PE01、PE02、PE11、PE12、PE13、PE21和PE22。為了提高數(shù)據(jù)傳輸速率,不需要等待PE00下發(fā)完數(shù)據(jù)后PE10再下發(fā)數(shù)據(jù),只要從DOM取到數(shù)據(jù),便可下發(fā)。
Step2塊匹配操作。各個(gè)PE接收到數(shù)據(jù)之后,PE01、PE02、PE11、PE12、PE13、PE21、PE22開始并行地進(jìn)行SAD值計(jì)算,選取SAD值最優(yōu)的塊,在這個(gè)過程中,計(jì)算并不存在數(shù)據(jù)相關(guān)性,所以塊匹配操作可以在7個(gè)PE中同時(shí)進(jìn)行。塊匹配計(jì)算完成后,時(shí)域上最匹配的塊和最優(yōu)SAD值寄存在PE03,空域 上最匹配的塊和最優(yōu)SAD值寄存在PE23。
Step3獲取視差矢量。通過比較在PE03寄存的時(shí)域上最優(yōu)SAD值和在PE23寄存的空域上最優(yōu)SAD值,得出與當(dāng)前編碼塊最匹配的塊,并計(jì)算出視差矢量,完成視差估計(jì)。
為了驗(yàn)證視差估計(jì)算法并行實(shí)現(xiàn)方案的可行性,論文基于BEECube公司BEE4開發(fā)平臺(tái)搭建的視頻陣列處理器原型系統(tǒng)進(jìn)行驗(yàn)證和測試。首先,根據(jù)視頻陣列處理器提出的匯編指令進(jìn)行算法編譯,接著在指令翻譯器上將匯編代碼指令翻譯成二進(jìn)制送給硬件結(jié)構(gòu);然后,通過QuestaSim 10.1d進(jìn)行功能仿真,可以通過查看信號(hào)如目標(biāo)寄存器號(hào)、寄存器的值和內(nèi)部數(shù)據(jù)存儲(chǔ)器的值驗(yàn)證仿真結(jié)果是否正確。從而在所搭建的可編程可重構(gòu)視頻整列處理器DPR-CODEC上進(jìn)行視差估計(jì)算法的全面驗(yàn)證和測試。在Primeton BPS開發(fā)環(huán)境下對(duì)硬件平臺(tái)進(jìn)行邏輯綜合,基于BEE4開發(fā)平臺(tái)上的XC6VLX550T FPGA進(jìn)行硬件測試。表1是在算法驗(yàn)證時(shí)需要的環(huán)境及所使用工具。
表1 算法驗(yàn)證測試環(huán)境和所使用工具
視差估計(jì)算法中塊匹配過程采用全搜索算法進(jìn)行匹配,因此不會(huì)降低圖像的編碼質(zhì)量,算法執(zhí)行過程中,可以分為四個(gè)模塊,即原始數(shù)據(jù)的加載以及下發(fā)、參考數(shù)據(jù)加載、參考數(shù)據(jù)下發(fā)和SAD值計(jì)算模塊。通過串行和并行兩種實(shí)現(xiàn)方案,對(duì)算法各模塊運(yùn)行時(shí)間作對(duì)比分析,串行實(shí)現(xiàn)方案是將四個(gè)模塊在視頻陣列處理器的一個(gè)PE單獨(dú)操作,并分別記錄每一個(gè)模塊的運(yùn)行時(shí)間。并行實(shí)現(xiàn)方案使用視頻陣列處理器中的12個(gè)PE來執(zhí)行程序,模塊運(yùn)行的時(shí)間通過QuestaSim軟件進(jìn)行功能仿真得到。在算法執(zhí)行過程中,記錄每一個(gè)模塊開始到結(jié)束的時(shí)間來計(jì)算運(yùn)行時(shí)間。視差估計(jì)算法各模塊進(jìn)行串行和并行的運(yùn)行時(shí)間和如表2所示。根據(jù)所統(tǒng)計(jì)的時(shí)間可以看出,本文所設(shè)計(jì)的方案主要在參考數(shù)據(jù)下發(fā)以及SAD值計(jì)算的過程中提升了并行性,減少了編碼時(shí)間。兩種塊方式的匹配過程參考數(shù)據(jù)的下發(fā)和SAD值計(jì)算模塊加速比超過了4。并行性提升最多的模塊為參考數(shù)據(jù)的下發(fā)和SAD值計(jì)算模塊,加速比分別為4.9和4.37。因?yàn)楸痉桨冈跀?shù)據(jù)下發(fā)的過程中,當(dāng)PE10的參考?jí)K數(shù)據(jù)存完后,給其握手信號(hào),其他PE便開始?jí)K匹配操作,充分利用空閑PE的資源,減少PE等待時(shí)間。而原始數(shù)據(jù)和參考數(shù)據(jù)的加載過程中加速比不高,因?yàn)閿?shù)據(jù)按照地址順序存儲(chǔ),并行性提升不大。
表2 視差估計(jì)算法各模塊運(yùn)行時(shí)間
文獻(xiàn)[12]選出當(dāng)前編碼單元的空域、時(shí)域相鄰塊所有最優(yōu)視差矢量重新建立NBDV候選列表,根據(jù)列表中DV的數(shù)量,結(jié)合率失真優(yōu)化算法推導(dǎo)視差矢量來減少編碼時(shí)間,本文是通過并行處理當(dāng)前編碼單元的相鄰候選塊來提高算法速率。與文獻(xiàn)[12]相比,本文對(duì)測試序列Newspaper進(jìn)行視差估計(jì)處理的編碼時(shí)間減少最多,減少了29.67%,相比文獻(xiàn)提升了15%,具體結(jié)果如圖8所示。
圖8 與文獻(xiàn)[12]編碼時(shí)間百分比對(duì)比
視差估計(jì)算法在Primeton BPS開發(fā)環(huán)境下對(duì)硬件平臺(tái)進(jìn)行綜合,再通過BEE4開發(fā)平臺(tái)XC6VLX550T FPGA對(duì)設(shè)計(jì)進(jìn)行綜合。表3所示為8×8編碼塊綜合結(jié)果,從工作頻率、資源占用率分別進(jìn)行比較。文獻(xiàn)[13]工作效率比本文低,且資源占用比本文大;文獻(xiàn)[14]提出了稱為MCADSW視差估計(jì)算法,并且提出相應(yīng)的VLSI體系結(jié)構(gòu),其工作頻率遠(yuǎn)低于本文,且資源占用率很大;文獻(xiàn)[15]提出了一種面向硬件的自適應(yīng)窗口大小視差估計(jì)(T-AWDE)算法和第一個(gè)實(shí)時(shí)的三目視差估計(jì)(DE)硬件,工作效率高于本文,但是資源占用率也明顯大于本文。
表3 運(yùn)算性能比較
本文針對(duì)軟件實(shí)現(xiàn)視差估計(jì)算法存在處理數(shù)據(jù)量大、運(yùn)算時(shí)間長和資源消耗大的缺點(diǎn),基于視頻陣列處理器提出了視差估計(jì)的并行化實(shí)現(xiàn)方案,在陣列結(jié)構(gòu)中完成并行映射、功能仿真及FPGA測試。該方案主要包括原始?jí)K數(shù)據(jù)和參考?jí)K數(shù)據(jù)加載和下發(fā)模塊以及塊匹配模塊,充分挖掘了數(shù)據(jù)塊之間的并行性,減少了PE等待時(shí)間,提高了運(yùn)算速率。實(shí)驗(yàn)結(jié)果表明,所提出的并行實(shí)現(xiàn)方案相比于串行單PE時(shí)間節(jié)省了59%,本文中測試序列Newspaper的編碼時(shí)間減少最多,減少了29.67%,相比文獻(xiàn)[12]提升了15%,該結(jié)構(gòu)在具有較高的執(zhí)行效率的同時(shí)也具有較好的靈活性。