張靜 溫泉 雷宏杰 溫志渝
摘 要:為了解決市面上現(xiàn)有光譜儀軟件與MOMES掃描光柵近紅外光譜儀不配套的問題,文章設計并開發(fā)了一套MOMES掃描光柵近紅外光譜儀專用軟件系統(tǒng),該軟件采用C++和Python混合編程技術,實現(xiàn)了光譜儀的參數(shù)設置、光譜數(shù)據(jù)讀取和標定等功能,搭建了實驗平臺,對軟件整體功能進行了測試,驗證了軟件系統(tǒng)的實用性。
關鍵詞:微型光譜儀;Python語言;專用軟件
近紅外光譜分析技術可以對不同物質(zhì)的組分與含量進行定性和定量分析,分析速度快、效率高,被廣泛應用在航空航天、生物醫(yī)學、食品安全、石油化工、環(huán)境監(jiān)測等方面[1]。近年來,隨著微光機電系統(tǒng)(MOMES)技術的發(fā)展而興起的微型近紅外光譜儀改進了傳統(tǒng)光譜儀體積大、成本高的缺點,極大拓展了近紅外光譜分析技術的應用范圍。相較于市面上價格昂貴的陣列探測式微型近紅外光譜儀,基于MOMES掃描光柵微鏡的近紅外光譜儀采用兼具分光與掃描功能的光柵微鏡作為分光元器件,實現(xiàn)了以成本低廉的單管探測器替代價格昂貴的陣列探測器,因而有效降低了微型近紅外光譜儀的成本,同時也有利于光譜范圍的拓寬[2]。
僅僅依靠近紅外光譜儀不足以完成近紅外光譜分析工作,還需要與其配套的專用光譜儀軟件系統(tǒng)。目前國內(nèi)外多家研究機構已經(jīng)開展了有關光譜儀分析軟件的研究工作,美國德州儀器公司、美國海洋光學[3]、國內(nèi)復享光學、晶飛科技均已推出了與其生產(chǎn)的光譜儀配套的光譜分析軟件,這些軟件均可以實現(xiàn)近紅外光譜的采集、分析和顯示。除此之外,德國夫瑯禾費研究所、美國斯坦福大學、國內(nèi)重慶大學[4]、電子科技大學[5]等曾報道過其光譜分析設備及軟件系統(tǒng),這些軟件系統(tǒng)分別與其機構研發(fā)的光譜儀系統(tǒng)配套使用,實現(xiàn)所需功能。但上述光譜儀軟件系統(tǒng)均不能直接應用于MOMES掃描光柵近紅外光譜儀,因此,開發(fā)和完善針對MOMES掃描光柵近紅外光譜儀的配套軟件對于近紅外光譜儀系統(tǒng)可以穩(wěn)定運行必不可少。
面向?qū)ο蠓椒ㄊ且环N非常實用的軟件開發(fā)方法[6],以客觀世界中的對象為中心,分析和設計思想符合人們的思維方式,本文基于面向?qū)ο蟮木幊趟枷虢⒘塑浖恼w架構。C++和Python兩種編程語言都是面向?qū)ο缶幊陶Z言,各自有不同的優(yōu)勢,由于C++運行效率高,安全穩(wěn)定,本軟件系統(tǒng)的USB通信模塊和數(shù)據(jù)讀寫模塊采用C++編寫,可以提高代碼的運行速度;Python作為一種腳本語言方便快捷,能很好地跨平臺使用,本軟件系統(tǒng)的用戶界面設計和軟件數(shù)據(jù)分析處理部分采用Python編寫,增加了代碼的簡潔性和可移植性。
綜上所述,本文充分參考目前存在的光譜儀軟件系統(tǒng),針對MOMES掃描光柵近紅外光譜儀的軟件需求,提出采用C++和Python混合編程的光譜儀專用軟件系統(tǒng),該系統(tǒng)可以滿足MOMES掃描光柵近紅外光譜儀的應用需求,并有效實現(xiàn)光譜數(shù)據(jù)的處理和分析。
1 光譜儀軟件需求分析
MOMES掃描光柵近紅外光譜儀采用MOMES掃描光柵微鏡作為掃描分光元件。光源發(fā)出的光經(jīng)過入射狹縫經(jīng)凹面鏡準直后入射到MOMES掃描光柵微鏡表面,當驅(qū)動電壓驅(qū)動MOMES掃描光柵微鏡轉動時,不同波長的單色光會通過聚焦鏡進入光電探測器,光電探測器分別檢測各個波長對應光強,最后經(jīng)過信號獲取電路及專用軟件處理后得到近紅外的光譜圖。系統(tǒng)整體結構如圖1所示。
為了使MOMES掃描光柵近紅外光譜儀系統(tǒng)可以穩(wěn)定運行,要求其專用光譜儀軟件具有設備驅(qū)動、數(shù)據(jù)采集、數(shù)據(jù)顯示、數(shù)據(jù)分析等功能,要求便于用戶操作,界面友好、計算速度快。
2 光譜儀軟件總體設計
通過對光譜儀軟件的需求分析,本軟件系統(tǒng)針對MOMES掃描光柵近紅外光譜儀特有的光學機構,采用C++和Python編寫,將軟件分為3個功能模塊:光譜采集與顯示模塊、光譜處理模塊和光譜分析模塊。各個模塊協(xié)調(diào)工作,相互配合以實現(xiàn)軟件系統(tǒng)的整體功能,軟件功能結構如圖2所示。
3 系統(tǒng)開發(fā)與實現(xiàn)
本軟件系統(tǒng)界面和數(shù)據(jù)分析部分采用Python編寫,主要使用的Python工具包有Pyqt和numpy。Pyqt是Python編程語言和qt庫的融合,是Python編程語言的GUI編程解決方案之一,類庫資源豐富,可以方便簡潔地完成用戶界面的編寫[7]。Numpy是Python的數(shù)值計算庫,用來存儲和處理大型矩陣,可以較好地提升Python的數(shù)據(jù)處理速度,采用這兩種Python工具包可以完成軟件界面的設計,同時一定程度上改善軟件的運行速度。
3.1 軟件界面設計
軟件界面按照規(guī)范的Windows界面來設計,包含菜單欄、工具欄、狀態(tài)欄等標準格式。為了便于用戶快速操作軟件和讀取數(shù)據(jù),添加了??看翱诤捅砀耧@示數(shù)據(jù)部分。菜單欄包括文件、編輯、視圖、工具、設置、窗口和幫助,工具欄可以實現(xiàn)菜單欄的部分功能以及對光譜圖像進行去燥、標定、尋峰等操作,狀態(tài)欄顯示當前光譜儀工作狀態(tài),軟件界面的主體部分分別采用圖形和圖表來可視化地顯示光譜數(shù)據(jù),軟件界面如圖3所示。
3.2 軟件功能實現(xiàn)
光譜采集與顯示模塊包括用戶參數(shù)設置、光譜采集和光譜顯示等功能。在本軟件系統(tǒng)中,用戶可調(diào)整的參數(shù)有MOMES掃描光柵微鏡的驅(qū)動頻率和驅(qū)動電壓、數(shù)據(jù)采集卡的觸發(fā)模式、采集步長和采集延時時間;在設置好光譜儀參數(shù)之后可以設置光譜采集的方式,單步采集或者連續(xù)光譜采集。采集到的光譜數(shù)據(jù)可以根據(jù)用戶的需要進行處理之后以圖形和圖表的方式顯示到專用軟件界面上。
光譜信號處理模塊包括信號預處理、光譜標定和文件處理。從光譜儀直接采集到的原始光譜信號中不可避免地會包含一些噪聲信號,這些噪聲信號會導致光譜儀分辨率降低。本軟件系統(tǒng)可以濾除這些噪聲信號,具體的方法有平滑、平均、歸一化等,用戶可以根據(jù)自己的需求選擇合適的去噪方法,來降低噪聲信號的影響。
從光譜儀獲得的原始光譜圖是光功率和采樣點的對應關系,而實際光譜分析中所需要的是光功率和光波長的對應關系,光譜標定就是確定采樣點和光波長之間的函數(shù)關系,從而得到光功率和光波長的對應關系,以便后續(xù)對光譜信號的進一步分析。本軟件系統(tǒng)使用標準濾光片作為標定依據(jù),得到多組采樣點和光波長的對應關系,經(jīng)過多項式擬合確定采樣點和光波長之間的連續(xù)函數(shù)關系,完成標定過程。實驗得到的標準濾光片采樣點和波長對應數(shù)據(jù)如表1所示,對所得到的對應關系進行三階擬合得到光譜儀的標定方程,將其寫入光譜儀軟件系統(tǒng)即可完成標定過程。軟件系統(tǒng)設置了標定界面,在光譜儀使用過程中,可以隨時對其重新標定。文件處理是完成光譜數(shù)據(jù)的存儲和讀取,針對txt格式文件進行打開和保存操作。
近紅外光譜分析的過程包括模型的建立和模型評價,其流程如圖4所示。要完成光譜分析,首先要建立合適訓練樣品集,涵蓋今后欲分析的所有樣品范圍以及在該范圍內(nèi)均勻分布。有了合適的訓練樣品集之后就可以建立穩(wěn)定的數(shù)學模型,建立模型的方法有多元線性回歸法、主成分分析法、偏最小二乘法和人工神經(jīng)網(wǎng)絡等,本軟件系統(tǒng)采用主成分分析法建立模型,可以利用全部的光譜信息并能防止過模型現(xiàn)象。使用已知樣品來驗證模型的預測精度,達到預期的精度即可利用此模型未知樣品測量。在軟件使用的過程中,可以隨時使用已知樣品驗證模型的準確性,當模型的準確性不符合預期時,可以重新進行模型的建立。
4 結語
本軟件系統(tǒng)采用C++和Python混合編程技術,結合MOMES掃描光柵近紅外光譜儀結構特點,完成了專用軟件設計并對軟件進行測試。測試結果表明,該軟件系統(tǒng)能正確地采集光譜數(shù)據(jù),完成對光譜儀采集到的光譜數(shù)據(jù)進行實時分析和處理。
[參考文獻]
[1]李揚裕.平板波導紅外光譜儀研究[D].北京:中國科學院大學,2015.
[2]HOLMSTROM S T,BARAN U,UREY H.MEMS laser scanners: a review[J].Journal of Microelectromechanical Systems,2014(2):259-275.
[3]海洋光學[EB/OL].(2018-12-16)[2019-01-03].http://www.oceanoptics.cn.
[4]溫泉.微型近紅外光譜儀信號處理與分析系統(tǒng)開發(fā)[D].重慶:重慶大學,2008.
[5]謝淼.近紅外微型光譜儀關鍵技術研究[D].成都:電子科技大學,2016.
[6]王燕.面向?qū)ο蠓治鲈O計與編程[M].西安:西安電子科技大學出版社,2018.
[7]馬克·薩默菲爾德.PYTHONQTGUI快速編程PYQT編程指南[M].閆鋒欣,譯.北京:電子工業(yè)出版社,2016.