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