新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于FPGA的實時紅外圖像放大模塊

基于FPGA的實時紅外圖像放大模塊

作者: 時間:2011-11-26 來源:網(wǎng)絡(luò) 收藏

紅外成像技術(shù)是目前非常有用的新型高科技,具有極強(qiáng)抗干擾能力,屬于被動式觀測裝備,隱蔽性很強(qiáng)。長波紅外可不受煙霧等的影響,分辨率高。另外,紅外成像不受地面和海面的多徑效應(yīng)影響,具有多目標(biāo)全景觀察、追蹤及識別能力,具有很廣闊的應(yīng)用前景和價值。

  本文采用的紅外系統(tǒng)為凱邁廣微160×120系列,由于原始圖像大小為160×120,在某些應(yīng)用場合其分辨率很難滿足需要,必須對圖像進(jìn)行。

  圖像是一種常用的數(shù)字圖像處理技術(shù),在日常社會生活的許多領(lǐng)域有著廣泛的應(yīng)用,因此數(shù)字圖像的是圖像處理的基本操作之一。數(shù)字圖像放大多用軟件來實現(xiàn)。但隨著現(xiàn)場可編程門陣列技術(shù)的突飛猛進(jìn),F(xiàn)PGA也逐漸進(jìn)入數(shù)字信號處理領(lǐng)域,尤其在實時圖像處理方面FPGA無可比擬的并行處理能力,所以國內(nèi)外愈來愈多的實時處理應(yīng)用都轉(zhuǎn)向了FPGA平臺。本文正是介紹了一種基于FPGA的固定倍率紅外圖像放大模塊。

  1 圖像放大算法

  目前圖像放大處理通常都采用軟件方法來實現(xiàn),雖然其算法種類多樣,且圖像放大后的質(zhì)量也比較高,但是,由于其運算時間往往較長,因此在某些實時性要求較高的數(shù)字圖像處理場合不宜采用軟件方法而適合采用硬件方法。硬件方法實現(xiàn)圖像放大,其處理速度可大大提高,不過,采用硬件實現(xiàn)時,由于資源非常有限,許多處理算法因過于復(fù)雜而無法通過硬件實現(xiàn)。目前在進(jìn)行硬件圖像處理過程中,通常采用插值算法,利用圖像的像素點間存在著的相關(guān)性進(jìn)行插值而實現(xiàn)圖像的放大。常用的差值算法包括最近鄰域插值法(Nearest Neighbor Interpolation),雙線性插值法(Linear Interpolation),雙三次插值法(Bieubie interpolation)。

  1.1 最近鄰域插值法

  從計算量的角度來說,最近鄰插值是最簡單的插值。在這種算法下,每個插值輸出像素的值就是在輸入圖像中與其最臨近采樣點的值。算法的數(shù)字表示為:

  f(x)-f(xk),1/2(xk-1+xk)

  1.2 雙線性插值法

  雙線性插值法的輸出像素時它在圖像中2×2鄰域采樣點的平均值,它根據(jù)某個像素周圍4個像素(m,n),(m+l,n),(m,n+1),(m+1,n+1)的灰度值在水平和垂直2個方向?qū)ζ洳逯怠?/P>

  設(shè)m

  

e.jpg

  把按照上式計算出來的值賦予圖像的幾何變換對應(yīng)于處的像素,即可實現(xiàn)雙線性插值。

  1.3 雙三次插值法

  雙三次插值的插值核為三次函數(shù),其插值鄰域的大小為4×4。它的插值效果比較好但相應(yīng)計算量也大。

  1.4 本文采用的算法

  上述3種圖像插值算法中最近鄰插值放大實現(xiàn)最為簡單,處理速度快,但它只是把原始像素簡單的復(fù)制到其鄰域內(nèi),放大圖像就會出現(xiàn)明顯的方塊或鋸齒,不能很好地保留原始圖像的邊緣信息。雙三次插值算法的視覺效果最好,但計算復(fù)雜開發(fā)周期長,占用的硬件資源較大,不符合本系統(tǒng)的資源要求。使用雙線性插值能夠較好地消除鋸齒,保留原始圖像的邊緣信息,放大后的圖像較平滑,且有較好的視覺效果。本文選取改進(jìn)型的線性插值(2×1鄰域和1×2鄰域)作為最終實現(xiàn)方案。如圖1所示,實心表示原始像素,空心表示放大后的圖像。本文采用的算法數(shù)學(xué)表達(dá)式為:

  

基于FPGA的實時紅外圖像放大模塊

  2 算法基于FPGA的設(shè)計與實現(xiàn)

  2.1 系統(tǒng)結(jié)構(gòu)

  系統(tǒng)總體結(jié)構(gòu)如圖2所示,行插值和數(shù)據(jù)控制模塊控制數(shù)據(jù)存入雙口RAM中,并在存入的過程中實現(xiàn)行的放大,因為采用2×2領(lǐng)域放大,每個目標(biāo)像素放大所需的原始圖像相鄰2行的2個像素,所以可以將相鄰2行寫入雙口RAM。列插值和數(shù)據(jù)控制模塊實現(xiàn)列放大和把插值后的數(shù)據(jù)送入到下一個模塊。數(shù)據(jù)流向是圖像放大模塊的重點和難點,如何實現(xiàn)實時性,良好的數(shù)據(jù)控制很重要。在數(shù)據(jù)從上一個模塊讀入的同時,行插值模塊就完成了行放大。在一幀圖像的幀頭,行插值模塊對2行數(shù)據(jù)進(jìn)行操作,在第2行到倒數(shù)第2行,行插值只對單行數(shù)據(jù)進(jìn)行處理,處理完畢后并通知列插值模塊進(jìn)行下一步運算。列插值模塊在收到行插值模塊給的信號后,從雙口RAM中讀取已經(jīng)存入的兩行數(shù)據(jù),并完成中間行的插值,在運算的過程中并把RAM中的第一行的數(shù)據(jù)逐個讀出并送到下一個模塊。當(dāng)完成列插值運算后,立即通知行插值模塊開始讀入新的一行,并在讀入的同時,把新產(chǎn)生的行讀出。行插值模塊完成新的一行讀入后,通知列插值模塊與RAM中上一次存入的第二行(第一次列插值的第3行)進(jìn)行列插值操作,并重復(fù)上述操作,直至完成當(dāng)前幀。具體流程如圖3所示。

  

基于FPGA的實時紅外圖像放大模塊

  2.2 算法實現(xiàn)

  圖像處理模塊的具體實現(xiàn)結(jié)構(gòu)如圖4所示。該模塊由3個部分構(gòu)成:ram_control模塊實現(xiàn)RAM控制和行放大;calculate模塊實現(xiàn)列放大和數(shù)據(jù)輸出;dpram為雙口RAM用于數(shù)據(jù)存儲。

  

基于FPGA的實時紅外圖像放大模塊

  (1)ram_control模塊。D_SYP為2倍的像素時鐘輸入,SYP為像素時鐘,SYL為行同步信號,G_reset為全局復(fù)位信號,data_in為數(shù)據(jù)輸入端口,cal_done為列運算完成信號指示,done為行放大完成信號,其余信號為dpram控制信號。

  (2)calculate模塊。caleulate模塊與ram_control模塊功類似,再運算完成后可以控制數(shù)據(jù)輸出到下一個功能模塊。

  (3)dpram。dpram可以實現(xiàn)不同速率的輸入和輸出,還可以根據(jù)需求改變同一個RAM口的不同速率的輸入和輸出,本文采用了兩路不同的時鐘分別控制ram_a口和ram_b口,同一個口用同樣的時鐘讀入讀出數(shù)據(jù)。

  3 系統(tǒng)仿真與實現(xiàn)

  圖5為quartus功能仿真結(jié)果,時鐘速率和數(shù)據(jù)輸入均為模擬產(chǎn)生,根據(jù)仿真結(jié)果可以看出,地址發(fā)生器和數(shù)據(jù)輸出均按照設(shè)計要求輸出,理論上可以實現(xiàn)放大功能。

  

基于FPGA的實時紅外圖像放大模塊

  圖6為紅外機(jī)芯組件GW160×120所采集到的原始圖像,圖7為采用本文放大算法后采集到的圖像。對比發(fā)現(xiàn)圖像質(zhì)量較好,沒有馬賽克現(xiàn)象,可以滿足觀察需要,達(dá)到了設(shè)計要求。

  4 結(jié)語

  在以后的應(yīng)用中如果硬件資源滿足需求,可以把雙三次插值應(yīng)用于紅外機(jī)芯系統(tǒng)。由于系統(tǒng)采用了FPGA進(jìn)行設(shè)計,因此具有很強(qiáng)的擴(kuò)展性,可以在不改變硬件系統(tǒng)的基礎(chǔ)上進(jìn)行算法改進(jìn),增加了系統(tǒng)的靈活性和適應(yīng)性。



關(guān)鍵詞: 實時紅外圖像 放大

評論


相關(guān)推薦

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

關(guān)閉