《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA的實時圖像預處理技術在汽車夜視系統(tǒng)中的應用
基于FPGA的實時圖像預處理技術在汽車夜視系統(tǒng)中的應用
白秋果,,李志剛,,劉樹亭
摘要: 針對紅外圖像的特點,提出了汽車夜視系統(tǒng)中圖像增強的預處理方案,。給出了基于FPGA的視頻格式轉(zhuǎn)換,、快速中值濾波,、自適應平臺直方圖雙向均衡化的原理,、實現(xiàn)方法及仿真結(jié)果。仿真結(jié)果表明本方案較好地滿足了圖像處理效果和處理速度的要求,。
Abstract:
Key words :

    摘  要: 針對紅外圖像的特點,,提出了汽車夜視系統(tǒng)中圖像增強的預處理方案。給出了基于FPGA的視頻格式轉(zhuǎn)換,、快速中值濾波,、自適應平臺直方圖雙向均衡化的原理、實現(xiàn)方法及仿真結(jié)果,。仿真結(jié)果表明本方案較好地滿足了圖像處理效果和處理速度的要求,。 

    關鍵詞: 汽車夜視系統(tǒng);FPGA,;視頻格式轉(zhuǎn)換,;中值濾波;自適應平臺直方圖雙向均衡化

    汽車紅外夜視系統(tǒng)作為輔助駕駛系統(tǒng)的一部分,,在提高夜間駕駛的安全性方面起到了重要的作用,。但由于受到紅外器件發(fā)展的限制,其成像效果不夠理想,,影響了汽車紅外夜視系統(tǒng)在實際中的應用,。在系統(tǒng)中加入實時圖像處理功能是最為經(jīng)濟有效的方法[1]。 

    為保持圖像數(shù)據(jù)傳輸和處理的連續(xù)性,,圖像數(shù)據(jù)的處理不能導致圖像數(shù)據(jù)傳輸?shù)淖枞?、中斷或圖像數(shù)據(jù)的丟失,因此實時圖像處理系統(tǒng)必須具有快速處理巨大數(shù)據(jù)量的能力,。FPGA以其硬件并行性,、編程靈活性等特點,非常適合實時大數(shù)據(jù)量的處理,。 

1 FPGA圖像預處理功能設計

    針對紅外圖像噪聲大,、對比度低、圖像細節(jié)分辨能力差等特點,,采用了基于流水線方式的快速中值濾波方法濾除視頻圖像中的噪聲,,采用自適應平臺直方圖雙向均衡化方法增強視頻圖像的視覺效果。同時為便于視頻圖像的處理,,在圖像處理前后對視頻圖像的格式進行了轉(zhuǎn)換,。 

    FPGA圖像預處理功能如圖1所示。 

 

 

2 視頻格式的轉(zhuǎn)換

    汽車紅外夜視系統(tǒng)中,,視頻圖像采集部分的攝像機輸出的模擬信號經(jīng)AD轉(zhuǎn)換后變?yōu)榉螴TU-R BT.656標準的YUV422格式數(shù)字數(shù)據(jù)流,,其中行起始和結(jié)束標志融合在數(shù)據(jù)流中。為了使視頻數(shù)據(jù)流的表示更加清晰,,將其轉(zhuǎn)換為MHIVF(Mitth?觟gskolans Interlaced Video Format)格式,。在圖像處理之后,,再將其轉(zhuǎn)換回ITU-R BT.656標準數(shù)據(jù)格式進行DA轉(zhuǎn)換輸出。ITU-R BT.656標準的YUV422格式數(shù)字視頻數(shù)據(jù)流[2]和MHIVF的時序關系分別如圖2和圖3所示,。 

 

 

 

    圖2中Y表示亮度,,Cb和Cr是色差信號。數(shù)據(jù)流中有兩個定時基準信號:一個在每個視頻數(shù)據(jù)塊的開始(Start of Active Video,,SAV),,另一個在每個視頻數(shù)據(jù)塊的結(jié)束(End of Active Video,EAV),。每個定時基準信號由4個字的序列組成,,格式如下:FF 00 00 XY(數(shù)值以16進制表示,F(xiàn)F00保留僅供定時基準信號用),。頭三個是固定前綴,,第4個字包含奇偶場標識、場消隱狀態(tài)和行消隱狀態(tài)的信息,。定時基準信號內(nèi)的比特分配如表1所示,。 

 

 

注:(1)MSB:Most Significant Bit(最高位); 

     LSB:Least Significant Bit(最低位),。 

    (2)F=0 第1場,;F=1 第2場。 

    V=1 場消隱期,;V=0 其他處,。 

    H=0 行起始處;H=1 行結(jié)束處,。 

    (3)P0,,P1,P2,,P3為保護位,,它們的狀態(tài)取決于F、V,、H的狀態(tài),。在數(shù)據(jù)接收端,能夠進行一位糾錯和兩位檢錯,。 

    圖3中pclk為像素時鐘信號,;ofsync和efsync分別為奇場和偶場同步信號,每場起始處第一個時鐘周期高電平,;rsync為行同步信號,,行有效期間為高電平,,行間至少一個時鐘周期,;pdata為像素數(shù)據(jù),。 

2.1 ITU-R BT.656轉(zhuǎn)換為MHIVF的方法及實現(xiàn)

    監(jiān)測到SAV標志到來時,rsync置1(維持一個時鐘周期),,ofsync和efsync視XY的具體值決定是否置1,。同時對像素個數(shù)進行計數(shù),如果累計值達到了一行像素的個數(shù)上限,,則rsync置0,,ofsync或efsync也置為0。等待下一行開始信號的到來,,如此反復,。同時由于系統(tǒng)主要應用在光照條件較弱的場合,采集黑白圖像即可,,因此后續(xù)圖像處理只需要亮度信號即可,,色差信號可以從數(shù)據(jù)流中去除。從視頻數(shù)據(jù)流的第二個數(shù)據(jù)開始每兩個數(shù)取一個便分離出了亮度信號,,MHIVF中的像素時鐘可以從對工作時鐘的二分頻得到,。整個模塊的功能在有限狀態(tài)機(FSM)的協(xié)調(diào)下完成。模塊結(jié)構(gòu)如圖4所示,。 

 

 

2.2 MHIVF轉(zhuǎn)換為ITU-R BT.656的方法及實現(xiàn)

    要完成MHIVF到ITU-R BT.656的轉(zhuǎn)換,,需要在視頻數(shù)據(jù)流每一行的起始和結(jié)束位置分別添加SAV和EAV標志,同時應添加色差信號Cb和Cr,。為實現(xiàn)上述功能,,設置了四個8位寄存器和一個二選一選擇器,由有限狀態(tài)機FSM協(xié)調(diào)工作,。具體實現(xiàn)過程如下:模塊處于等待狀態(tài)直到ofsync或efsync和rsync到來,,然后視頻數(shù)據(jù)輸入到4個8 bit串行寄存器的第一個。因為SAV和EAV均為4 B,,所以視頻數(shù)據(jù)依次通過4個寄存器就相當于做了4個時鐘周期的延時,。在這4個時鐘周期內(nèi)二選一選擇器選擇FSM產(chǎn)生的SAV或EAV標志輸出,這樣就在數(shù)據(jù)流中加入了SAV和EAV標志,。在二選一選擇器和FSM之間設立握手信號,,在添加SAV或EAV標志的同時,如果rsync有效,,則二選一選擇器選擇FSM產(chǎn)生的Cb和Cr信號輸出,,同時改變握手信號,這樣在下一個時鐘的上升沿,,如果rsync有效,,二選一選擇器會選擇從寄存器傳來的數(shù)據(jù)作為輸出。如此反復,,就實現(xiàn)了在數(shù)據(jù)流中添加色差信號Cb和Cr的功能,。因為系統(tǒng)中使用的是黑白圖像,,所以為了簡化設計,色差信號Cb和Cr的值均取十進制值128,。模塊結(jié)構(gòu)如圖5所示,。 

 

 

    為了檢驗模塊功能的正確性,將格式相互轉(zhuǎn)換的兩個子模塊綜合進行了仿真,,得到了預期的波形,,說明模塊正確完成了預定的功能。仿真波形圖6所示,。 

 

 

3 流水線快速中值濾波 

3.1 快速中值濾波的原理

    中值濾波[3-4]是一種非線性濾波技術,,它能有效抑制圖像噪聲、提高信噪比而保持圖像邊緣,。它是一種鄰域運算,,把鄰域中的像素按灰度級進行排序,然后選擇該組的中間值作為輸出像素值,。如果采用3×3模板,,則中值為窗口內(nèi)排第五位的像素值。由于只需要取出中值,,所以沒有必要對窗口內(nèi)的像素值進行全部排序,。 

    將3×3窗口內(nèi)的各個像素分別定義為P1、P2,、P3,、P4、P5,、P6,、P7、P8,、P9,,像素排列如表2所示。 

 

 

    在3×3窗口中共有9個數(shù)據(jù),,中值的特點是窗口中至多有4個數(shù)比它本身大,,至多有4個數(shù)比它本身小。算法思想是逐步淘汰,,整個過程中如果有兩個數(shù)據(jù)相等,,算法不受影響。具體過程如下:第一步將各行數(shù)據(jù)從小到大分別進行排序,,并從小到大存放,;第二步對三列數(shù)據(jù)分別進行排序。在第一列數(shù)據(jù)中取出最大值,第一列中的另外兩個數(shù)至少有5個數(shù)比它們本身大,,不可能為中值,。在第二列數(shù)據(jù)中取出中值。對于第二列數(shù)據(jù)的最小值,,至少有5個數(shù)比它本身大(本列中另外兩個數(shù)和第三列中的三個數(shù)),不可能為中值,;對于第二列數(shù)據(jù)的最大值,,至少有5個數(shù)比它本身小(本列中另外兩個數(shù)和第一列中的三個數(shù)),,不可能為中值,。在第三列數(shù)據(jù)中取出最小值,第三列中的另外兩個數(shù)至少有5個數(shù)比它們本身小,,不可能為中值,。這樣窗口中值的可能取值只剩下三種可能。對這三個數(shù)排序取中值即為窗口的中值,。比較過程如圖7所示,。 

 

 

    本算法第一步的三行排序可以并行,第二步的三列排序也可以并行,,整個過程只需要3個時鐘周期,。由于中值濾波要選取3×3的模板才能完成一個像素點的運算,所以對于一幅圖像中的最外面一圈像素,,無法生成3×3的模板,。真正能夠處理的像素點是從第二行第二列的像素點開始的。對于未覆蓋的區(qū)域,,本系統(tǒng)中采取的方法是用模板的中心值代替,。 

3.2 快速中值濾波的流水線實現(xiàn)

    為了完成中值濾波功能,設置了三個模塊:行列計數(shù)器模塊,、3×3模板生成模塊,、中值濾波模塊。模塊結(jié)構(gòu)框圖如圖8所示,。 

 

 

    行列計數(shù)器模塊根據(jù)ofsync,、efsync、rsync,,利用模塊內(nèi)嵌入的計數(shù)器對當前像素所處的行數(shù)和列數(shù)進行標識,。3×3模板生成模塊對串行輸入的圖像數(shù)據(jù)流進行緩存,然后根據(jù)當前像素所處的位置調(diào)整模板中的數(shù)據(jù)輸出,。在模板和圖像的相對滑動方面,,本文采用固定模板滑動圖像的方法,并針對此方法提出了一種緩存方案:利用FPGA內(nèi)部的BlockRAM開辟兩行加三個像素的緩存區(qū)域R,如果一行像素的個數(shù)為W,,則R所占空間為2W+3(地址范圍為[0,,2W+2])。當有新像素輸入時,,R(2W+1)~R(0)依次賦值給R(2W+2)~R(1),,新像素值存入R(0)。這種方法的優(yōu)點是3×3模板的9個數(shù)與R中元素的對應位置固定不變,,給操作帶來了極大的方便,。由于每個時鐘周期都輸出一組模板數(shù)據(jù),如果中值濾波模塊采用串行單次排序的方法,,則在完成一次排序之前又會有兩組數(shù)據(jù)到達,,這就會造成數(shù)據(jù)的大量丟失,直接影響圖像的質(zhì)量,;如果讓模板生成模塊每3個周期輸出一組數(shù)據(jù)則會降低系統(tǒng)的運行速度,。本文采用3級流水線處理方法,當流水線滿負荷運轉(zhuǎn)時,,每個時鐘周期都可以輸出中值濾波的結(jié)果,,極大地提高了吞吐量。 

    流水操作的中值濾波模塊的仿真結(jié)果如圖9所示,。 

 

 

    采用TEXTIO方法讀入由單幀圖像生成的測試數(shù)據(jù)進行仿真,。中值濾波前后的效果如圖10和圖11所示。 

 

 

4 自適應平臺直方圖雙向均衡化 

4.1 自適應平臺直方圖雙向均衡化的原理

    自適應平臺直方圖雙向均衡化是在直方圖統(tǒng)計的基礎上,,通過尋找統(tǒng)計直方圖中的局部最大值和整體最大值得出適當?shù)钠脚_閾值,,然后利用此閾值修正統(tǒng)計直方圖,進而在灰度等級和灰度級間距兩方面對直方圖進行均衡化[3]的一個過程,。算法原理如下: 

    首先統(tǒng)計圖像的直方圖,,在統(tǒng)計圖像直方圖時為落在某一個灰度級上的像素點數(shù)設置一個合適的上限閾值(即平臺值T),適度限制占有像素數(shù)較多的灰度級的空間拉伸,。當某一灰度級的像素數(shù)大于平臺值T,,則統(tǒng)計的像素數(shù)置為T;當某一灰度級的像素數(shù)小于平臺值T,,則統(tǒng)計的像素數(shù)為實際值,。因而統(tǒng)計直方圖變?yōu)椋?nbsp;

    

    其中,m為表示圖像灰度級的位數(shù),;k表示圖像的灰度級,,對于8位的灰度圖像,0≤k≤255,;T是平臺閾值,;P(k)是圖像中第k個灰度級的像素數(shù),;PT(k)是圖像的平臺直方圖。當選取的平臺值T大于直方圖的主峰值時,,平臺直方圖均衡化演化為經(jīng)典平臺直方圖均衡化,;當選取的平臺值過小時,增強圖像細節(jié)的同時又會增強圖像的背景和噪聲,,達不到預期的效果,;因此選擇的平臺值必須小于統(tǒng)計直方圖的主峰值而大于等于直方圖中對應于目標的峰值。本文采用一種自適應求取平臺值的算法,,大大增強了系統(tǒng)的靈活性和適用性,。 

    自適應求取平臺值的具體算法[5]如下: 

    (1)統(tǒng)計原圖像的直方圖P(k),0≤k≤M,,對P(k)進行3鄰域一維中值濾波,;然后選取直方圖中的非零單元,,構(gòu)成集合{F(l)|0≤l≤L},,L為P(k)中非零單元的個數(shù); 

    (2)找出F(l)的局部最大值和整體最大值,。對非零單元進行一階差分運算: 

    F(1)(m)=F(m)-F(m-1) 

其中,,1≤m≤L。找出F(l)中滿足下列條件的F(li): 

    F(1)(m-1)>0,,F(xiàn)(1)(m)≥0,,F(xiàn)(1)(m+1)<0 

即F(1)(m)的符號在m處發(fā)生了變化(由正變負),則F(li)為局部最大值,,其中0≤li≤L,,0≤i≤N,N為局部最大值的個數(shù),。然后,,由F(li)求出整體最大值F(lk)。 

    (3)求出子集{F(li)|k≤i≤N}中的均值F(lk),,F(xiàn)(lk)即為估計的平臺閾值,。此處取子集{F(li)|k≤i≤N}的中值效果會更好一些,但考慮到子集中數(shù)據(jù)的個數(shù)根據(jù)圖像的不同而不同,,所以要實現(xiàn)排序非常繁瑣,,不利于實時實現(xiàn)。用均值代替中值,,加快了運算速度,,同時也取得了令人滿意的圖像效果。 

    計算出平臺閾值得到平臺直方圖后,,對灰度級數(shù)目進行統(tǒng)計,。假設平臺直方圖的存儲單元為S,,灰度級數(shù)目為M,令M0=0,,則: 

    

    上式完成對灰度范圍內(nèi)不為零的灰度級進行累加計算,,從而獲得有效的實際灰度級數(shù)。Mk表示累積直方圖中第k級灰度之前(包括k)的灰度級數(shù)目,,M2m-1即為處理后圖像的實際灰度級數(shù),。 

    然后對這些有效灰度級進行重新排序,在整個灰度范圍內(nèi)作等間距排列,,變換函數(shù)為: 

    

    Tk表示第k級灰度在新直方圖中的灰度值,,也即灰度值k經(jīng)平臺直方圖雙向均衡后要顯示的新灰度值。 

4.2 自適應平臺直方圖雙向均衡化算法的FPGA實現(xiàn)

    自適應平臺直方圖雙向均衡化的硬件實現(xiàn)主要由直方圖統(tǒng)計模塊,、平臺值計算模塊,、平臺直方圖灰度級統(tǒng)計模塊、灰度間距計算模塊,、灰度映射模塊,、控制模塊組成,如圖12所示,。 

 

 

    平臺值計算模塊的結(jié)構(gòu)框圖如圖13所示,。 

 

 

    輸入圖像數(shù)據(jù)在讀入的同時進行直方圖統(tǒng)計,直方圖數(shù)據(jù)存入由FPGA內(nèi)部BlockRam后DistributedRam構(gòu)成的ram1中,,然后根據(jù)平臺值計算模塊計算出的平臺值對統(tǒng)計直方圖進行修正得到平臺直方圖,,存放于ram2中。結(jié)束后,,從ram2中讀取數(shù)據(jù)統(tǒng)計實際的灰度級數(shù),,然后將這些灰度級均勻分布在要顯示的灰度級上,從而減少了灰度冗余,,使呈現(xiàn)圖像更具層次感,。最后進行灰度映射將映射關系存于ram3中,輸入數(shù)據(jù)可根據(jù)灰度值查表輸出,。這樣就完成了對圖像的增強工作,。其中灰度間距計算模塊采用查表法,以灰度級數(shù)做為輸入,,將把這些灰度級均勻分布在256級灰度上的間距提前存入表中,。查表只需一個時鐘周期,較除法運算,,速度大大提高,。 

    采用TEXTIO方法讀入由單幀圖像生成的測試數(shù)據(jù)進行仿真。處理前后圖像的效果及直方圖如圖14~圖17所示,。 

 

 

    快速中值濾波方法有效去除了圖像中的噪聲,,而且很好地保持了圖像的邊緣,,其流水線方式的實現(xiàn)極大地提高了系統(tǒng)的吞吐量。自適應平臺直方圖雙向均衡化可根據(jù)圖像的不同自動調(diào)整用以修正直方圖的平臺值,,增強了圖像對比度且保證了圖像過渡自然,。視頻格式的轉(zhuǎn)換使得這兩種操作更加方便。圖像的預處理將使得汽車夜視系統(tǒng)的成像效果得到極大的改善,。 

參考文獻

[1] 韓寶玲,,黃貞華,何煒.新型汽車紅外夜視系統(tǒng)的研究與開發(fā)[J].計算機測量與控制,,2004(9):874-876. 

[2] 俞斯樂.電視原理(第6版)[M].北京:國防工業(yè)出版社,,2005:95-145. 

[3] RAFAEL C.Gonzalez Richard E.Woods.數(shù)字圖像處理(第二版)[M].北京:電子工業(yè)出版社,2003:59-112. 

[4] 李雷鳴,,張煥春,,張波.一種基于FPGA的圖像中值濾波器的硬件實現(xiàn)[J].電子工程師,2004(2):48-50. 

[5] 王炳健,,劉上乾,,拜麗萍.紅外圖像實時增強的新算法[J].光電工程,2006(1):46-49

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。