摘 要:為改善紅外圖像的視覺效果和后續處理質量,需要對圖像進行增強處理。在此介紹并實現了一種空間域圖像增強算法,自適應分段線性拉伸算法。首先簡要分析算法原理,對該算法基于Xilinx公司XC4VLX15系列FPGA的實現方法進行了研究,以兼顧系統實時性和集成度為目的,提出灰度直方圖統計和拉伸運算等關鍵模塊的解決方案。通過試驗結果分析,對壓縮因子的選取提出建議。該設計的輸出延遲僅為62.5 ns,且具有實現簡單、集成度高、功耗低等優點,適合在精確制導武器和導航系統中應用。
關鍵詞:紅外圖像; 圖像增強; 直方圖統計; 壓縮因子
中圖分類號:TP391 文獻標識碼:B
文章編號:1004-373X(2010)10-0078-03
Implementation of Adaptive-PiecewiseLinear Stretching Algorithm Based on FPGA
NIU Ying-yu
(China Airborne Missile Academy, Luoyang 471009, China)
Abstract: Infrared images need to be enhanced to improve its performance in the visual effect and subsequent processing quality. One kind of image enhancement algorithm adaptive-piecewise linear stretching algorithm in spatial domain is introduced. The techniques to implement it were researched based on Xilinx XC4VLX15 FPGA chip. The solutions to implementimportant modules such as the histogram statistics and adjusting operation are proposed in consideration of the capability of real-time processing and system integration level. Suggestions of the saturated factor are made with the analysis ofthe experimental results. The designed output delay is only 62.5 ns, and other advantages such as simple structure, high integration level and low power consumption allow it to applied in the precision-guided weapon and navigation system.
Keywords:infrared image; image enhancement; histogram statistics; saturated factor
0 引 言
由于紅外圖像的成像機理以及紅外成像自身的原因,紅外圖像有對比度低、圖像較模糊、噪聲大等特點[1]。因此抑止噪聲,提高圖像信噪比,以及調整紅外圖像對比度,以利于后續圖像分析、目標識別或跟蹤,必須對紅外圖像進行增強處理。另外,在其他場合,若采用人機交互方式,則必須對原始圖像進行預處理,改善圖像視覺效果,使其更適合人機進一步的分析和處理。
圖像增強從作用域出發,分為空間域增強和頻率域增強兩種[2-3]。頻率域是一種間接增強的方法,由于存在域之間的變換和反變換,計算復雜,難以滿足實時性要求。自適應分段線性拉伸算法是一種空間域圖像增強方法,直接對圖像像素灰度進行操作,由于運算過程簡單、實現方便,目前的圖像增強預處理電路大多選用這種算法。硬件實現上,最初是采用單片DSP芯片實現,其原理為:圖像數據實時的傳輸給DSP,DSP接收完1塊數據后,再對整塊數據進行增強處理,這樣勢必會造成時間的延遲,不能滿足精確制導武器系統實時性的要求。后來硬件結構發展為采取DSP,FPGA芯片相結合的方式[4]。這樣,有效結合了DSP的運算能力強與FPGA邏輯和存儲資源豐富的優點;不足之處在于,DSP與FPGA之間的通信給設計工作增加了額外負擔。與DSP相比,FPGA結構上的優勢使得其更適合完成并行處理、及結構性強和高速的運算[5]。本文基于這種算法理論基礎,使用Xilinx公司規模較大的XC4VLX15系列FPGA,實現了紅外圖像的實時處理。
1 自適應線性分段線性灰度級拉伸算法
圖像灰度線性拉伸算法表達式為:
Y(i,j)=X(i,j)-XminXmax-XminZmax(1)
式中:i是圖像數據行號;j是圖像數據列號;Y(i,j)是拉伸后輸出圖像灰度值;X(i,j)是輸入原始圖像灰度值,為14 b二進制數;Xmin是輸入圖像數據的最小灰度值;Xmax是輸入圖像數據的最大灰度值;Zmax表明輸出圖像的最大灰度值,設計中拉伸后的圖像灰度值用8 b二進制數表示,故Zmax=255。
首先對紅外圖像做灰度直方圖統計[6],低信噪比條件下,選取壓縮因子為5%,將盲元和噪聲的影響降到最低。分別搜索5%最大灰度值中的最小值作為Xmax,5%最小灰度值里的最大值作為Xmin。拉伸轉換時,將大于Xmax的像素灰度置為Zmax,小于Xmin的像素灰度置為0。
此算法將線性拉伸區間自適應地分為[0,Xmin),[Xmin,Xmax]和(Xmax,255]三個部分。其中,[0,Xmin)和(Xmax,255]兩個灰度區間的像素灰度分別被壓縮為0和255。若圖像中目標較小,且目標正好位于兩個被壓縮的區間內,就有可能被抑制。為避免這種情況發生,可視情況適當調整壓縮因子5%的大小。
2拉伸算法的FPGA實現
2.1 設計思路
根據以上算法分析,FPGA設計思路如下:在每幀圖像幀正程,用雙端口RAM進行直方圖統計,記錄每個像素灰度值出現的次數,幀逆程即可統計得到此幀圖像的Xmin和Xmax。因為相鄰兩幀圖像近似度高,可用前幀得到的Xmin和Xmax來處理下幀圖像。在幀逆程時,調用除法器計算出Q=16 384Xmax-Xmin的值;在下幀正程時,只需計算Q#8226;[X(i,j)-Xmin],然后將得到的結果除以64(左移6位),即對每個像素只需1次減法、1次乘法和移位就可完成拉伸運算。實現框圖如圖1所示,拉伸后數據的輸出僅比輸入延時62.5 ns,實現了對紅外圖像的實時處理。
圖1 拉伸算法的實現框圖
2.2 硬件設計
通過以上設計思路的分析,設計主要包括灰度直方圖統計、除法和拉伸運算3部分。下面進行詳細介紹。
2.2.1 雙端口RAM
XC4VLX15芯片具有豐富的BlockRAM資源,用它構成雙端口RAM[7],進行灰度直方圖統計。像素的灰度值作為雙端口RAM的地址,對應空間存儲此灰度值在1幀圖像里的頻數。以320×256幀大小、灰度值為14 b的紅外圖像為例,在每個像素灰度值都相同的極限情況下,每個地址空間需要的存儲的值為81 920,轉換為二進制有17 b,故所需存儲空間大小為17 b×214。對雙端口RAM的操作分為三個階段:
(1) 在幀正程時,只需對A端口進行讀/寫操作。根據接收到的像素灰度值,先讀出RAM中對應地址空間的儲值,加“1”后回寫入原來的地址空間,這樣在每幀正程結束時,就統計完了每個灰度值出現的頻數,即完成了灰度直方圖統計。
(2) 幀逆程時,要同時對A,B端口進行讀操作。對于A端口,依次從高地址讀取RAM中的數,將讀取的數進行累加,當和大于幀像素個數的5%時,此時對應的地址值即為Xmax;類似地對B端口操作,從0地址開始讀RAM,可找到Xmin。將得到的灰度值Xmin和Xmax存入寄存器,作為除法器和下一幀圖像拉伸運算的輸入。
(3) 每幀最后將雙端口RAM清零,為下一幀灰度直方圖統計做準備。由于雙端口RAM沒有整體清零功能,設計中采用從“0”地址開始,依次往高地址寫零的方式清零。
2.2.2 除法器
除法運算通過調用ISE IP Core Generator生成的15位定點除法器來實現[8],滿足高精度要求,而不采用逼近法。一幀圖像的拉伸只需調用一次除法器,提高了運算的效率。在幀逆程計算Q=16 384/(Xmax-Xmin)的值,對于15位輸入,除法器有18個時鐘周期的延時,而這并不會影響圖像處理的實時性。
2.2.3 控制時鐘
在1個像素時鐘周期內要完成讀RAM、加法計算和回寫RAM的操作,RAM的控制時鐘至少必須是像素時鐘的4倍。控制時鐘的選取還要考慮幀逆程的時間長度,要在逆程里訪問RAM查找到Xmin和Xmax,還要完成RAM清零操作。FPGA系統時鐘為96 MHz,分頻后產生48 MHz,為像素時鐘8倍,用它作為雙端口RAM和除法器的控制時鐘,可滿足要求。
2.2.4 拉伸運算
將式(1)進行簡單變換,可以記為:
Y(i,j)=Q#8226;[X(i,j)-Xmin]/26(2)
式中:
Q=16 384/(Xmax-Xmin)(3)
Q值在上幀結束前已經得到,根據式(2)拉伸運算得到簡化,只需1次減法和乘法運算,得到積的小數點左移6位后,截取低8位就得到拉伸后的灰度值。需要注意的是,截取前要判定乘法是否溢出,如果溢出,結果置為最大灰度值255。
3 系統驗證
采用飛機高空采集的地面紅外圖像作為驗證模板,灰度拉伸前的原始圖像如圖2所示,整幅圖像對比度低,細節極不明顯。最大、最小灰度值按5%的比例選取,拉伸后的圖像如圖3所示,拉伸后可明顯看出河流、道路、汽車等地物的輪廓,但圖像中較亮和較暗的部分層次不清晰。若減小灰度值壓縮比例為2%,圖像的主要輪廓變化不明顯,較亮和較暗的部分將會顯現出一定層次,這表明被壓縮的區間相對變小,按比例拉伸的圖像范圍擴大。分段線性拉伸的結果可好可壞,分段區間的選擇是關鍵,選取時要考慮原始圖像的質量。噪聲和盲元數目較少時,被壓縮的區間可適當調小。
圖2 原始圖像
圖3 5%壓縮區間拉伸結果
該設計充分利用Virtex-4 FPGA的邏輯資源,實現了紅外圖像的自適應分段線性拉伸,對FPGA芯片資源占用情況如表1所示。整個設計完全在FPGA中實現,能最大限度地減少分立元件的使用,降低了系統的整體功耗,設計周期和開發成本也就能隨之減少。算法完全采用流水線設計思路,處理后的數據相對輸入延時小于一個像素時鐘周期,最高系統時鐘可達128 MHz。設計的性能和實時性滿足預期目標,可用于精確制導武器或導航系統。
表 1 FPGA資源占用情況
Number of Slices512 out of 61448%
Number of Slice Flip Flops775 out of 12 2886%
Number of 4 input LUTs526 out of 12 2884%
Number of bonded IOBs30 out of 24012%
Number of FIFO16/RAMB16s16 out of 4833%
Number of BUFG/BUFGCTRLs1 out of 323%
Number of DSP48s1 out of 323%
4 結 語
這里簡要分析了圖像自適應分段線性拉伸算法,利用Xilinx Virtex-4 FPGA豐富的片上資源實現了這一算法。通過實驗對設計的有效性進行了驗證,圖像對比度有明顯提高,噪聲和盲元被抑制。但該算法具有局限性,僅適用于大目標的圖像增強。在天文學[9]、計算機視覺、動態景物分析[10]、超聲及聲納圖像處理等領域中廣泛存在著點目標紅外圖像,由于點目標無形狀、尺寸等可利用的信息,處理時須存儲多幀圖像,數據處理量大[11]。在做圖像灰度級拉伸時,目標有可能被作為噪聲而抑制掉,從而丟失有用信息,今后需要對點目標紅外圖像的增強方法做進一步研究。
參考文獻
[1]李懷瓊.高性能凝視熱像儀處理電子學關鍵技術研究[D].南京: 南京理工大學,2006.
[2]章毓晉.圖像處理和分析[M].北京:清華大學出版社,1999.
[3]劉禾.數字圖像處理與應用[M].北京:中國電力出版社,2006.
[4]顧東升,楊南生,皮德富,等.一種基于DSP+FPGA技術的實時紅外圖像直方圖均衡器[J].紅外技術,2002(3):15-19.
[5]程軍.成像跟蹤器及其性能評估系統接口的硬件設計[D]. 武漢:華中科技大學,2006.
[6]郭師虹.空域紅外圖像增強方法的研究[D].西安:西安建筑大學, 2005.
[7]XILINX Corp.. LogicCore block memory generator V2.8 product specification[DB/DK]. [2008-09-19].http://www.xilinx.com.
[8]XILINX Corp..LogicCore divider V2.0 product specification [DB/DK]. [2008-06-27]. http:// www. xilinx. com, June 27, 2008.
[9]韓建濤,張月,陳曾平.天文圖像序列中弱目標得實時檢測算法[J].光電工程,2005,32(12): 1-4.
[10]ASKAR. A spatial-temporal diversity based real-time high performance TBD technique for detection of dim moving point target in image sequences [J]. Signal Process, 2005, 21(4): 379-383.
[11]LI Zhi-yong. Dynamic image process [M]. Beijing:Defence Industry Press,1999.