基于彩色CCD的棱镜摄谱实验数据处理

2021-01-06 09:00韦先涛
物理实验 2020年12期
关键词:谱线线图插值

郑 逸,张 权,韦先涛,朱 玲

(中国科学技术大学 a.少年班学院; b.物理学院,安徽 合肥 230026)

摄谱实验是大学物理实验课程之一,其主要数据处理思想是根据已知的元素谱线波长和拍摄得到的谱线图,通过比对,计算出未知元素的谱线波长. 谱线的拍摄方式主要有感光胶片、线阵CCD和面阵CCD等几种方式[1]. 利用彩色的面阵CCD相机拍摄谱线,既可以直接获取谱线位置信息,避免了底片冲洗和读谱等繁琐过程,又可以得到直观的彩色谱线图片,结合了其他方式的优点. 使用计算机处理实验数据可以提高效率,减小误差,是科学研究、工业生产和实验教学近几十年来的发展趋势.

1 摄谱实验

以中国科学技术大学物理实验教学中心开设的摄谱实验为例,介绍基于彩色CCD的棱镜摄谱实验数据处理方法. 实验使用的棱镜摄谱仪,由北京教学仪器厂生产的棱镜摄谱仪改造而成,如图1所示. 已知光源发射的光线经过透镜聚焦射入狭缝S1,L1为准直透镜(与S1的距离等于其焦距),经过L1后变为平行光,经过阿贝棱镜被反射、分光,经过透镜L2后平行光会聚到彩色CCD的成像面上,拍摄得到谱线图[2].

图1 摄谱实验装置示意图

氦谱因为在可见光范围内谱线相对较多,一般用来作为已知光谱,待测的未知光谱为汞谱和钠谱(也可以更换成氢谱等其他光源).

实验中使用1/2英寸的CCD,其感光面宽度有限,无法一次性拍摄到所有可见光谱线;而使用大尺寸的CCD又会增加实验成本. 所以实验中采用的方法是先将CCD固定某位置,依次更换光源,拍摄氦谱、汞谱和钠谱的谱线图,然后通过位移台改变CCD位置重复上述拍摄操作2次(保证相邻谱图存在交叠区域),一共得到9张图,如图2所示. 再通过拼接就得到完整的谱线图. 这种方法在保证谱线的分辨率同时扩大了谱线测量的范围.

原来的数据处理方法是先用PowerPoint等软件拼接谱线,保证氦谱相同的谱线重合,然后保持垂直方向对齐,拼接汞谱和钠谱图. 然后用软件(如画图)记录下拼接后的3张图每条谱线的横向像素位置,设未知谱线像素位置为dx,如图3所示,其处在已知氦谱的相邻2条谱线之中,这2条谱线位置分别为d1和d2,波长分别为λ1和λ2. 则未知谱线的波长λx由线性插值公式

给出. 已知氦谱所有谱线的波长,就可以根据图片中谱线的位置计算出未知的汞、钠谱的波长.

图2 拍摄得到的原始图像

图3 用已知谱线波长计算未知谱线波长

实际上,这种方法误差比较大. 首先,图片的拼接可能因为实验者判断能力、对图像处理软件使用的熟悉程度不同而存在较大误差. 其次,波长与像素位置的关系不是线性的,线性插值法只能作为极小范围内的近似处理,导致计算出来的结果存在较大的系统误差. 如汞绿线波长通常求得的值为551 nm左右,而实际值为546.07 nm,如图4所示,黑色线为线性插值得到的波长与像素位置的关系曲线,是折线(像素单位无实际意义,故略去),灰色线为实际关系曲线.

为提高效率和数据处理的精度,使用Visual Basic .NET语言,并用WPF(Windows Presentation Foundation)设计图形界面,开发了摄谱图像处理程序,可以根据输入的9张谱线图拼接图片,通过已知谱线波长计算出未知谱线的波长.

图4 线性插值与实际值的区别

2 程序算法设计

算法是程序的核心. 本程序需要实现的关键算法是从谱线图中寻找谱线并记录下其位置(寻峰)、判断谱线颜色拼接谱线图(拼接)、插值.

2.1 寻峰

此算法应做到能够不遗漏、不重复计数(即1条谱线不应该识别成多条). 这里设计了2种算法:极值法和中位数法.

若使用极值法,程序比较每个像素点与左右相邻像素点的亮度,若取极值则该点记为谱线. 用户可以调节参数“升降亮度容差”,若亮度差别小于容差,就不会认为这里取到极值. 容差值太大会漏掉暗谱线,太小会把拍摄时的杂点记为谱线.

若使用中位数法,给定参数“亮度阈值”,程序首先从左到右寻找亮度高于亮度阈值的像素,然后对连续的亮度高于阈值的区域类似于统计直方图求中位数的方法求出中位数,记为谱线的位置. 对于相近的2条谱线,若亮度阈值过高,不会找到谱线,若亮度阈值过低,只会找到1条谱线. 亮度阈值合适时能够找到全部2条谱线.

寻峰的结果是得到了谱线图中谱线的位置,单位为像素,如图5所示(只给出了氦谱的结果).

图5 寻峰得到谱线位置

2.2 拼接

拼接的基本思想是给定参数“色相容差”和“亮度容差”,程序记录前一张图找到的最后一条谱线的色相和亮度,然后在后一张图中从左到右比对每条谱线的色相和亮度. 若其差别位于容差之内,则谱线匹配,可得到4个数值:第1张图末端位置、第2张图首端位置、第2张图末端位置和第3张图首端位置,用这些数值删去谱线图和寻峰结果中多余的部分,拼接氦、汞、钠谱图以及谱线数据;若找不到匹配的谱线,则程序报错.

2.3 插值

波长和位置的关系曲线可以通过插值或使用经验公式拟合[3]的方法求得. 输入氦谱每条谱线的波长后,程序使用三次样条插值法[4]进行插值,求出汞谱和钠谱每条找到的谱线的波长. 三次样条插值得到的函数是分段函数,端点为氦谱的已知点,每一段都是三次函数. 通过求解线性方程组,使得端点处的函数值和其一、二阶导数值各自相等,让函数图像是1条平滑的曲线,而非折线. 该方法计算比线性插值复杂,适合用计算机处理. 但该方法有局限性,若未知谱线的位置小于或大于所有已知谱线的位置(即外插)时误差比内插时大.

3 程序界面设计

3.1 导入图片和参数设置

如图6所示,左侧的滑块可以调整取样的位置,程序会对红线附近宽度为参数“取样宽度”的范围取纵向平均,得到宽度为1的图片,以进行后续寻峰操作. 较大的取样宽度可以抑制杂点影响,但如果拍摄的谱线较斜,会导致平均后谱线变粗,影响精度.

图6 导入图片

选择9张图片后,单击“下一步”后程序会尝试寻峰、拼接,成功后进入后续程序,若未成功会报错. 若程序报错或处理结果不满意(如有遗漏)可以单击“参数设置”调整程序中使用的所有参数,如图7所示.

图7 参数设置

3.2 确定参考谱线波长

如图8所示,此步是输入已知的参考谱线波长,屏幕下方给出了氦谱的数据,选中文本框后单击即可输入. 若参考谱线是其他元素的谱线,则需要自行查找数据输入. 这里程序还提供了一些功能:查看氦、汞、钠谱的拼接结果;删除氦谱多余谱线(一般为杂点);若结果不满意,调整参数后程序会询问是否按照新的参数重新寻峰、拼接. 输入完毕后单击“下一步”.

图8 确定参考谱线波长

3.3 获得未知谱线波长

如图9所示,程序插值得出了汞谱和钠谱未知谱线波长. 若鼠标光标移动到谱线上,屏幕下方会显示光标位置对应的波长(可以大致显示出被遗漏的谱线波长). 单击“标准数据”可显示汞谱和钠谱可拍摄到的谱线波长的参考数据. 单击“另存为图片”可以将处理结果存为图片.

图9 获得未知的谱线波长

4 结果与讨论

程序开发的过程中使用了多组谱线图实验数据进行测试,操作正确的数据误差可以控制在1 nm以内,其中1组数据通过选择合适的参数和取样位置可得到很精确的结果,误差小于0.1 nm,如图10所示. 参考数据:汞谱:黄(暗) 579.07 nm,576.96 nm,绿546.07 nm,天蓝(暗) 491.60nm,紫435.84nm[5];钠谱:黄589.00nm,589.59 nm. 有1组数据曝光时间略长,亮谱线较粗,误差较大,但一些暗的谱线能够拍摄出来,如图11所示.

图10 接近真实值的1组数据处理结果

总体来说,对于按实验要求操作得到的实验数据,本程序能够很好地计算出未知谱线的波长,一般情况下可精确到整数位(nm). 若拍摄时曝光时间太短或狭缝S1太窄,程序有可能无法识别或区分一些过暗的谱线;若曝光时间太长或狭缝太宽,计算结果误差较大. 可以分别用长曝光、短曝光拍摄同一待测谱线,然后将图片和参考谱线导入本程序,这样程序可以分别准确地计算出较暗谱线和较亮谱线的波长.

图11 拍摄出暗谱线的1组数据处理结果

5 结束语

在棱镜摄谱实验的数据处理过程中,利用计算机图像处理技术实现了谱图的自动拼接,使得可拍摄谱线的范围不受CCD感光面大小的限制,可以在同一张谱图上拍摄出紫外、可见和近红外波段的谱线,同时还能保证光谱的分辨率不降低. 在计算未知谱线波长时,通过三次样条插值法进行插值,与线性插值相比大大减小了插值时引入的计算误差,特别是在标准谱线不是十分丰富的情形下. 本程序的开发是在大学物理实验中融合计算机技术的应用实例,相信未来更多实验能够采用类似的处理技术,在减小误差的同时提高数据处理的效率.

猜你喜欢
谱线线图插值
“羲和号”首次获得三种太阳谱线轮廓
滑动式Lagrange与Chebyshev插值方法对BDS精密星历内插及其精度分析
依据不同波段光谱诊断闪电回击通道温度*
一些图运算的调和指标与调和多项式的线图∗
预测瘢痕子宫阴道试产失败的风险列线图模型建立
基于TDLAS技术的H2O浓度及温度测试研究
基于pade逼近的重心有理混合插值新方法
混合重叠网格插值方法的改进及应用
基于混合并行的Kriging插值算法研究