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