一種基于FPGA的實(shí)時紅外圖像放大模塊
摘要:為了提高紅外成像系統(tǒng)圖像放大算法的資源利用率和實(shí)時性。在此基于傳統(tǒng)線性插值算法,充分考慮紅外探測器信號的輸出方式,并根據(jù)紅外成像平臺的結(jié)構(gòu)特點(diǎn)。提出了一種適用于FPGA的改進(jìn)型線性插值算法,該算法基于并行流水線方式實(shí)現(xiàn),充分發(fā)揮了FPGA的高速并行處理能力。該算法已應(yīng)用于工程實(shí)踐中,經(jīng)過大量的實(shí)驗(yàn)和實(shí)際應(yīng)用,穩(wěn)定可靠,成像質(zhì)量較好。與以往傳統(tǒng)的實(shí)現(xiàn)方法相比,圖像質(zhì)量沒有變化,實(shí)時性得到了很大的提高,資源占用少,具有很大的創(chuàng)新性和實(shí)用性。
關(guān)鍵詞:紅外成像系統(tǒng);圖像放大;插值;FPGA
紅外成像技術(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ù)字圖像放大多用軟件來實(shí)現(xiàn)。但隨著現(xiàn)場可編程門陣列技術(shù)的突飛猛進(jìn),F(xiàn)PGA也逐漸進(jìn)入數(shù)字信號處理領(lǐng)域,尤其在實(shí)時圖像處理方面FPGA無可比擬的并行處理能力,所以國內(nèi)外愈來愈多的實(shí)時處理應(yīng)用都轉(zhuǎn)向了FPGA平臺。本文正是介紹了一種基于FPGA的固定倍率紅外圖像放大模塊。
1 圖像放大算法
目前圖像放大處理通常都采用軟件方法來實(shí)現(xiàn),雖然其算法種類多樣,且圖像放大后的質(zhì)量也比較高,但是,由于其運(yùn)算時間往往較長,因此在某些實(shí)時性要求較高的數(shù)字圖像處理場合不宜采用軟件方法而適合采用硬件方法。硬件方法實(shí)現(xiàn)圖像放大,其處理速度可大大提高,不過,采用硬件實(shí)現(xiàn)時,由于資源非常有限,許多處理算法因過于復(fù)雜而無法通過硬件實(shí)現(xiàn)。目前在進(jìn)行硬件圖像處理過程中,通常采用插值算法,利用圖像的像素點(diǎn)間存在著的相關(guān)性進(jìn)行插值而實(shí)現(xiàn)圖像的放大。常用的差值算法包括最近鄰域插值法(Nearest Neighbor Interpolation),雙線性插值法(Linear Interpolation),雙三次插值法(Bieubie interpolation)。
1.1 最近鄰域插值法
從計算量的角度來說,最近鄰插值是最簡單的插值。在這種算法下,每個插值輸出像素的值就是在輸入圖像中與其最臨近采樣點(diǎn)的值。算法的數(shù)字表示為:
f(x)-f(xk),1/2(xk-1+xk)<x<1/2(xk+xk+1)
1.2 雙線性插值法
雙線性插值法的輸出像素時它在圖像中2×2鄰域采樣點(diǎn)的平均值,它根據(jù)某個像素周圍4個像素(m,n),(m+l,n),(m,n+1),(m+1,n+1)的灰度值在水平和垂直2個方向?qū)ζ洳逯怠?br />
設(shè)m<i<m+1,n<j<n+l,a=i-m,b=j-n,i’和j’是要插值的點(diǎn)的坐標(biāo),則雙線性插值的公式為:
把按照上式計算出來的值賦予圖像的幾何變換對應(yīng)于處的像素,即可實(shí)現(xiàn)雙線性插值。
1.3 雙三次插值法
雙三次插值的插值核為三次函數(shù),其插值鄰域的大小為4×4。它的插值效果比較好但相應(yīng)計算量也大。
1.4 本文采用的算法
上述3種圖像插值算法中最近鄰插值放大實(shí)現(xiàn)最為簡單,處理速度快,但它只是把原始像素簡單的復(fù)制到其鄰域內(nèi),放大圖像就會出現(xiàn)明顯的方塊或鋸齒,不能很好地保留原始圖像的邊緣信息。雙三次插值算法的視覺效果最好,但計算復(fù)雜開發(fā)周期長,占用的硬件資源較大,不符合本系統(tǒng)的資源要求。使用雙線性插值能夠較好地消除鋸齒,保留原始圖像的邊緣信息,放大后的圖像較平滑,且有較好的視覺效果。本文選取改進(jìn)型的線性插值(2×1鄰域和1×2鄰域)作為最終實(shí)現(xiàn)方案。如圖1所示,實(shí)心表示原始像素,空心表示放大后的圖像。本文采用的算法數(shù)學(xué)表達(dá)式為:
2 算法基于FPGA的設(shè)計與實(shí)現(xiàn)
2.1 系統(tǒng)結(jié)構(gòu)
系統(tǒng)總體結(jié)構(gòu)如圖2所示,行插值和數(shù)據(jù)控制模塊控制數(shù)據(jù)存入雙口RAM中,并在存入的過程中實(shí)現(xiàn)行的放大,因?yàn)椴捎?×2領(lǐng)域放大,每個目標(biāo)像素放大所需的原始圖像相鄰2行的2個像素,所以可以將相鄰2行寫入雙口RAM。列插值和數(shù)據(jù)控制模塊實(shí)現(xiàn)列放大和把插值后的數(shù)據(jù)送入到下一個模塊。數(shù)據(jù)流向是圖像放大模塊的重點(diǎn)和難點(diǎn),如何實(shí)現(xiàn)實(shí)時性,良好的數(shù)據(jù)控制很重要。在數(shù)據(jù)從上一個模塊讀入的同時,行插值模塊就完成了行放大。在一幀圖像的幀頭,行插值模塊對2行數(shù)據(jù)進(jìn)行操作,在第2行到倒數(shù)第2行,行插值只對單行數(shù)據(jù)進(jìn)行處理,處理完畢后并通知列插值模塊進(jìn)行下一步運(yùn)算。列插值模塊在收到行插值模塊給的信號后,從雙口RAM中讀取已經(jīng)存入的兩行數(shù)據(jù),并完成中間行的插值,在運(yùn)算的過程中并把RAM中的第一行的數(shù)據(jù)逐個讀出并送到下一個模塊。當(dāng)完成列插值運(yùn)算后,立即通知行插值模塊開始讀入新的一行,并在讀入的同時,把新產(chǎn)生的行讀出。行插值模塊完成新的一行讀入后,通知列插值模塊與RAM中上一次存入的第二行(第一次列插值的第3行)進(jìn)行列插值操作,并重復(fù)上述操作,直至完成當(dāng)前幀。具體流程如圖3所示。
2.2 算法實(shí)現(xiàn)
圖像處理模塊的具體實(shí)現(xiàn)結(jié)構(gòu)如圖4所示。該模塊由3個部分構(gòu)成:ram_control模塊實(shí)現(xiàn)RAM控制和行放大;calculate模塊實(shí)現(xiàn)列放大和數(shù)據(jù)輸出;dpram為雙口RAM用于數(shù)據(jù)存儲。
(1)ram_control模塊。D_SYP為2倍的像素時鐘輸入,SYP為像素時鐘,SYL為行同步信號,G_reset為全局復(fù)位信號,data_in為數(shù)據(jù)輸入端口,cal_done為列運(yùn)算完成信號指示,done為行放大完成信號,其余信號為dpram控制信號。
(2)calculate模塊。caleulate模塊與ram_control模塊功類似,再運(yùn)算完成后可以控制數(shù)據(jù)輸出到下一個功能模塊。
(3)dpram。dpram可以實(shí)現(xiàn)不同速率的輸入和輸出,還可以根據(jù)需求改變同一個RAM口的不同速率的輸入和輸出,本文采用了兩路不同的時鐘分別控制ram_a口和ram_b口,同一個口用同樣的時鐘讀入讀出數(shù)據(jù)。
3 系統(tǒng)仿真與實(shí)現(xiàn)
圖5為quartus功能仿真結(jié)果,時鐘速率和數(shù)據(jù)輸入均為模擬產(chǎn)生,根據(jù)仿真結(jié)果可以看出,地址發(fā)生器和數(shù)據(jù)輸出均按照設(shè)計要求輸出,理論上可以實(shí)現(xiàn)放大功能。
圖6為紅外機(jī)芯組件GW160×120所采集到的原始圖像,圖7為采用本文放大算法后采集到的圖像。對比發(fā)現(xiàn)圖像質(zhì)量較好,沒有馬賽克現(xiàn)象,可以滿足觀察需要,達(dá)到了設(shè)計要求。
4 結(jié)語
本文介紹了基于FPGA的改進(jìn)型線性插值圖像放大模塊的設(shè)計方法,將常用放大算法架構(gòu)進(jìn)行了優(yōu)化提高了運(yùn)行效率,在不明顯降低插值效果的前提下降低了計算量。在以后的應(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)性。