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

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

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

    汽車紅外夜視系統(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é)分辨能力差等特點,采用了基于流水線方式的快速中值濾波方法濾除視頻圖像中的噪聲,采用自適應平臺直方圖雙向均衡化方法增強視頻圖像的視覺效果。同時為便于視頻圖像的處理,在圖像處理前后對視頻圖像的格式進行了轉換。 

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

 

 

2 視頻格式的轉換

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

    (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轉換為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é)調下完成。模塊結構如圖4所示。 

 

 

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

    要完成MHIVF到ITU-R BT.656的轉換,需要在視頻數(shù)據(jù)流每一行的起始和結束位置分別添加SAV和EAV標志,同時應添加色差信號Cb和Cr。為實現(xiàn)上述功能,設置了四個8位寄存器和一個二選一選擇器,由有限狀態(tài)機FSM協(xié)調工作。具體實現(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。模塊結構如圖5所示。 

 

 

    為了檢驗模塊功能的正確性,將格式相互轉換的兩個子模塊綜合進行了仿真,得到了預期的波形,說明模塊正確完成了預定的功能。仿真波形圖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模板生成模塊、中值濾波模塊。模塊結構框圖如圖8所示。 

 

 

    行列計數(shù)器模塊根據(jù)ofsync、efsync、rsync,利用模塊內(nèi)嵌入的計數(shù)器對當前像素所處的行數(shù)和列數(shù)進行標識。3×3模板生成模塊對串行輸入的圖像數(shù)據(jù)流進行緩存,然后根據(jù)當前像素所處的位置調整模板中的數(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ù)的大量丟失,直接影響圖像的質量;如果讓模板生成模塊每3個周期輸出一組數(shù)據(jù)則會降低系統(tǒng)的運行速度。本文采用3級流水線處理方法,當流水線滿負荷運轉時,每個時鐘周期都可以輸出中值濾波的結果,極大地提高了吞吐量。 

    流水操作的中值濾波模塊的仿真結果如圖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鄰域一維中值濾波;然后選取直方圖中的非零單元,構成集合{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所示。 

 

 

    平臺值計算模塊的結構框圖如圖13所示。 

 

 

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

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

 

 

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