系統結構設計 本系統通過紅外焦平面陣列探測器將紅外圖像送入紅外圖像采集模塊并完成模數轉化,轉化后的數字信號送入圖像校正模塊進行非均勻校正、測溫和濾波處理,校正后的圖像數據再送入圖像顯示終端,圖像顯示終端將圖像信息進行灰度拉伸、偽彩變換后在終端進行顯示,并可完成圖像分析、圖像存儲等多種功能。本系統可應用于遠程檢測和移動監控等多個領域。系統總體方案如圖1所示。 圖1紅外熱成像系統框圖 系統硬件設計 1 硬件結構 本文設計的紅外成像系統的結構可分為紅外鏡頭、信號預處理、數字信號處理、控制顯示四大部分,系統硬件結構如圖2所示。紅外焦平面陣列探測器完成光電轉化功能,信號預處理電路包括視頻信號分離電路和視頻信號調整電路,預處理后的模擬信號經高速A/D轉化后由雙口RAM送入DSP。由于DSP具有高速的處理能力,要求DSP能有效地與低速外設連接,否則整個系統的數據處理能力就會受到影響,因此需要把圖像數據進行高速緩存。雙口RAM具有兩套獨立的數據、地址和控制總線,因而可從兩個端口同時讀寫而互不干擾,并且具有隨機存取的優點,讀寫具有很大的靈活性。DSP完成紅外圖像數據的非均勻校正、中值濾波等大運算量處理,減輕ARM的運算負擔,因此成像系統具有很強的可靠性和實時性。ARM-Linux完成灰度拉伸、偽彩變換、數據分析處理、紅外圖像顯示及系統控制。 圖2 紅外熱成像系統硬件框圖 2 主要芯片介紹 ARM處理器體積小、內核耗電少、具有良好的圖像處理能力。ARM處理器本身是32位設計,但也配備16位指令集。因此存儲器比等價32位代碼節省35%,同時保留了32位系統的所有優勢。系統處理器采用的是三星公司基于ARM的ARM920T處理器核。本系統選用TI公司的TMS320C6000系列DSP。 系統軟件設計 本文采用嵌入式ARM-Linux操作系統進行系統管理,在編譯內核階段加入了對紅外探測器和LCD的支持,在ARM-Linux操作系統下實現紅外成像系統應用程序,利用QT實現紅外成像系統的界面控制及紅外圖像顯示功能。 1 系統控制軟件設計 系統控制程序控制著系統的初始化、參數配置、圖像的采集、校正、分析、顯示的全過程,其功能主要分為后臺的控制和前臺的界面及圖像動態顯示兩大部分。顯示終端發送命令后,系統開始初始化過程,設定圖像采集模式,啟動采集過程。接下來系統將連續查詢圖像采集控制寄存器的值,查詢是否完成一幅圖像的采集,如果沒有完成,繼續查詢圖像采集控制寄存器,直到查詢到采集完成一幅圖像,啟動圖像讀取子程序,把圖像數據送入到DSP中完成濾波及非均勻校正,校正后的圖像數據送入到圖像顯示子程序中,根據用戶指定的顯示模式,將灰度圖顯示為偽彩圖,并完成相關的分析處理。程序流程如圖3所示。 圖3 紅外熱成像系統軟件流程圖 2 界面及圖像顯示程序 Qt是Trolhech公司推出的一個多平臺的C++圖形用戶界面應用程序框架。它提供給應用程序開發者建立藝術級的圖形用戶界面所需的所用功能。Qt具有完全面向對象的特點,很容易擴展,并且允許真正地組件編程。本程序共由QApplication、QWidget、QImageShow和QBmpSave、QtextRemark、QPain五大類組成,其中QimageShow、QBmpSave和QTextRemark是自定義的類。QApplication是QT程序必須有的一個類,每一個QT應用程序都要包含QApplication對象,QApplication管理應用程序各種各樣的資源。QWidget類是所有用戶界面對象的基類。QimageShow負責紅外圖像及溫度的實時顯示。 QbmpSave負責紅外圖像的存儲,存儲格式為16bitBMP格式。QtextRemark實現了注釋文件的新建、打開、編輯等常用功能。 圖像顯示程序 采集圖像數據為RGB24格式,幾個重要函數如下: fd=open(INFRARED_DEVICE,O_RDWR);//打開紅外探頭設備 pict.palette=VIDEO_PALETTE_RGB24;//設置圖像格式 frames=(unsigned char *)mmap(0,mbuf.size,PROT_READPROT_WRITE,MAP_SHARED,fd,0);//通過內存映射獲取圖像數據 構建QimageShow圖像表示類,再使用QPaint畫圖: image=QimageShow(frames+ mbuf.offsets[frame],width,height,QImage::Format_RGB 888); painter.drawImage(QRect ((width()-w)/2,(height()-h)/2,w,h),m_image,QRect(0,0,m_image.width(),m_image.height())); 溫度動態顯示程序 用ALPHA通道,使用半透明效果實現跟蹤鼠標并輸出對應點溫度(point.x、point.y記錄當前鼠標所指向坐標)。 Int Width,Hight;//定義顯示框的高度和寬度Pixmap= QPixmap(100,50);//設定顯示框大小 Pixmap.fill(QColor(255,255, 255,127));//設定溫度顯示效果為半透明效果 Painter.drawpixmap(point.x,point.y,pixmap)//跟蹤鼠標顯示出對應點溫度 BMP位圖保存程序 位圖文件(Bitmap-File,BMP)可看成由4個部分組成:位圖文件頭(bitmap-file header)、位圖信息頭(bitmap-information header)、彩色表(color table)和定義位圖的字節陣列,它們的名稱和符號如表1所示。 程序先建立存儲文件,進行相應的文件信息設置,文件信息的設置要和所采集圖像數據一致,否則不能正確顯示結果,然后將信息保存到文件中。 |