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