| 摘要:在以PC機和DSP數(shù)字信號處理板構成的實時紅外熱成像系統(tǒng)原理的基礎上,闡述了主機通過PCI口與DSP實現(xiàn)數(shù)據交換及在Windows下實現(xiàn)實時圖像顯示的技術。由于通過PCI口數(shù)據交換速度快,在數(shù)據顯示時采用直接寫屏和翻頁技術,系統(tǒng)可達到理想圖像實時顯示效果。 關鍵詞:紅外圖像 實時性 DSP 隨著科學技術的高速發(fā)展,紅外熱像儀在軍事、科研、工農業(yè)生產、醫(yī)療衛(wèi)生等領域的應用越來越廣泛。由于紅外焦平面固有的非均勻性,在紅外圖像處理過程中,必須對每幀中的每個像元進行非均性校正處理,才能到較好的效果。因此紅外圖像實時處理的數(shù)據量很大,如256×256的一個紅外焦平面面陣,像元數(shù)為64K,如果每個像元用12bit表示,每秒顯示24幀圖像,則每秒傳輸?shù)臄?shù)據量高達2.25Mbyte;如果要進行校正運算,計算量更大。目前國內的紅外熱成像系統(tǒng)大多采用計算機進行數(shù)據采集,用軟件實現(xiàn)非均勻性校正。由于軟件處理速度慢,很難實現(xiàn)實時成像,只能對單幀圖像進行處理。 本文介紹采用PC機和基本DSP的數(shù)字信號處理板(數(shù)字板)構成的主從式成像系統(tǒng)。由于非均勻性校正的典型算法是乘累加,在一般計算機上處理速度比較慢。DSP具有高速數(shù)據處理能力,采用DSP進行圖像處理的運算,通過計算機進行系統(tǒng)的控制和數(shù)據的顯示,正好發(fā)揮軟硬件的特長,從而提高了系統(tǒng)的運算速度。  1 系統(tǒng)組成及基本原理 一個完整的紅外成像系統(tǒng)不但要具備圖像信號的采集功能,還要能對圖像進行實時顯示,且要完成圖像信號的分析及處理算法(如非均勻性校正等)。通常這些算法的運算量大,再加上要滿足實時顯示的要求,因此采用高速DSP芯片作為數(shù)據核心處理單元。另外,要求系統(tǒng)滿足通用性的同時,針對不同的應用和不斷出現(xiàn)的新處理方法,還要求系統(tǒng)例于功能的改進和擴展。為此,我們以PC機為主機,以TI公司的DSP(TMS320C6201)為輔助機作為數(shù)字信號處理板的核心[1~2],設計出紅外圖像處理系統(tǒng)。圖1是基于DSP的實時紅外熱成像系統(tǒng)的原理圖。 1.1 TMS320C6201的優(yōu)點[3] TMS320C6201是TMS320C6x系列中的高速定點數(shù)字處理芯片,是TI公司二十世紀90年代后期的最新一代DSP產品。每秒最大處理能力為1600MIPS,具有特殊的VelociTI結構獨特的指令集,從而保證了它強大的運算能力、高度的并行性和良好的靈活性。同時其外圍設備包括DMA控制器、主機接口(HPI)、中斷選擇器,能夠很方便快速地與外圍設備進行數(shù)據交換。 1.2 系統(tǒng)組成原理 系統(tǒng)由模擬信號板、數(shù)字信號處理板,PC機三部分構成。模擬信號用于進行信號提取,包括IRFPA、驅動信號源、前置放大器。IRFPA由信號驅動源驅動,根據外部紅外光線的感應強度,輸出窗形波的模擬信號,經前置放大器放大后與數(shù)字信號處理板相連。 數(shù)字信號算是板由數(shù)據采集和數(shù)據處理兩部分組成。數(shù)據采集部分以一片F(xiàn)PGA構成控制器,用于控制整個處理板的時間同步和選擇存儲器及圖像預處理等。數(shù)據處理部分包括一片DSP,一片雙口RAM和兩片RAM(SRAM和SBSRAM,分別用于靜態(tài)數(shù)據和動態(tài)數(shù)據的存儲)。在圖像采集中,模擬信號進入A/D轉換器之后,由FPGA提供采樣控制,并將轉換后的數(shù)字信號存入雙口RAM,它為DSP提供數(shù)據。校正的參數(shù)放在主程序中,用以對圖像進行校正,同時主程序還要進行其它運算,以便生成DSP處理后的圖像。DRAM和SBSRAM為DSP在進行數(shù)據處理過程中提供存儲空間。經過處理之后的數(shù)據可通過PCI接口與主機交換數(shù)據。 數(shù)字板通過PCI卡與計算機相連,由于PCI總線具有高速數(shù)據交換的優(yōu)點(120Mbyte/S),足以滿足數(shù)據實時處理的要求。數(shù)據通過DSP的HPI口,經由PCI口與PC機相連。PC機讀取數(shù)字板上任意存儲器上的數(shù)據,再由計算機實現(xiàn)實時顯示。DSP的運行程序由PC機通過PCI口加載到DSP上運行。 2 數(shù)據的交換及Windows下數(shù)據實時顯示 在主從式結構系統(tǒng)中,主機與從機的數(shù)據交換及數(shù)據的顯示是十分關鍵的環(huán)節(jié),下面將重點講述其實現(xiàn)方法。本系統(tǒng)的Windows程序是在C++ Builder下開發(fā)的。 2.1 數(shù)據的交換 2.1.1 實時性 根據人眼的視覺特點,數(shù)字圖像成像系統(tǒng)每秒鐘至少要讀取和處理合成24幀圖像(假設對于256×256×8bit=64KByte),則進行實時數(shù)據處理時要求每秒處理數(shù)據: 256×256×8bit×24幀=1.5Mbyte,并將它顯示出來,圖像才不失連續(xù)性。這樣就要求相鄰兩幀連續(xù)采術的圖像數(shù)據的讀取及合成時間間隔不能過大,因此必須滿足“數(shù)據讀取時間≤幀時隔”。主機通過PCI口對DSP芯片進行訪問,采用PCI總線可以保證高速的數(shù)據交換。為了實現(xiàn)顯示實時性,則要求數(shù)據讀取的間隔越小越好。 2.1.2 PCI卡的驅動問題 在Windows開發(fā)環(huán)境下,C++ Builder不能直接訪問PCI設備,需借助其它軟件實現(xiàn)。KRFTech公司主推產品WinDriver是進行PCI接口程序開發(fā)的首選驅動程序開發(fā)工具。用戶要訪問PCI口上的數(shù)字信號處理卡,一般來說有兩種途徑[4]:一是直接訪問,即用C++ Builder直接訪問PCI設備的接口函數(shù)(這種方法需要相關軟件支持);二是間接訪問,即用C++ Builder調用其它語言(如匯編或C/C++等)編寫的底層驅動模塊(一般封裝成動態(tài)鏈接庫DLL形式)實現(xiàn)。本系統(tǒng)采用調用動態(tài)鏈接庫的方法。 2.1.3 從DSP讀取數(shù)據的過程 本系統(tǒng)對于PCI卡的底層驅動程序封裝成動態(tài)鏈接庫(evm6X.dll),其頭文件為evm6xdll.h,以便其它函數(shù)十分方便地調用。在調用動態(tài)鏈接庫(DLL)時,首先要聲明DLL,然后就可以像調用C++函數(shù)一樣使用動態(tài)鏈接庫中的函數(shù)了。C++ Builder允許調用其它語言編寫的動態(tài)鏈接庫,而用戶一般不知道其它函數(shù)是用何種語言編程,因此應該注意函數(shù)標識符和參數(shù)傳遞,以便解決調用的約定問題。 用C++ Builder編寫的CP機讀取數(shù)字板數(shù)據的模塊化程序如下: #inchude "evm6xdll.h" HANDLE hBd=NULL; //板子句柄 Short iBd=0; //板號 BOOL bExcl=1; //獨占打開=TRUE LPVOID hHpi=NULL; //HPI接口句柄 short iMp; //Map選擇器=MAP0 //DSP啟動方式 EVM6XDLL_CLOCK_MODE clkMode; EVM6XDLL_ENDIAN_MODE ednMode; ULONG ulDW[1024*16]; //定義數(shù)據緩存 Void ReadWordFromMem (LPVOID hHpi,ULONG ulDataAddr, ULONG ulDataWord,ULONG Ilength, ULONG *ulDW) { hBd=evm6x_open(iBd,bExcl); /打開板卡 evm6x_reset_board(hBd); //對目標進行reset evm6x_set_board_config(hBd,clkMode,ednMode,0xff); //對目標板進行初始化配置 mode=iMp ? HPI_BOOT : HPI_BOOT_MAP0; //設置啟動方式 evm6x_reset_dsp(hBd,mode); //復位DSP hHpi=evm6x_hpi_open(hBd); //建立從主機到hpi的連接 if(!evm6x_hpi_read(hHpi,ulDW,&ulLength,ulDataAddr)) //從DSP讀取數(shù)據 {ShowMessage("內存讀時發(fā)生錯誤!");} //系統(tǒng)復位操作 evm6x_hpi_close(hHpi); evm6x_unreset_dsp(hBd); evm6x_close(hBd); } 由于PCI口數(shù)據交換快速度(可高達120Mbyte/s),且能方便地讀取數(shù)字板上內存的數(shù)據實現(xiàn)數(shù)據交換,因此,通過PCI口實現(xiàn)PC機與數(shù)字板數(shù)據的交換便于實時系統(tǒng)的實現(xiàn)。 2.2 數(shù)據的實時顯示 通過PCI口讀取的數(shù)據為每幀中單個像元的亮度值,因而要在Windows下實現(xiàn)實時顯示,不但要解決顏色配置問題,而且要求圖像實時顯示速度快,因此本系統(tǒng)在Windows下采用寫屏技術實現(xiàn)圖像的顯示。 2.2.1 顏色控制 由于紅外圖像傳感器只能反映外界溫度的高低,因而在處理過程中,對焦平面的每個像元采用8bit(256灰度)來表示。而Windows下顏色表的顏色采用的是R、G、B即紅、綠、藍三基色,每種顏色都是從0到255。由這三種基色可構成屏幕上的各種顏色(即24位真彩色)。如果將每個像元的RGB值均設為所取得的像元亮度值,則得到的顏色為只有亮暗的灰度圖像(256級灰度);如果按照其256級灰度來進行偽彩色處理,則得到加偽彩色的圖像。為了使偽彩色處理,則得到加偽彩色的圖像。為了使偽彩色圖像的顯示得到增強,可以只用256顏色表中的部分顏色來表示。通過選擇差異較大的顏色來表示熱圖像中幀測目標的溫度范圍,即可得到增強圖像顯示效果的目的。 2.2.2 實時顯示的實現(xiàn) |