张静 温泉 雷宏杰 温志渝
摘 要:为了解决市面上现有光谱仪软件与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.