一種基于FPGA的實(shí)時(shí)紅外圖像預(yù)處理方法
摘要:由于紅外圖像預(yù)處理算法自身的復(fù)雜性,使得紅外圖像在DSP中的預(yù)處理時(shí)間較長。針對這一問題,提出一種基于FPGA的實(shí)時(shí)紅外圖像預(yù)處理方法。該方法采用了流水線技術(shù)來并行完成非均勻校正、空間濾波、直方圖統(tǒng)計(jì)等多個(gè)紅外圖像預(yù)處理算法,對系統(tǒng)結(jié)構(gòu)進(jìn)行了改進(jìn)和優(yōu)化。經(jīng)過實(shí)驗(yàn)測試驗(yàn)證,該方法合理可行,能夠?qū)崟r(shí)高效地完成紅外圖像預(yù)處理任務(wù)。與DSP圖像預(yù)處理系統(tǒng)相比可以節(jié)約將近50%的處理時(shí)間。
關(guān)鍵詞:FPGA;紅外圖像預(yù)處理;非均勻校正;空間濾波;直方圖統(tǒng)計(jì)
0 引言
在紅外圖像系統(tǒng)設(shè)計(jì)中,多采用高速DSP+FPGA的方式對紅外圖像進(jìn)行處理。在早期的設(shè)計(jì)中,DSP承擔(dān)了大部分的圖像處理工作,F(xiàn)PGA只做一些邏輯譯碼和簡單運(yùn)算的功能。但DSP運(yùn)算是相當(dāng)耗時(shí)的,當(dāng)在圖像較大、實(shí)時(shí)性要求較高的場合,用DSP進(jìn)行處理就有相當(dāng)?shù)碾y度了。隨著工藝的發(fā)展,F(xiàn)PGA片內(nèi)邏輯資源和處理速度的提高,將一部分圖像處理算法移植到FPGA中,可采用流水的處理方式,只占用很少的處理時(shí)間,能夠大大降低系統(tǒng)對于DSP的負(fù)擔(dān)。
本文介紹一種紅外圖像預(yù)處理的方法,將圖像非均勻校正、空間濾波、直方圖統(tǒng)計(jì)算法移植到FPGA中實(shí)現(xiàn),DSP只完成控制和簡單判斷的功能,有效的提高了系統(tǒng)的實(shí)時(shí)性。
1 總體設(shè)計(jì)
結(jié)合FPGA和DSP處理算法的各自特點(diǎn),本方法中將非均勻校正、空間濾波、直方圖統(tǒng)計(jì)等功能在FPGA中實(shí)現(xiàn)。
首先,紅外圖像數(shù)據(jù)以像素為單位按照流水的方式進(jìn)入到非均勻校正模塊中進(jìn)行紅外圖像的非均勻校正;之后,校正后的圖像進(jìn)入到空間濾波模塊中進(jìn)行空間濾波處理;空間濾波后的圖像數(shù)據(jù),被送到直方圖統(tǒng)計(jì)模塊進(jìn)行處理,同時(shí)濾波后的圖像數(shù)據(jù)也被存儲(chǔ)在FPGA內(nèi)部雙口RAM中;接下來,直方圖統(tǒng)計(jì)結(jié)果也將被存儲(chǔ)在FPAG內(nèi)部雙口RAM中。最終,圖像預(yù)處理后的紅外圖像數(shù)據(jù)及直方圖統(tǒng)計(jì)結(jié)果分別存儲(chǔ)在FP GA內(nèi)部雙口RAM的不同區(qū)域中。DSP按照預(yù)先設(shè)定的時(shí)序?qū)㈩A(yù)處理結(jié)果從FPGA內(nèi)部雙口RAM中讀取出來,并進(jìn)行后續(xù)處理工作。
同時(shí)DSP通過控制指令對整個(gè)預(yù)處理流程進(jìn)行控制。
總體設(shè)計(jì)如圖1所示。
下面將對非均勻校正、空間濾波、直方圖統(tǒng)計(jì)的具體設(shè)計(jì)方法進(jìn)行闡述。本文中所使用的輸入圖像為256x256x16 b數(shù)據(jù)。
1.1 非均勻校正模塊設(shè)計(jì)
在本方法中,紅外焦平面成像非均勻校正采用目前應(yīng)用較廣的兩點(diǎn)校正法,計(jì)算公式如下:
Gij和Oij分別是二點(diǎn)校正法的增益校正系數(shù)和偏置校正系數(shù),yij為校正后的輸出。二點(diǎn)校正法是利用焦平面各陣列元在溫度不同的兩個(gè)均勻輻射的黑體(高溫TH和低溫TL)下的響應(yīng)輸出計(jì)算出Gij和Oij,從而實(shí)現(xiàn)非均勻性校正。
首先將預(yù)先計(jì)算好的系數(shù)Gij和Oij存入FLASH中,系統(tǒng)上電后先將系數(shù)搬移到外部的SRAM中,再通過FPGA讀取,完成非均勻校正的乘加功能。
FPGA算法結(jié)構(gòu)如圖2所示。
為了在20MHz時(shí)鐘的一個(gè)周期內(nèi)能夠處理完一個(gè)像素的非均勻校正算法,以保證能夠流暢的進(jìn)行,將數(shù)據(jù)同步時(shí)鐘clk_20M通過DCM時(shí)鐘管理器,倍頻到60 MHz,以60 MHz時(shí)鐘進(jìn)行乘加、緩存,以達(dá)到實(shí)時(shí)處理的目的,省去了對原始圖像的緩存。
1.2 空間濾波模塊設(shè)計(jì)
在圖像生成和采集的過程中,會(huì)疊加各種各樣的噪聲,這些噪聲會(huì)使圖像質(zhì)量變差,必須對圖像信號進(jìn)行預(yù)處理,抑制背景噪聲,增加目標(biāo)強(qiáng)度,從而提高圖像的信噪比,為后續(xù)處理奠定基礎(chǔ)。在本方法中,采用均值濾波的方式,F(xiàn)PGA算法結(jié)構(gòu)如圖3所示。
為了實(shí)現(xiàn)流水處理,需要3x3的窗口模版中的3行和3列的數(shù)據(jù)能夠在一個(gè)同步時(shí)鐘輸出,在3x3窗口模版的設(shè)計(jì)中利用了兩個(gè)FIFO和9個(gè)寄存器來實(shí)現(xiàn)數(shù)據(jù)的緩存,其FPGA算法結(jié)構(gòu)如圖4所示。
由于均值濾波需要3行的數(shù)據(jù),由ISE的IP核生成FIFO_1和FIFO_2,寬度為16 b,深度為256,緩存兩行數(shù)據(jù)。利用9個(gè)寄存器Reg_1到Reg_9的緩存值Q11~Q13,Q21~Q23,Q31~Q33,進(jìn)行均值濾波,得到濾波后的圖像數(shù)據(jù)data_out,計(jì)算公式如下:
1.3 直方圖統(tǒng)計(jì)模塊設(shè)計(jì)
在實(shí)時(shí)圖像處理中,直方圖統(tǒng)計(jì)是多種空間域圖像處理的基礎(chǔ)。圖像的灰度直方圖就是圖像中像素分布在灰度等級上的概率密度,它反映不同灰度級的像素在各自灰度級別上個(gè)數(shù)之和。在本方法中,利用對空域?yàn)V波后的圖像進(jìn)行直方圖統(tǒng)計(jì),統(tǒng)計(jì)結(jié)果可作為動(dòng)態(tài)門限設(shè)置的基礎(chǔ)。
直方圖統(tǒng)計(jì)涉及到地址索引值累加的功能,利用RAM、有限狀態(tài)機(jī)和DCM模塊實(shí)現(xiàn),RAM由ISE中的IP核產(chǎn)生,數(shù)據(jù)寬度為16 b,深度覆蓋所有像素灰度值,深度值為16 384,由有限狀態(tài)機(jī)實(shí)現(xiàn)讀寫信號的控制功能,DCM設(shè)置4倍頻,直方圖統(tǒng)計(jì)的FPGA實(shí)現(xiàn)結(jié)構(gòu)框圖如圖5所示。
有限狀態(tài)機(jī)實(shí)現(xiàn)整個(gè)直方圖統(tǒng)計(jì)的信號控制功能,在實(shí)時(shí)處理中需要進(jìn)行流水處理,將輸入的20 MHz時(shí)鐘信號倍頻到80 MHz,有限狀態(tài)機(jī)工作在80 MHz。保證一個(gè)周期能夠處理完一個(gè)像素的統(tǒng)計(jì)工作,每個(gè)輸入信號有4個(gè)處理狀態(tài),分別是IDLE,READ,SUM和WRITE,狀態(tài)轉(zhuǎn)換圖如圖6所示。
各狀態(tài)工作如下:
IDLE:初始化各信號,等待使能信號有效,輸出讀使能信號,將像素灰度值輸出給RAM的地址線,并轉(zhuǎn)換到READ狀態(tài)。
READ:讀取RAM輸出的數(shù)值,并轉(zhuǎn)換到SUM狀態(tài)。
SUM:對讀取值加1,轉(zhuǎn)換到WRITE狀態(tài)。
WRITE:將累加后的值寫入RAM中,轉(zhuǎn)換到IDLE狀態(tài)。
2 應(yīng)用
在TI公司TMS320C6416T,CPU頻率為800 MHz的系統(tǒng)中運(yùn)行整個(gè)處理算法須在3 ms以上,本設(shè)計(jì)采用Xilinx公司的Virtex-4系列現(xiàn)場可編程門陣列(FPGA)實(shí)現(xiàn),使用流水線的處理方法,只緩存幾行圖像數(shù)據(jù)的延時(shí),從而在保證了圖像處理質(zhì)量的同時(shí),提供了系統(tǒng)的實(shí)時(shí)性。圖7,圖8為原始圖像和預(yù)處理后圖像的對比。
3 結(jié)語
本方法能夠有效地對紅外圖像進(jìn)行非均勻校正、空域濾波、直方圖統(tǒng)計(jì)等圖像預(yù)處理工作。與采用DSP進(jìn)行處理的系統(tǒng)比較,能夠節(jié)約將近50%的處理時(shí)間。使用FPGA實(shí)現(xiàn)的實(shí)時(shí)圖像預(yù)處理系統(tǒng)具有廣泛的應(yīng)用價(jià)值。