|
由于紅外圖像的成像機理以及紅外成像自身的原因,紅外圖像有對比度低、圖像較模糊、噪聲大等特點。因此抑止噪聲,提高圖像信噪比,以及調整紅外圖像對比度,以利于后續圖像分析、目標識別或跟蹤,必須對紅外圖像進行增強處理。另外,在其他場合,若采用人機交互方式,則必須對原始圖像進行預處理,改善圖像視覺效果,使其更適合人機進一步的分析和處理。 圖像增強從作用域出發,分為空間域增強和頻率域增強兩種。頻率域是一種間接增強的方法,由于存在域之間的變換和反變換,計算復雜,難以滿足實時性要求。自適應分段線性拉伸算法是一種空間域圖像增強方法,直接對圖像像素灰度進行操作,由于運算過程簡單、實現方便,目前的圖像增強預處理電路大多選用這種算法。硬件實現上,最初是采用單片DSP芯片實現,其原理為:圖像數據實時的傳輸給DSP,DSP接收完1塊數據后,再對整塊數據進行增強處理,這樣勢必會造成時間的延遲,不能滿足精確制導武器系統實時性的要求。后來硬件結構發展為采取DSP,FPGA芯片相結合的方式。這樣,有效結合了DSP的運算能力強與FPGA邏輯和存儲資源豐富的優點;不足之處在于,DSP與FPGA之間的通信給設計工作增加了額外負擔。與DSP相比,FPGA結構上的優勢使得其更適合完成并行處理、及結構性強和高速的運算。本文基于這種算法理論基礎,使用xilinx公司規模較大的XC4VLXl5系列FPGA,實現了紅外圖像的實時處理。 1 自適應線性分段線性灰度級拉伸算法 圖像灰度線性拉伸算法表達式為: 式中:i是圖像數據行號;j是圖像數據列號;Y(i,J)是拉伸后輸出圖像灰度值;X(i,j)是輸入原始圖像灰度值,為14 b二進制數;Xmin是輸入圖像數據的最小灰度值;Xmax是輸入圖像數據的最大灰度值;Zmax表明輸出圖像的最大灰度值,設計中拉伸后的圖像灰度值用8 b二進制數表示,故Zmax=255。 首先對紅外圖像做灰度直方圖統計,低信噪比條件下,選取壓縮因子為5%,將盲元和噪聲的影響降到最低。分別搜索5%最大灰度值中的最小值作為Xmax,5%最小灰度值里的最大值作為Xmin。拉伸轉換時,將大于Xmax的像素灰度置為Zmax,小于Xmin的像素灰度置為O。此算法將線性拉伸區間自適應地分為[O,Xmin),[Xmin,Xmax]和(Xmax,255]三個部分。其中,[O,Xmin)和(Xmax,255]兩個灰度區間的像素灰度分別被壓縮為O和255。若圖像中目標較小,且目標正好位于兩個被壓縮的區間內,就有可能被抑制。為避免這種情況發生,可視情況適當調整壓縮因子5%的大小。 2 拉伸算法的FPGA實現 2.1 設計思路 根據以上算法分析,FPGA設計思路如下:在每幀圖像幀正程,用雙端口RAM進行直方圖統計,記錄每個像素灰度值出現的次數,幀逆程即可統計得到此幀圖像的Xmin和Xmax。因為相鄰兩幀圖像近似度高,可用前幀得到的Xmin和Xmax來處理下幀圖像。在幀逆程時,調用除法器計算出 的值;在下幀正程時,只需計算Q·[X(i,j)-Xmin],然后將得到的結果除以64(左移6位),即對每個像素只需1次減法、1次乘法和移位就可完成拉伸運算。實現框圖如圖1所示,拉伸后數據的輸出僅比輸入延時62.5 ns,實現了對紅外圖像的實時處理。 2.2 硬件設計 通過以上設計思路的分析,設計主要包括灰度直方圖統計、除法和拉伸運算3部分。下面進行詳細介紹。 2.2.1 雙端口RAM XC4VLXl5芯片具有豐富的BlockRAM資源,用它構成雙端口RAM,進行灰度直方圖統計。像素的灰度值作為雙端口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沒有整體清零功能,設計中采用從“O”地址開始。依次往高地址寫零的方式清零。 2.2.2 除法器 除法運算通過調用ISE IP Core Generator生成的15位定點除法器來實現,滿足高精度要求,而不采用逼近法。一幀圖像的拉伸只需調用一次除法器,提高了運算的效率。在幀逆程計算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)進行簡單變換,可以記為: Q值在上幀結束前已經得到,根據式(2)拉伸運算得到簡化,只需1次減法和乘法運算,得到積的小數點左移6位后,截取低8位就得到拉伸后的灰度值。需要注意的是,截取前要判定乘法是否溢出,如果溢出,結果置為最大灰度值255。 3 系統驗證 采用飛機高空采集的地面紅外圖像作為驗證模板,灰度拉伸前的原始圖像如圖2所示,整幅圖像對比度低,細節極不明顯。最大、最小灰度值按5%的比例選取,拉伸后的圖像如圖3所示,拉伸后可明顯看出河流、道路、汽車等地物的輪廓,但圖像中較亮和較暗的部分層次不清晰。若減小灰度值壓縮比例為2%,圖像的主要輪廓變化不明顯,較亮和較暗的部分將會顯現出一定層次,這表明被壓縮的區間相對變小,按比例拉伸的圖像范圍擴大。分段線性拉伸的結果可好可壞,分段區間的選擇是關鍵,選取時要考慮原始圖像的質量。噪聲和盲元數目較少時,被壓縮的區間可適當調小。 該設計充分利用Virtex-4 FPGA的邏輯資源,實現了紅外圖像的自適應分段線性拉伸,對FPGA芯片資源占用情況如表1所示。整個設計完全在FPGA中實現,能最大限度地減少分立元件的使用。降低了系統的整體功耗,設計周期和開發成本也就能隨之減少。算法完全采用流水線設計思路,處理后的數據相對輸入延時小于一個像素時鐘周期,最高系統時鐘可達128 MHz。設計的性能和實時性滿足預期目標,可用于精確制導武器或導航系統。 4 結語 這里簡要分析了圖像自適應分段線性拉伸算法,利用Xilinx Virtex-4 FPGA豐富的片上資源實現了這一算法。通過實驗對設計的有效性進行了驗證,圖像對比度有明顯提高,噪聲和盲元被抑制。但該算法具有局限性,僅適用于大目標的圖像增強。在天文學、計算機視覺、動態景物分析、超聲及聲納圖像處理等領域中廣泛存在著點目標紅外圖像,由于點目標無形狀、尺寸等可利用的信息,處理時須存儲多幀圖像,數據處理量大。在做圖像灰度級拉伸時,目標有可能被作為噪聲而抑制掉,從而丟失有用信息,今后需要對點目標紅外圖像的增強方法做進一步研究。 |