紅外圖像處理中平臺實(shí)時(shí)直方圖均衡器的SoC實(shí)現
O引言
直方圖均衡是紅外圖像處理中簡(jiǎn)單有效的一種圖像增強方法[1]。直方圖均衡器在增強目標的同時(shí)也放大了背景和噪聲信號,因此有人提出了平臺直方圖均衡算法,該算法能達到增強目標且較好地抑制背景和噪聲的目的[2,5],具有很大的應用價(jià)值。
傳統直方圖均衡和平臺直方圖均衡算法都具有計算量和存儲量大的缺點(diǎn),不利于實(shí)時(shí)圖像處理應用。查找表結構的處理方式可以大幅度減小存儲量和計算量,可以實(shí)現實(shí)時(shí)處理。受電子技術(shù)發(fā)展水平的限制,從公開(kāi)發(fā)表的論文看,以往的實(shí)時(shí)直方圖均衡器大都具有硬件結構過(guò)于復雜、成本高、軟件操作不靈活等缺陷,在應用中具有很大的局限性[2,4]。
某課題中使用了法國Sofradir公司288 x4的線(xiàn)陣紅外探測器,該探測器每列輸出288個(gè)圖像數據,12位圖像數據的傳輸速率為16 MHz/s,每秒大約輸出5萬(wàn)多列數據,實(shí)時(shí)進(jìn)行灰度變換是課題的基本要求。經(jīng)過(guò)深入研究,在巧妙地引入Altera公司FPGA(現場(chǎng)可編程門(mén)陣列)技術(shù)的最新成果NiosⅡ軟核微處理器后,硬件設計被大幅度簡(jiǎn)化,最后,平臺實(shí)時(shí)直方圖均衡算法能以SOC(片上系統)的方式實(shí)現。
1平臺直方圖均衡算法的原理
圖像的灰度直方圖就是圖像中每一個(gè)灰度級與其出現頻數間的統計關(guān)系。它能給出該圖像概貌性的描述,如圖像的灰度范圍、每一級灰度的頻數等,是一個(gè)一維的離散函數:
式中:L為該幅圖像中的灰度等級數;p(k)為第k個(gè)灰度級的概率密度;nk為第k個(gè)灰度級中所包含的像素數;n為該幅圖像中的像素數。
平臺直方圖均衡算法是在直方圖均衡時(shí)對灰度的權重設上限和下限兩個(gè)平臺,當某一級灰度的像素數大于或小于所設定的上限或下限平臺時(shí),權重被箝在最大值或最小值,這樣可避免變換后諸如大塊云彩等大面積背景占據過(guò)大的動(dòng)態(tài)范圍,從而為感興趣的細節部分留出提升空間。
課題要求將4 096的像素級壓縮為256級,而原始圖像數據不可能占滿(mǎn)O~4 095的每一級,若原始圖像數據中像素級的最大值為Nmax、最小值為Nmin,那么,通過(guò)仿真要將像素級從Nmin~Nmax映射到O一255。
設映射后第i級灰度的像素個(gè)數為ni,CDF(i)是累積分布函數,P1和P2分別為設定的上限和下限平臺值,其算法如下:
2 平臺直方圖均衡器的SOC實(shí)現
從紅外探測器前端信號預處理電路輸出的信號有12位數據信號data、像素時(shí)鐘信號clk_16M、列同步信號clk_l(低電平有效)、幀同步信號clk-f(低電平有效)。圖1是其時(shí)序圖,clk一32M和clk一64M是clk一16M經(jīng)鎖相環(huán)2倍頻和4倍頻的輸出時(shí)鐘。
根據需要,像素在每個(gè)灰度等級上的個(gè)數統計表只需一個(gè)24 bit×4 k存儲器即可滿(mǎn)足應用要求;灰度查找表只需8 bit×4 k存儲器即可滿(mǎn)足應用要求。在實(shí)時(shí)應用場(chǎng)合,像素灰度等級個(gè)數統計表和灰度查找表工作在乒乓方式,因此系統總存儲量為32 bit×8 k。目前很多價(jià)格較低的FPGA中都集成了滿(mǎn)足應用要求的可編程存儲器資源,因此存儲器可集成在.FPGA中。如果能將算法中的邏輯控制和算術(shù)運算都集成在FP-GA中,那么算法即可以SOC方式實(shí)現。
算法中涉及到大量的除法運算,除法運算器將消耗FPGA大量的邏輯資源和布線(xiàn)資源(以Altera公司的:FPGA為例,一個(gè)16位的并行除法器約消耗l 000個(gè)LE(邏輯單元)和芯片大部分布線(xiàn)資源),為了提高速度性能和電路運行的穩定性,加上幾級流水線(xiàn),邏輯資源和布線(xiàn)資源的消耗量將成倍增加。過(guò)度的邏輯資源尤其是布線(xiàn)資源的消耗會(huì )使電路的速度性能大幅度降低,有時(shí)甚至不能適配器件,使設計失敗。顯然,這種設計方案是不合理的。Ahera公司最新推出的NiosⅡ軟核微處理器提供了很好的解決方案。該處理器能以極小的硬件代價(jià)換取很高的性能(600~700個(gè)LE的邏輯資源和少量的布線(xiàn)資源消耗),目前,FPGA的容量都比較大,設計中根本消耗不了那么多資源,芯片中剩余的硬件資源往往比NiosⅡ軟核微處理器所消耗的硬件資源多,所以設計經(jīng)常不會(huì )增加硬件成本。它不同于傳統的微處理器,有如下特點(diǎn):
a)提供大量免費IP核,例如微處理器核NiosⅡ、定時(shí)/計數器、串口、DMA、SDRAM,SRAM,SBRAM、.Flash控制器等,用戶(hù)可以根據需要選擇IP核搭建自己的嵌入式系統,系統具有很大的靈活性。
b)提供了界面友好的硬件和軟件設計開(kāi)發(fā)環(huán)境,硬件設計流程與傳統的FPGA設計相同,軟件設計支持標準c語(yǔ)言編程,開(kāi)發(fā)環(huán)境提供了大量的庫函數供用戶(hù)調用,支持JTAG調試,軟件調試方法與現有流行微處理器的調試方法相同,除此之外,配合硬件環(huán)境,可以完成很多設計仿真,這項功能是大部分傳統微處理器不具備的。 c)支持嵌入式操作系統的移植。
d)支持32級中斷。
使用NiosⅡ軟核微處理器后,可避開(kāi)外擴高性能微處理器的復雜硬件設計,平臺實(shí)時(shí)直方圖均衡器的實(shí)現方案如圖2所示。
圖2中,統計表1、統計表2、查找表1和查找表2都是雙口RAM,都工作在乒乓方式。將16 MHz的像素時(shí)鐘經(jīng)FPGA的鎖相環(huán)倍頻到32 MHz和64 MHz,在像素時(shí)鐘的下降沿鎖存列同步、幀同步和數據信號,并將鎖存信號和倍頻時(shí)鐘給時(shí)序控制器,將鎖存的幀同步信號在其下降沿二分頻產(chǎn)生高低電平信號用來(lái)區分奇幀和偶幀。
圖2的工作過(guò)程如下:當工作在奇幀時(shí),統計表1雙口RAM實(shí)時(shí)完成像素灰度等級個(gè)數的統計工作,統計表2不工作;查找表l完成實(shí)時(shí)灰度查找工作,查找表2不工作。統計表的工作過(guò)程如下:當鎖存的列同步信號為低電平時(shí),將鎖存的數據信號作為雙口RAM讀端口和寫(xiě)端口的地址信號,用clk_16M的反相信號作為雙口RAM的讀使能信號,用clk_64M作為雙口RAM的驅動(dòng)時(shí)鐘信號;當clk_16M為高電平且clk一32M為低電平時(shí),在clk一64M的上升沿將讀出的像素灰度個(gè)數加1,當clk_16M為高電平且clk一32M為高電平時(shí),用clk_32M作為寫(xiě)使能信號,在clk-64M的上升沿將灰度個(gè)數寫(xiě)入灰度統計表1的雙口RAM中。經(jīng)過(guò)上面的操作,即可完成一次像素灰度個(gè)數的統計工作。此時(shí),將鎖存的數據信號作為查找表l雙口RAM的讀端口地址信號,用elk_16M作為雙口RAM的讀驅動(dòng)時(shí)鐘,用鎖存的列同步信號的反相信號和該反相信號延時(shí)一個(gè)像素時(shí)鐘周期的信號相與后的信號作為雙口RAM的讀使能信號(因為雙口RAM帶一級流水線(xiàn),所以不能簡(jiǎn)單地將列同步的反相信號作為讀使能信號),實(shí)時(shí)地輸出變換的灰度數據,列同步和幀同步的輸出同樣要考慮雙口RAM的流水線(xiàn)。當幀同步信號為高電平時(shí),時(shí)序控制器向NiosⅡ發(fā)出中斷信號1,NiosⅡ接收到中斷信號1后,讀出統計表1中的像素灰度個(gè)數統計值,完成灰度查找表的解算并將解算的灰度查找表寫(xiě)入查找表1中,同時(shí)將統計表1中的數據清0。當工作在偶幀時(shí),各模塊的工作與奇幀相反。NiosⅡ的串口用來(lái)接收設定的平臺命令和平臺值。串口工作在中斷狀態(tài)下,具有最高的中斷優(yōu)先級。串口以"起始字符+平臺命令+平臺值24位數據+結束字符+校驗和"的通信協(xié)議進(jìn)行數據接收,接收完后,串口發(fā)送口以"起始字符+接收正確與否命令+結束字符+校驗和"的傳輸協(xié)議向上位機發(fā)回告信號。
3設計中應注意的問(wèn)題和實(shí)驗結果
設計中發(fā)現有兩個(gè)問(wèn)題必須引起高度注意:
a)統計表的讀寫(xiě)端口信號受紅外探測器前端電路輸出信號和NiosⅡ信號的切換控制,如果控制不當,很容易產(chǎn)生邏輯混亂。建議每次切換時(shí)先將使能控制信號置為無(wú)效狀態(tài),然后將時(shí)鐘信號置為一個(gè)固定的高電平,切換使能控制信號,再切換時(shí)鐘驅動(dòng)信號和數據信號。而且每次NiosⅡ在讀統計表中的值之前,最好有一個(gè)小的延時(shí)程序,第1個(gè)數據讀2遍。由于系統每次切換的時(shí)間約1 s,NiosⅡ完成一次灰度解算和清0不需要這么長(cháng)時(shí)間,每次完成解算和清0后,讀寫(xiě)端口控制信號由探測器前端電路輸出信號控制。經(jīng)過(guò)這種處理,系統能穩定地工作,不會(huì )出現邏輯混
評論