国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

插值前置的仿射變換FPGA實(shí)現(xiàn)方法

2020-03-19 10:46:46吳藝陽(yáng)
關(guān)鍵詞:存儲(chǔ)資源存儲(chǔ)器插值

吳藝陽(yáng),樊 凡,2,周 怡,黃 珺,2

1.武漢大學(xué) 電子信息學(xué)院,武漢430072

2.武漢大學(xué) 宇航科學(xué)與技術(shù)研究院,武漢430072

1 引言

仿射變換是一種實(shí)現(xiàn)原始圖像旋轉(zhuǎn)、縮放與平移并最終得到目標(biāo)圖像的幾何變換,是圖像融合、圖像配準(zhǔn)、圖像矯正等應(yīng)用中不容或缺的步驟之一[1]。例如,在實(shí)時(shí)視頻圖像融合系統(tǒng)中,仿射變換可以實(shí)現(xiàn)來(lái)自不同波段圖像之間的配準(zhǔn)[2];在全景相機(jī)中,全景圖像的拼接需要通過(guò)仿射變換實(shí)現(xiàn)[3];在醫(yī)學(xué)圖像應(yīng)用中,仿射變換可以實(shí)現(xiàn)計(jì)算機(jī)斷層掃描(CT)涉及的坐標(biāo)配準(zhǔn)[4]。上述應(yīng)用普遍要求系統(tǒng)的實(shí)時(shí)性達(dá)到30 Hz 幀頻[5]。相比ARM、DSP等處理器件,F(xiàn)PGA的靈活性更高、性能更強(qiáng),采用FPGA 實(shí)現(xiàn)圖像的仿射變換能夠有效地提高系統(tǒng)的實(shí)時(shí)性[6-7]。但仿射變換中涉及大量的矩陣運(yùn)算與插值運(yùn)算,需要占用較多的邏輯資源,設(shè)計(jì)難度大[8-9]。因此,研究仿射變換FPGA的高吞吐率實(shí)現(xiàn)具有重要意義。

目前,國(guó)內(nèi)外在實(shí)時(shí)視覺(jué)系統(tǒng)中的仿射變換FPGA實(shí)現(xiàn)均以反向映射為基本原理。這類(lèi)方法需要使用存儲(chǔ)器緩存一幀原始圖像數(shù)據(jù),然后根據(jù)目標(biāo)像素的坐標(biāo)從存儲(chǔ)器中讀取對(duì)應(yīng)的四鄰域像素灰度值,最后采用雙線(xiàn)性插值算法確定目標(biāo)像素灰度值。因?yàn)殡p線(xiàn)性插值模塊需要從存儲(chǔ)器中同步讀取四鄰域像素,所以存儲(chǔ)器的傳輸數(shù)據(jù)帶寬是原始圖像數(shù)據(jù)流的4 倍。為了實(shí)現(xiàn)存儲(chǔ)器的4 倍數(shù)據(jù)帶寬需求,國(guó)內(nèi)外研究人員提出了不同的方法。例如,Jiang 等人以及Gribbon 等人分別采用FPGA 內(nèi)部存儲(chǔ)資源與外部存儲(chǔ)器緩存4幀相同的原始圖像,從而實(shí)現(xiàn)雙線(xiàn)性插值需要的4 路圖像數(shù)據(jù)流輸入,該方法存在存儲(chǔ)資源消耗大的問(wèn)題[10-11]。為節(jié)約存儲(chǔ)資源FPGA 存儲(chǔ)資源,Ngo 等人以及王文治采用像素時(shí)鐘的4 倍頻時(shí)鐘從DPRAM 中讀取原始圖像數(shù)據(jù)[12-13];王金輝等人采用兩個(gè)單口SRAM 實(shí)現(xiàn)乒乓操作,并使用像素時(shí)鐘的4 倍頻時(shí)鐘讀取原始圖像[14]。上述實(shí)現(xiàn)方案可歸納為以下兩種:(1)使用4 個(gè)獨(dú)立的存儲(chǔ)資源對(duì)原始圖像進(jìn)行存取[10-11];(2)采用像素時(shí)鐘的4倍頻對(duì)存儲(chǔ)器內(nèi)部數(shù)據(jù)進(jìn)行讀取[12-14]。第一種方式需要為4 個(gè)存儲(chǔ)器提供更多的引腳資源與設(shè)計(jì)空間,在增加FPGA 功耗的同時(shí),不利于實(shí)時(shí)系統(tǒng)的小型化實(shí)現(xiàn)。第二種方式需要將存儲(chǔ)器的讀寫(xiě)頻率提高至原始圖像時(shí)鐘頻率的4倍,考慮到存儲(chǔ)器存在最大讀寫(xiě)頻率,所以這類(lèi)提升頻率的方法會(huì)將系統(tǒng)數(shù)據(jù)吞吐率降低至第一種方式的1/4。

綜上所述,基于反向映射的仿射變換不能同時(shí)兼顧存儲(chǔ)資源消耗與數(shù)據(jù)吞吐率。其根本原因在于雙線(xiàn)性插值模塊需要在一個(gè)像素時(shí)鐘內(nèi)從存儲(chǔ)器中讀取原始圖像四鄰域像素點(diǎn),導(dǎo)致存儲(chǔ)器的傳輸數(shù)據(jù)帶寬需求為原始圖像流的4 倍。為解決該問(wèn)題,本文提出了一種插值前置的仿射變換FPGA 實(shí)現(xiàn)方法,該方法采用四角點(diǎn)映射方式將雙線(xiàn)性插值計(jì)算提前到存儲(chǔ)器緩存原始圖像之前,避免了雙線(xiàn)性插值模塊對(duì)存儲(chǔ)器的直接讀取,從而降低了存儲(chǔ)器的傳輸數(shù)據(jù)帶寬需求。

2 傳統(tǒng)的基于反向映射的仿射變換FPGA實(shí)現(xiàn)

目前,國(guó)內(nèi)外在實(shí)時(shí)視覺(jué)系統(tǒng)中仿射變換的FPGA實(shí)現(xiàn)均以反向映射為基本原理。以反向映射為基礎(chǔ)的仿射變換采用順序掃描的方式遍歷目標(biāo)圖像中的像素點(diǎn),通過(guò)反向映射在原始圖像中確定與該像素點(diǎn)對(duì)應(yīng)的四鄰域像素,并對(duì)四鄰域像素進(jìn)行雙線(xiàn)性插值計(jì)算,最終建立目標(biāo)圖像。反向映射的數(shù)學(xué)模型為[15]:

其中,( x,y)T是原始圖像中的坐標(biāo)向量,( u,v)T是目標(biāo)圖像中的坐標(biāo)向量,( k1,k2)是圖像的縮放系數(shù),θ 是圖像的旋轉(zhuǎn)角度參數(shù),( t1,t2)是圖像的橫向與縱向平移參數(shù)。上述仿射參數(shù){k1,k2,θ,t1,t2} 為預(yù)設(shè)值。

如圖1 所示,基于反向映射的仿射變換FPGA 實(shí)現(xiàn)流程可歸納為:(1)地址生成模塊根據(jù)行場(chǎng)同步信號(hào)產(chǎn)生目標(biāo)圖像的地址信號(hào)流;(2)該地址信號(hào)流經(jīng)過(guò)反向映射得到原始圖像中對(duì)應(yīng)的坐標(biāo),并依此產(chǎn)生雙線(xiàn)性插值需要的4 個(gè)像素坐標(biāo)以及插值權(quán)重;(3)存儲(chǔ)器接口使用4 路并行的數(shù)據(jù)鏈路從外部RAM 中同時(shí)讀取這4個(gè)坐標(biāo)的像素值;(4)雙線(xiàn)性插值模塊根據(jù)同步輸入的插值權(quán)重與4 路原始圖像數(shù)據(jù)流輸出得到目標(biāo)圖像數(shù)據(jù)流[16]。

圖1 反向映射FPGA實(shí)現(xiàn)原理設(shè)計(jì)框圖

從圖1 可以看出,基于反向映射的仿射變換FPGA實(shí)現(xiàn)方法需要從RAM 中同時(shí)讀取4 路原始圖像數(shù)據(jù),該操作只能通過(guò)兩種方式實(shí)現(xiàn):(1)使用4 個(gè)獨(dú)立的存儲(chǔ)器對(duì)原始圖像進(jìn)行存取;(2)采用像素時(shí)鐘的4 倍頻對(duì)存儲(chǔ)器內(nèi)部數(shù)據(jù)進(jìn)行讀取。第一種方式需要為4 個(gè)存儲(chǔ)器提供更多的引腳資源與設(shè)計(jì)空間,同時(shí)增加了FPGA 的功耗,不利于實(shí)時(shí)系統(tǒng)的小型化實(shí)現(xiàn)。第二種方式需要將RAM 的讀寫(xiě)頻率提高至原始圖像時(shí)鐘的4倍,考慮到RAM 存在最大讀寫(xiě)頻率,所以該方法會(huì)將數(shù)據(jù)吞吐率降低至第一種方式的1/4。綜上所述,基于反向映射的仿射變換FPGA 實(shí)現(xiàn)方法不能同時(shí)兼顧存儲(chǔ)資源與數(shù)據(jù)吞吐率。

3 基于前置插值的仿射變換

針對(duì)基于反向映射的仿射變換FPGA 實(shí)現(xiàn)方法存在的缺點(diǎn),本文提出了一種基于前置插值的仿射變換理論,并詳細(xì)介紹該仿射變換的FPGA 實(shí)現(xiàn)方法,并對(duì)實(shí)現(xiàn)方法中涉及的簡(jiǎn)化運(yùn)算與相關(guān)的校驗(yàn)運(yùn)算進(jìn)行了分析。

3.1 基本原理

本文的想法是將雙線(xiàn)性插值的計(jì)算提前到存儲(chǔ)器緩存原始圖像數(shù)據(jù)流之前,即在原始圖像數(shù)據(jù)流輸入的同時(shí)便實(shí)現(xiàn)雙線(xiàn)性插值計(jì)算,從而避免存儲(chǔ)器讀寫(xiě)圖像數(shù)據(jù)時(shí)所需的4 倍數(shù)據(jù)帶寬。為實(shí)現(xiàn)插值前置,本文提出一種基于四角點(diǎn)映射的數(shù)學(xué)模型,該模型采用滑動(dòng)窗遍歷原始圖像坐標(biāo),并在滑動(dòng)窗中通過(guò)前向映射與反向映射的結(jié)合建立原始圖像與目標(biāo)圖像的映射關(guān)系?;瑒?dòng)窗的大小選取與仿射變換中應(yīng)用的具體插值算法相關(guān),滑動(dòng)窗內(nèi)應(yīng)包含插值運(yùn)算中所需的所有原始圖像坐標(biāo)。因?yàn)楸疚奶岢龅姆律渥儞Q方法中采用的是雙線(xiàn)性插值算法,所以選取2×2 大小的窗口作為滑動(dòng)窗?;谇爸貌逯档姆律渥儞Q具體實(shí)現(xiàn)原理描述如下:

(1)如圖2 所示,首先根據(jù)串行輸入的圖像數(shù)據(jù)流生成一個(gè)2×2 的滑動(dòng)窗,即四角點(diǎn)對(duì)應(yīng)的滑動(dòng)窗,該滑動(dòng)窗可以實(shí)現(xiàn)原始圖像坐標(biāo)與像素值的同步傳輸,為后續(xù)的映射關(guān)系計(jì)算與雙線(xiàn)性插值計(jì)算提供時(shí)序上的同步。定義該窗口為四角點(diǎn)ABCD,ABCD 坐標(biāo)即為四角點(diǎn)坐標(biāo)。

圖2 四角點(diǎn)映射原理圖

(2)在已獲得四角點(diǎn)滑動(dòng)窗的基礎(chǔ)上,需要建立原始圖像與目標(biāo)圖像的映射關(guān)系,考慮到前向映射可在已知原始圖像坐標(biāo)與仿射參數(shù)的基礎(chǔ)上實(shí)現(xiàn)映射關(guān)系的建立,本文采用前向映射將四角點(diǎn)滑動(dòng)窗ABCD 的坐標(biāo)映射到目標(biāo)圖像,得到映射窗口A(yíng)′B′C′D′,并在接下來(lái) 的 步 驟 中 從 映 射 窗 口A(yíng)′B′C′D′中 獲 取ABCD 與A′B′C′D′之間像素的插值關(guān)系。其中,前向映射的數(shù)學(xué)模型為:

式(2)與式(1)互為反函數(shù)。

(3)通常情況下,映射后四角點(diǎn)A′B′C′D′的坐標(biāo)包含小數(shù)部分,但是在基于FPGA 的數(shù)字圖像處理中,必須對(duì)目標(biāo)圖像的整數(shù)坐標(biāo)進(jìn)行賦值才有意義。因此必須在A(yíng)′B′C′D′內(nèi)找到其內(nèi)部的整數(shù)坐標(biāo)( )u′,v′,并對(duì)其進(jìn)行賦值。本文計(jì)算( )u′,v′的方式為:

其中( u1,v1)、( u2,v2)、( u3,v3)、( u4,v4)為映 射后 四角 點(diǎn)A′B′C′D′的坐標(biāo)。為簡(jiǎn)化FPGA 的計(jì)算復(fù)雜度,( u′,v′)分別由( u1, u2,u3,u4)與( v1, v2,v3,v4)中的最大值并向下取整得到。

(4)在坐標(biāo)( u′,v′)確定之后,需要對(duì)( u′,v′)的灰度值進(jìn)行賦值??紤]到從映射后四角點(diǎn)A′B′C′D′直接計(jì)算( u′,v′)的灰度值計(jì)算復(fù)雜度較高,從四角點(diǎn)ABCD 確定坐標(biāo)( u′,v′)灰度值計(jì)算復(fù)雜度較低,所以本文采用反向映射原理將目標(biāo)圖像中的( u′,v′)映射到原始圖像得到坐標(biāo)( x′,y′),并通過(guò)雙線(xiàn)性插值算法確定( x′,y′)的灰度值。

(5)雙線(xiàn)性插值根據(jù)同步輸入的插值權(quán)重與4 路原始圖像數(shù)據(jù)確定目標(biāo)像素的灰度值,并將該數(shù)據(jù)存儲(chǔ)到RAM 中。最后,在一幀原始圖像數(shù)據(jù)進(jìn)行四角點(diǎn)映射處理之后,從RAM 中順序讀出數(shù)據(jù),便可得到仿射變換后的圖像。

理論上講,數(shù)字圖像仿射變換的實(shí)現(xiàn)原理為:在仿射參數(shù)已知的情況下,通過(guò)某種映射計(jì)算方式建立原始圖像與目標(biāo)圖像之間全部坐標(biāo)及像素灰度值的映射關(guān)系。傳統(tǒng)的反向映射采用點(diǎn)對(duì)點(diǎn)映射方式遍歷目標(biāo)圖像坐標(biāo),并確定該坐標(biāo)在原始圖像中對(duì)應(yīng)的四鄰域像素,最終對(duì)四鄰域像素進(jìn)行插值計(jì)算。本文提出的基于前置插值的仿射變換方法根據(jù)反向映射的對(duì)稱(chēng)性,通過(guò)四角點(diǎn)窗口遍歷原始圖像獲取目標(biāo)圖像中所有與當(dāng)前窗口存在映射關(guān)系的像素坐標(biāo),然后通過(guò)反向映射確定當(dāng)前像素坐標(biāo)的像素灰度值,最終實(shí)現(xiàn)目標(biāo)圖像的建立。本文提出的基于前置插值的仿射變換方法需要實(shí)現(xiàn)四路并行的前向映射計(jì)算與一路的反向映射計(jì)算,實(shí)現(xiàn)難度與計(jì)算復(fù)雜度高于傳統(tǒng)的反向映射方法??紤]到FPGA 具有邏輯資源豐富,支持并行運(yùn)算的特點(diǎn),本文提出的基于前置插值的仿射變換方法在FPGA 實(shí)現(xiàn)中設(shè)計(jì)與實(shí)現(xiàn)難度較低,之后將介紹該方法的FPGA 實(shí)現(xiàn)架構(gòu)。

3.2 FPGA實(shí)現(xiàn)架構(gòu)

根據(jù)3.1 節(jié)中介紹的基于前置插值的仿射變換原理,其FPGA 實(shí)現(xiàn)方法需要分別實(shí)現(xiàn)四角點(diǎn)坐標(biāo)生成、四角點(diǎn)前向映射、坐標(biāo)選取、反向映射、滑動(dòng)窗并行輸出以及雙線(xiàn)性插值模塊6 個(gè)處理模塊,如圖3 所示。下面將分別介紹這6個(gè)部分的FPGA實(shí)現(xiàn)方法。

(1)四角點(diǎn)坐標(biāo)生成模塊根據(jù)輸入的行場(chǎng)同步信號(hào)生成4路并行的原始圖像四角點(diǎn)坐標(biāo)( xi,yi)T( i= 1,2,3,4)。

(2)四角點(diǎn)前向映射模塊對(duì)輸入的4 路坐標(biāo)信號(hào)進(jìn)行并行的前向映射計(jì)算得到4 路目標(biāo)圖像坐標(biāo)信號(hào)( ui,vi)T( i= 1,2,3,4)。前向模塊的FPGA 實(shí)現(xiàn)原理圖如圖4(a)所示,輸入的x 坐標(biāo)與y 坐標(biāo)通過(guò)乘法器與加法器實(shí)現(xiàn)與仿射參數(shù)的乘加運(yùn)算,得到目標(biāo)圖像坐標(biāo)( u,v)。

圖3 基于前置插值的FPGA實(shí)現(xiàn)方法設(shè)計(jì)框圖

圖4 前向映射與反向映射FPGA實(shí)現(xiàn)原理圖

(3)坐標(biāo)選取模塊根據(jù)映射窗坐標(biāo)( ui,vi)T(i=1,2, 3,4 )選取當(dāng)前窗口的插值坐標(biāo)( u′,v′),其RTL級(jí)電路如圖5。坐標(biāo)選取模塊由數(shù)據(jù)比較器組與數(shù)據(jù)選擇器組構(gòu)成。數(shù)據(jù)比較器與數(shù)據(jù)選擇器的作用是得到映射坐標(biāo)( ui,vi)T( i= 1,2,3,4 )中的最大值與最小值。當(dāng)且僅當(dāng)umax-umin=1 與vmax-vmin=1 兩個(gè)條件均成立時(shí),坐標(biāo)選取模塊輸出( umax,vmax)作為插值坐標(biāo)( u′,v′)。當(dāng)條件不成立時(shí),意味著當(dāng)前窗口不包含插值坐標(biāo),坐標(biāo)選取模塊在當(dāng)前時(shí)刻將輸出坐標(biāo)(0,0)。

圖5 坐標(biāo)選取部分RTL級(jí)電路

(4)反向映射實(shí)現(xiàn)對(duì)輸入的插值坐標(biāo)( u′,v′)進(jìn)行反向映射計(jì)算,得到對(duì)應(yīng)的原始圖像坐標(biāo)( x′,y′),并通過(guò)( x′,y′)與四角點(diǎn)坐標(biāo)( xi,yi)T( i= 1,2,3,4 )的位置關(guān)系確定插值權(quán)重。如圖4(b)所示,反向映射的FPGA 實(shí)現(xiàn)也是通過(guò)乘法器與加法器對(duì)輸入坐標(biāo)( u′,v′)與相關(guān)仿射參數(shù)的運(yùn)算,得到原始圖像坐標(biāo)( x′,y′)。

(5)滑動(dòng)窗并行輸出模塊實(shí)現(xiàn)了原始圖像數(shù)據(jù)的串并轉(zhuǎn)換,其時(shí)序圖如圖6 所示。方法采用兩個(gè)串行的FIFO 緩存圖像數(shù)據(jù),每個(gè)FIFO 內(nèi)緩存圖像的一行數(shù)據(jù)。寄存器Reg1、Reg2、Reg3 與Reg4 對(duì)FIFO 輸出的數(shù)據(jù)進(jìn)行流水緩存操作,從而實(shí)現(xiàn)圖像數(shù)據(jù)的并行輸出。其中,Reg1 與Rge3 內(nèi)緩存的數(shù)據(jù)為同一列像素,Reg2與Reg4 內(nèi)緩存的數(shù)據(jù)為同一列像素。當(dāng)FIFO1 與FIFO2 均存滿(mǎn)一行數(shù)據(jù)時(shí),寄存器組將會(huì)并行輸出當(dāng)前2×2 窗口的像素值。該滑動(dòng)窗結(jié)構(gòu)實(shí)現(xiàn)了像素時(shí)鐘下雙線(xiàn)性插值模塊所需的4倍數(shù)據(jù)帶寬輸入。

圖6 滑動(dòng)窗原理框圖及時(shí)序圖

(6)雙線(xiàn)性插值部分根據(jù)輸入的4 路原始圖像數(shù)據(jù)流與插值權(quán)重,得到仿射變換圖像數(shù)據(jù)流,并將其存入到外部存儲(chǔ)器中。當(dāng)滑動(dòng)窗遍歷原始圖像中所有的像素坐標(biāo)之后,順序讀出外部存儲(chǔ)器中的數(shù)據(jù)流,即可得到最終的仿射變換圖像數(shù)據(jù)。

插值前置的仿射變換FPGA 實(shí)現(xiàn)方法實(shí)現(xiàn)了雙線(xiàn)性插值的前置計(jì)算,避免雙線(xiàn)性插值模塊對(duì)存儲(chǔ)器的直接讀取,降低存儲(chǔ)器的傳輸帶寬需求。

3.3 FPGA簡(jiǎn)化運(yùn)算與校驗(yàn)分析

如上所述,為降低FPGA 的計(jì)算復(fù)雜度,本文提出的插值前置的仿射變換FPGA 實(shí)現(xiàn)方法在坐標(biāo)選取部分中進(jìn)行了簡(jiǎn)化計(jì)算,具體的簡(jiǎn)化過(guò)程為:坐標(biāo)選取部分需要從映射窗口A(yíng)′B′C′D′中選取插值坐標(biāo)( u′,v′),通常情況下,A′B′C′D′的邊與圖像坐標(biāo)軸為非平行關(guān)系,在A(yíng)′B′C′D′中直接選取插值坐標(biāo)( u′,v′)需要計(jì)算坐標(biāo)( u′,v′)與A′B′C′D′形成的向量與映射窗口向量之間的內(nèi)積,通過(guò)內(nèi)積的取值判斷當(dāng)前坐標(biāo)是否在映射窗口A(yíng)′B′C′D′內(nèi)部。上述操作需要使用大量的乘法器資源,降低FPGA 處理圖像數(shù)據(jù)的實(shí)時(shí)性。因此,本文采用一種簡(jiǎn)化計(jì)算的坐標(biāo)選取方法,將選取的矩形窗擴(kuò)大為映射窗口A(yíng)′B′C′D′的外接矩形EFGH,并通過(guò)對(duì)EFGH坐標(biāo)最大值向下取整遍歷的方式快速定位矩形窗內(nèi)包含的整數(shù)坐標(biāo)點(diǎn)。上述方法雖然降低了FPGA 的計(jì)算復(fù)雜度,但是矩形窗的外擴(kuò)會(huì)在當(dāng)前滑動(dòng)窗中引入其余四角點(diǎn)滑動(dòng)窗需要計(jì)算的插值坐標(biāo),如圖7 所示,映射窗口A(yíng)′B′C′D′中的有效插值點(diǎn)為I,但矩形窗的外擴(kuò)導(dǎo)致無(wú)效插值點(diǎn)K 的引入。從而造成K 點(diǎn)雙線(xiàn)性插值的重復(fù)計(jì)算,降低仿射圖像的插值精度。

針對(duì)上述問(wèn)題,本文在反向映射部分中添加校驗(yàn)計(jì)算模塊實(shí)現(xiàn)無(wú)效坐標(biāo)點(diǎn)的剔除。其中,無(wú)效坐標(biāo)點(diǎn)的定義為非當(dāng)前滑動(dòng)窗內(nèi)的插值坐標(biāo)點(diǎn)。根據(jù)前向映射與反向映射的對(duì)稱(chēng)關(guān)系可知,當(dāng)映射窗口中的插值坐標(biāo)( u′,v′)為有效插值坐標(biāo)時(shí),該坐標(biāo)通過(guò)反向映射計(jì)算后仍然在四角點(diǎn)ABCD 構(gòu)成的滑動(dòng)窗內(nèi),反之則會(huì)落于滑動(dòng)窗外。根據(jù)上述性質(zhì),校驗(yàn)?zāi)K對(duì)選取到的插值坐標(biāo)( u′,v′)進(jìn)行反向映射計(jì)算得到坐標(biāo)( x′,y′),判斷( x′,y′)是否在當(dāng)前四角點(diǎn)的滑動(dòng)窗內(nèi)。若當(dāng)前坐標(biāo)( x′,y′)在四角點(diǎn)ABCD 構(gòu)成的滑動(dòng)窗內(nèi),則該坐標(biāo)為有效坐標(biāo),并對(duì)該坐標(biāo)進(jìn)行后續(xù)的插值計(jì)算;若當(dāng)前坐標(biāo)不在滑動(dòng)窗內(nèi),則判定該坐標(biāo)為無(wú)效坐標(biāo),并進(jìn)行舍棄。

校驗(yàn)計(jì)算實(shí)現(xiàn)了在當(dāng)前時(shí)刻僅對(duì)四角點(diǎn)滑動(dòng)窗內(nèi)的坐標(biāo)進(jìn)行插值計(jì)算,剔除由于插值坐標(biāo)選取的FPGA簡(jiǎn)化計(jì)算帶來(lái)的無(wú)效坐標(biāo)點(diǎn),避免對(duì)無(wú)效坐標(biāo)點(diǎn)重復(fù)進(jìn)行插值計(jì)算所導(dǎo)致的仿射圖像插值精度下降的問(wèn)題。

4 實(shí)驗(yàn)結(jié)果與討論

為驗(yàn)證本文提出的基于前置插值的仿射變換算法的可行性,本文在Matlab中對(duì)本文提出的方法進(jìn)行了仿真,仿真實(shí)驗(yàn)結(jié)果圖如圖8、圖9 與圖10 所示。圖8、圖9與圖10 中的圖(a)為原圖,圖(b)~圖(e)為不同仿射參數(shù)下的仿射變換圖像,其中實(shí)驗(yàn)中的k 為縮放參數(shù),θ 為旋轉(zhuǎn)參數(shù),實(shí)驗(yàn)中橫向與縱向縮放參數(shù)取值均為k。從實(shí)驗(yàn)結(jié)果可以看出本文提出的基于前置插值的仿射變換算法可以實(shí)現(xiàn)不同參數(shù)下的仿射變換。

圖8 Venice基于前置插值的仿射變換Matlab仿真實(shí)驗(yàn)圖

圖9 Office基于前置插值的仿射變換Matlab仿真實(shí)驗(yàn)圖

圖10 Penguins基于前置插值的仿射變換Matlab仿真實(shí)驗(yàn)圖

為驗(yàn)證本文提出算法的插值精度,采用峰值信噪比(PSNR)衡量仿射圖像與原始圖像相符合程度。首先對(duì)原始圖像采用反向映射的方式對(duì)圖像進(jìn)行旋轉(zhuǎn)得到兩幅相同的旋轉(zhuǎn)圖像,然后分別通過(guò)反向映射的方式與本文算法對(duì)旋轉(zhuǎn)圖像進(jìn)行仿射變換得到仿射圖像,并與原始圖像進(jìn)行比較得到PSNR。表1 給出了通過(guò)反向映射與無(wú)校驗(yàn)的本文算法以及本文算法在不同圖像中的PSNR 指標(biāo)表現(xiàn),從表1 可以看出本文算法的插值精度與基于反向映射的仿射變換的插值精度基本一致,這是因?yàn)楸疚奶岢龅乃惴ㄅc基于反向映射的仿射變換均采用雙線(xiàn)性插值實(shí)現(xiàn)插值計(jì)算,因此插值精度基本一致。與此同時(shí),當(dāng)本文算法缺少校驗(yàn)算法時(shí),PSNR指標(biāo)將會(huì)出現(xiàn)下降,這是因?yàn)樾r?yàn)?zāi)K的缺少會(huì)使得本文算法對(duì)部分坐標(biāo)進(jìn)行重復(fù)插值,從而降低了插值精度。

表1 PSNR指標(biāo)實(shí)驗(yàn)對(duì)比數(shù)據(jù) dB

為驗(yàn)證本文提出的插值前置的仿射變換FPGA 實(shí)現(xiàn)方法在數(shù)據(jù)傳輸帶寬、存儲(chǔ)資源與數(shù)據(jù)吞吐率中的表現(xiàn),本文采用Altera 公司的Cyclone V 5CEFA7U19C8N芯片,在Quartus II 14.1 的綜合編譯平臺(tái)上進(jìn)行進(jìn)一步驗(yàn)證。在驗(yàn)證實(shí)驗(yàn)中,原始圖像數(shù)據(jù)流的輸入時(shí)鐘為6.75 MHz,幀頻為50 Hz。

表1 給出了本文提出的實(shí)現(xiàn)方法與其他文獻(xiàn)提出的方法在存儲(chǔ)器傳輸帶寬需求、外部存儲(chǔ)器個(gè)數(shù)、內(nèi)部存儲(chǔ)器資源占用率、存儲(chǔ)器讀寫(xiě)頻率與極限數(shù)據(jù)吞吐率的綜合比較情況。其中,存儲(chǔ)器傳輸帶寬需求為成像系統(tǒng)工作時(shí)存儲(chǔ)器在單位時(shí)間內(nèi)的數(shù)據(jù)吞吐率。高存儲(chǔ)器傳輸帶寬需要通過(guò)消耗更多的存儲(chǔ)資源或者降低極限數(shù)據(jù)吞吐率實(shí)現(xiàn)。存儲(chǔ)器傳輸帶寬需求越低,系統(tǒng)的資源消耗與極限數(shù)據(jù)吞吐率綜合表現(xiàn)越好。fpixel為原始圖像的像素時(shí)鐘頻率,在輸入始終頻率相同的情況下,存儲(chǔ)器的讀寫(xiě)頻率越高,則存儲(chǔ)器越容易到達(dá)讀寫(xiě)頻率上限,系統(tǒng)的極限數(shù)據(jù)吞吐率越低。由表2 可得,文獻(xiàn)[10]雖然在不使用外部存儲(chǔ)器的情況下達(dá)到了最高的數(shù)據(jù)吞吐率,但片上存儲(chǔ)資源占用率高達(dá)80%,系統(tǒng)可擴(kuò)展性差。文獻(xiàn)[11]所需的外部存儲(chǔ)器個(gè)數(shù)則高達(dá)4 個(gè)。文獻(xiàn)[12]與文獻(xiàn)[14]的存儲(chǔ)器讀寫(xiě)頻率為像素頻率fpixel的4 倍,導(dǎo)致系統(tǒng)極限數(shù)據(jù)吞吐率僅為其他方法的1/4。本文的存儲(chǔ)器傳輸帶寬需求為其他方法的1/4,避免了反向映射方法中為實(shí)現(xiàn)4 倍傳輸數(shù)據(jù)帶寬而存在的存儲(chǔ)資源消耗高與降低數(shù)據(jù)吞吐率的問(wèn)題。最終在使用1 個(gè)外部存儲(chǔ)資源并且內(nèi)部存儲(chǔ)資源占用率僅為0.48%的情況下,達(dá)到最大的極限數(shù)據(jù)吞吐率,在存儲(chǔ)資源與數(shù)據(jù)吞吐率方面擁有最好的綜合表現(xiàn)。

表2 不同方法的指標(biāo)對(duì)比(fpixel為原始圖像的像素時(shí)鐘頻率)

為說(shuō)明本文提出的基于前置插值的仿射變換在FPGA實(shí)現(xiàn)中資源占用率情況,表3給出了Quartus II 14.1的綜合編譯資源報(bào)告。從表3 可以得到以下結(jié)論:本文提出的方法的ALM(算術(shù)邏輯資源),Registers(寄存器)與LUTs(查找表)的占用率均小于3%。與此同時(shí),方法僅占用0.48%的Block Memory(片上存儲(chǔ)資源)與14.1%乘法器資源??傮w上說(shuō),本文提出的插值前置的仿射變換FPGA 實(shí)現(xiàn)方法仍然剩余充足的邏輯資源用于其余圖像預(yù)處理算法中。

表3 AlteraCycloneV芯片資源占用表

本文將提出的基于前置插值的FPGA 實(shí)現(xiàn)方法應(yīng)用于可見(jiàn)光與紅外圖像的實(shí)時(shí)融合系統(tǒng)之中,融合相機(jī)的實(shí)物圖如圖11 所示。其中,紅外相機(jī)得到的紅外圖像分辨率為400×300??梢?jiàn)光相機(jī)的型號(hào)為MT9M034,最高可輸出分辨率為1 280×960的可見(jiàn)光圖像。該相機(jī)可通過(guò)簡(jiǎn)單的寄存器配置實(shí)現(xiàn)分辨率、幀頻等圖像參數(shù)的調(diào)節(jié)。因此,在實(shí)時(shí)相機(jī)融合系統(tǒng)中,本文提出的基于前置插值映射的仿射變換方法用于可見(jiàn)光相機(jī)的輸出端,對(duì)可見(jiàn)光圖像進(jìn)行旋轉(zhuǎn),縮放與平移,從而達(dá)到紅外圖像與可見(jiàn)光圖像像素間的對(duì)齊。首先,對(duì)紅外圖像進(jìn)行圖像預(yù)處理,得到清晰的紅外圖像信息,并將紅外圖像數(shù)據(jù)傳輸?shù)娇梢?jiàn)光相機(jī)所在的FPGA 芯片。與此同時(shí),對(duì)可見(jiàn)光圖像進(jìn)行仿射變換,實(shí)現(xiàn)紅外圖像與可見(jiàn)光圖像的像素對(duì)齊。其中,仿射參數(shù)由Matlab仿真獲得,并在系統(tǒng)初始化時(shí)便設(shè)置成固定參數(shù)。最后,對(duì)紅外圖像與可見(jiàn)光圖像進(jìn)行同步處理之后,對(duì)同步的紅外圖像與可見(jiàn)光圖像進(jìn)行融合處理。

圖11 融合相機(jī)實(shí)物圖

融合相機(jī)的實(shí)驗(yàn)結(jié)果圖如圖12 所示。由實(shí)驗(yàn)結(jié)果可得,本文提出的插值前置的仿射變換FPGA 實(shí)現(xiàn)方法可實(shí)現(xiàn)紅外圖像與可見(jiàn)光圖像像素間的對(duì)齊。

圖12 融合相機(jī)實(shí)驗(yàn)結(jié)果

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

針對(duì)基于反向映射的仿射變換在FPGA 實(shí)現(xiàn)中遇到的存儲(chǔ)資源消耗高與數(shù)據(jù)吞吐率問(wèn)題,本文提出了一種基于前置插值的仿射變換數(shù)學(xué)模型,實(shí)現(xiàn)了雙線(xiàn)性插值的前置計(jì)算,避免雙線(xiàn)性插值對(duì)存儲(chǔ)器的直接讀寫(xiě),降低存儲(chǔ)器的傳輸帶寬需求。實(shí)驗(yàn)結(jié)果表明,本文提出的插值前置的仿射變換方法在實(shí)現(xiàn)實(shí)時(shí)仿射變換的同時(shí),降低了存儲(chǔ)器的傳輸帶寬需求,擁有更好的存儲(chǔ)器占用率與數(shù)據(jù)吞吐率綜合表現(xiàn)。與此同時(shí),本文提出的仿射變換方法成功實(shí)現(xiàn)紅外圖像與可見(jiàn)光圖像的像素間的對(duì)齊。

猜你喜歡
存儲(chǔ)資源存儲(chǔ)器插值
一種基于區(qū)塊鏈的存儲(chǔ)資源可信分配方法
靜態(tài)隨機(jī)存儲(chǔ)器在軌自檢算法
基于Sinc插值與相關(guān)譜的縱橫波速度比掃描方法
一種改進(jìn)FFT多譜線(xiàn)插值諧波分析方法
基于四項(xiàng)最低旁瓣Nuttall窗的插值FFT諧波分析
用SSD提升私有云存儲(chǔ)性能
存儲(chǔ)器——安格爾(墨西哥)▲
Blackman-Harris窗的插值FFT諧波分析與應(yīng)用
基于Nand Flash的高速存儲(chǔ)器結(jié)構(gòu)設(shè)計(jì)
基于事件的視頻傳輸自適應(yīng)調(diào)節(jié)方法及其應(yīng)用
昭苏县| 呼图壁县| 贡嘎县| 霍林郭勒市| 平江县| 青冈县| 岫岩| 汉川市| 通渭县| 长泰县| 疏勒县| 龙泉市| 大邑县| 金塔县| 罗源县| 湾仔区| 中西区| 晋州市| 杭锦后旗| 老河口市| 韩城市| 镇远县| 成都市| 济源市| 分宜县| 广丰县| 临澧县| 安溪县| 偏关县| 天峻县| 凤冈县| 长宁县| 尤溪县| 丹凤县| 大安市| 新乐市| 诏安县| 广汉市| 察哈| 星座| 胶南市|