張偉崗
(西安明德理工學(xué)院,陜西西安,710124)
目前國(guó)內(nèi)視頻圖像采集、圖像匹配技術(shù)主要局限于視頻監(jiān)控領(lǐng)域,缺乏圖像匹配處理功能,圖像采集與匹配處理系統(tǒng)普遍存在開發(fā)周期長(zhǎng)、通用性不佳、圖像采集質(zhì)量低難以辨認(rèn)等問題,對(duì)圖像采集與匹配處理系統(tǒng)進(jìn)行設(shè)計(jì)和優(yōu)化,使其具備較高的性價(jià)比及通用性,實(shí)現(xiàn)視頻圖像的較高質(zhì)量和效率的采集具有重要的現(xiàn)實(shí)意義。LabVIEW作為通用性較高的編程系統(tǒng)(附帶擴(kuò)展庫(kù)函數(shù)),可同多種軟件交互調(diào)用,能夠提供廣泛的接口,并對(duì)專業(yè)數(shù)據(jù)采集和匹配處理擴(kuò)展庫(kù)進(jìn)行調(diào)用,將其應(yīng)用到圖像采集系統(tǒng),能夠有效解決采集圖片使用普通攝像機(jī)時(shí)存在畫面不清晰難以辨認(rèn)等問題。
系統(tǒng)主要由上位機(jī)即測(cè)試用臺(tái)式工控機(jī)和下位機(jī)即外置USB 攝像頭的工控機(jī),內(nèi)置LabVIEW開發(fā)系統(tǒng)軟件的上位機(jī)功能在于顯示、拍照、視頻錄制、圖像匹配處理及保存等,下位機(jī)的功能在于實(shí)時(shí)采集現(xiàn)場(chǎng)場(chǎng)景等,系統(tǒng)總體架構(gòu)如圖1所示。本文在設(shè)計(jì)圖像采集系統(tǒng)時(shí),系統(tǒng)功能的編寫通過使用LabVIEW圖形化編程語(yǔ)言完成,視頻圖像的實(shí)時(shí)采集與錄制則通過使用USB攝像頭、NI-IMAQ及NI-IMAQdx完成,對(duì)實(shí)時(shí)視頻圖像進(jìn)行匹配處理時(shí)通過動(dòng)態(tài)鏈接庫(kù)的調(diào)用完成,實(shí)時(shí)圖像的增強(qiáng)處理則通過MATLAB圖像匹配處理算法的調(diào)用完成。
圖1 系統(tǒng)總體架構(gòu)圖
該部分的實(shí)現(xiàn)步驟如下:(1)采集視頻圖像:程序指定了所有USB攝像頭的字符串?dāng)?shù)組,系統(tǒng)默認(rèn)測(cè)試用USB攝像頭使用數(shù)組首個(gè)元素,通過IMAQdx Open Camera.vi 在函數(shù)面板中對(duì)Cam0進(jìn)行連接及打開,在完成攝像頭配置文件的加載,接下來的配置并開始采集圖像借助IMAQdxCongigure Grab.vi實(shí)現(xiàn),具體圖像采集過程中,輸出圖像當(dāng)前幀使用IMAQdx Grab.vi獲取,然后對(duì)獲取圖像的子VI進(jìn)行緩存空間設(shè)置,再對(duì)圖像所占的緩存空間進(jìn)行釋放,完成采集后關(guān)閉USB攝像頭停止圖像獲取,最終通過Image Display控件將視頻圖像在前面板上展現(xiàn)。(2)拍照,通過IMAQ Write File.vi將視頻圖像按照選定格式寫入,本文選用 BMP類型的圖片格式,在File Path處完成路徑創(chuàng)建,實(shí)現(xiàn)按照指定的路徑通過IMAQ Write File.vi對(duì)所拍圖像進(jìn)行保存,拍照具體可分為連續(xù)和斷續(xù)兩種方式,將一個(gè)加1加法器設(shè)置于條件結(jié)構(gòu)內(nèi)結(jié)合While循環(huán)形成移位寄存器,從而實(shí)現(xiàn)連續(xù)拍照,并對(duì)其進(jìn)行有序保存;設(shè)置File Dialog的類型端口和提示端口,分別連接IMAQ Write File.vi的對(duì)應(yīng)端口,在此基礎(chǔ)上置于事件結(jié)構(gòu)中即可實(shí)現(xiàn)斷續(xù)拍照,可自定義保存路徑及圖像名稱。
為對(duì)需要存儲(chǔ)的視頻文件進(jìn)行保存,需先選擇Vision Utilities/File/AVI /IMAQ AVI Create.vi,在條件結(jié)構(gòu)內(nèi)完成 *.avi文件的創(chuàng)建,接下來以每秒設(shè)定幀數(shù)通過IMAQAVI Write Frame.vi對(duì)圖片記錄到AVI 引用句柄指定文件中,最終通過AVIclose.vi對(duì)AVI保存進(jìn)行關(guān)閉處理,從而完成錄制實(shí)時(shí)視頻過程。對(duì)抓取到的圖像進(jìn)行添加時(shí)間文本操作,完成記錄視頻拍攝的時(shí)間,再通過IMAQ Draw Text.vi在圖像上添加獲取的時(shí)間。
(1)截圖通過相關(guān)子VI程序的調(diào)用完成(具體通過截圖按鈕事件觸發(fā)置于事件結(jié)構(gòu)中的子VI程序?qū)崿F(xiàn)),動(dòng)態(tài)鏈接庫(kù)作為程序模塊的一種,其所封裝的例程和資源能夠被其它應(yīng)用程序共享,系統(tǒng)通過調(diào)用動(dòng)態(tài)鏈接庫(kù)對(duì)截圖子VI功能進(jìn)行編寫:先完成CameraDll.dll的下載,選用庫(kù)與可執(zhí)行程序,在函數(shù)面板中拖入調(diào)用庫(kù)函數(shù)節(jié)點(diǎn)進(jìn)行配置,通過試驗(yàn)確定截圖的入口函數(shù),接下來設(shè)置該鏈接庫(kù)的參數(shù)。
(2)截圖過程判斷流程:設(shè)置截圖函數(shù)返回值為int型,將比較器添加于條件結(jié)構(gòu)外,觸發(fā)條件結(jié)構(gòu)程序時(shí)截圖動(dòng)作完畢返回1,放棄截圖動(dòng)作則返回0,截圖在前面板顯示,在函數(shù)面板中創(chuàng)建調(diào)用節(jié)點(diǎn)后右擊選擇剪切板中的獲取圖像,將其元素同按照名稱捆綁相連,視頻截圖效果如圖2所示。
圖2 實(shí)時(shí)視頻抓拍截圖前面板效果圖
由于LabVIEW工具箱處理圖像的算法存在局限性,為進(jìn)一步提高圖像采集質(zhì)量,本文對(duì)采集到的圖片使用混合編程方法,通過LabVIEW和MATLAB進(jìn)行圖像增強(qiáng)處理,通過MATLAB Script節(jié)點(diǎn)實(shí)現(xiàn)MATLAB的調(diào)用并對(duì)圖像進(jìn)行處理的具體操作步驟為:選擇功能函數(shù)/數(shù)學(xué)/腳本與公式/MATLAB Script,在框圖程序窗口中打開MATLAB Script節(jié)點(diǎn)后,其參數(shù)傳遞通過對(duì)輸入輸出進(jìn)行添加實(shí)現(xiàn),本文將輸入變量類型定義為path,輸入量設(shè)置為原圖像路。
通過使用Read JPEGFile.vi對(duì)現(xiàn)場(chǎng)采集到的彩圖進(jìn)行讀取,并經(jīng)由其路徑端口完成圖像輸出過程,圖像路徑變量賦值給a,再經(jīng)由Input節(jié)點(diǎn)完成到MATLAB Script 節(jié)點(diǎn)的傳輸,對(duì)圖像進(jìn)行灰度變換處理,實(shí)現(xiàn)彩色圖像分別到R、G、B 3個(gè)灰度圖的分解,對(duì)R、G、B灰度圖分別進(jìn)行增強(qiáng)處理使圖像色彩更加飽和且真實(shí)的表現(xiàn)出來,接下來通過cat函數(shù)整合處理過后的R、G、B灰度圖分量為彩色圖,通過MATLAB顯示函數(shù)對(duì)彩色均衡后的圖像進(jìn)行圖像輸出;為使采集到的不同大小的原彩圖實(shí)現(xiàn)自適應(yīng)系統(tǒng)窗口大小,按名稱將圖像數(shù)據(jù)在圖像數(shù)據(jù)端解除捆綁,實(shí)現(xiàn)圖像表示大小的4個(gè)基本簇元素的輸出,通過數(shù)學(xué)運(yùn)算方法對(duì)4 個(gè)簇元素的輸出做進(jìn)一步處理后,再將重新設(shè)置圖像高度和寬度輸出至圖像繪圖區(qū)域大小屬性,從而完成原彩圖寬度和高度的修改,系統(tǒng)在LabVIEW的前面板上通過平化像素圖的繪制實(shí)現(xiàn)顯示過程,實(shí)現(xiàn)基于混合編程的彩圖增強(qiáng)處理過程。
為解決采集圖片使用普通攝像機(jī)時(shí)存在畫面不清晰難以辨認(rèn)等劣勢(shì),本文結(jié)合使用結(jié)合使用MATLAB軟件平臺(tái)、USB 攝像頭、動(dòng)態(tài)鏈接庫(kù)等對(duì)圖像采集系統(tǒng)進(jìn)行優(yōu)化,對(duì)現(xiàn)場(chǎng)連續(xù)采集的視頻和圖像通過使用NI-IMAQ Vision視頻處理模塊進(jìn)行處理,通過MATLAB的調(diào)用LabVIEW實(shí)現(xiàn)增強(qiáng)處理保存的真彩圖片,提高了視頻圖像采集速率及彩圖質(zhì)量,豐富了圖像采集與匹配處理功能。