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