基于图像识别的密立根油滴实验改进方案设计与实现
2021-07-16张玉庭
王 超 张玉庭
(辽宁工程技术大学土木工程学院,辽宁 阜新 123000)
1 概述
为测定基本电荷的带电量,密立根于1906 年起用11 年时间,利用密立根油滴实验,经过上千个油滴的数据而最终得出结论,密立根也因此荣获1923 年诺贝尔物理奖。在物理实验经过不断改革之后,密立根油滴实验已经发展了数百年时间,密立根油滴实验也在近代物理实验中有着非常重要的地位,但目前实验大多仍依靠手动控制仪器的开始与暂停,导致实验得出的测量值与真实值差距过大,误差常在100 倍以上。
本研究主要通过基于python 语言的图像识别、基于机器学习长短期记忆(PTSM)的粒子筛选对实验过程进行全自动化处理,针对无视频的实验数据,采用C 进行半自动化数据处理,最终得出结果。经多次验证,在实验正确,仪器误差很小至忽略的情况下,可将误差减小至与真值10 倍。依据的公式为:
式中b 为修正常数,b=6.17×10-6,p 为大气压强,单位为厘米汞高。其中tg为油滴下降L 距离所测量的时间。[1,2]
图1 原理示意图(左)受力分析图(右)
2 改进实验的方案设计
利用基于Python 语言的Crocker-Grier、Trackpy 算法建立密立根油滴实验过程中的显微镜或输出数据收集输出视频图像识别模型,再将初步识别的粒子数据利用python 语言人工智能机器学习算法进行相关筛选,筛选出有效粒子,进行油滴的行为预测与边缘修正,输出其粒子运动数据,进一步直接计算出元电荷的数据,与几十余个利用大学物理实验室现存机器的手动计算数据相对比。对于已经出现的实验数据,利用C 语言进行相关数据辅助处理。
2.1 利用python 实现图像识别与粒子轨迹分析
以下为基于python 语言的图像识别油滴粒子的识别原理分析。
将拍摄完成的格式为mp4 或mov 原视频逐帧输出为格式为TIFF 的图片文件,储存对应图片的对应帧数,得到一组TIFF 堆栈。可通过帧数计算出每张图片之间的间隔时间,一帧=1/12秒,帧数输出对应为图像的识别ID,结尾不足整数帧的图片将要求被舍去。这里以从显微镜镜头拍摄的原始实验视频为原视频作为基础,其格式为mov,帧数为30 帧,时长为10 秒,帧宽度为1920,帧高度为1080,将其中处于第12 帧的图像截出。对此图像进行灰度变换,以便于之后的图像选取分析。
截选出图像后,利用bpass 空间带通滤波器工具,进行初步的区域亮度筛选,截选出最终的原图像,像素为100×100(图2),理想情况下,需要的粒子像素直径在5 至10 像素之间。若拍摄粒子在视频显示中不是十分明显,可以将图像进行反转处理(图2 中),但反转的视频不利于之后的图像处理,因而应该控制视频的底色背景为尽可能的纯黑色,以凸显出油滴粒子。
图2 原图像(左)反转(中)初步筛选(右)
然后再次利用bpass 空间带通滤波器,利用它来平滑图像并减去背景。此时针对油滴粒子bpass 需要手动修正,这一点在机器学习中可以得到修正后的数据。利用bpass 可以得到不同像素坐标的空间波长截止值。输出以下5 个数据列至表格,①x形心、②y 形心、③总亮度、④回转半径、⑤“偏心率”,绘制亮度——回转半径的图像。通过此图像可进行粒子的筛选,通常,最亮的粒子就是想要的粒子。在输出的亮度——回转半径图像中,在图像右侧的两个不同的点为需求点,而在左侧的点仅是由于起始图像中的随机噪声而引起的。
此时,利用masscut 函数拒绝因错误而被筛选掉的粒子,留下正确的粒子
(图3 左),但这个输出的粒子仅会保存其粒子中心位置,得不到准确的粒子直径、边缘等数据,因而需要利用epretrack 输出粒子的边缘云图,对密集的粒子和稀疏的粒子进行区分,划定其中的边界,确定粒子的修正边缘,这里引用的分离系数也会通过机器学习进行相关修正。
图3 筛选结束(左)边缘修正(右)
通过以上的图像识别与处理,将自动筛选掉高速的、不稳定的、无法进行边缘修正的粒子,对正确的粒子进行轨迹跟踪与处理,最后可输出其位移、速度等数据。最终通过代入计算可计算出电荷的值。
2.2 基于python 实现机器学习实现油滴预测与边缘修正
2.2.1 模型数据收集
实验收集了20 余组来自辽宁工程技术大学大学物理实验组在正确实验的条件下由手动进行录制CCD 显示器的视频,近10 组来自天津师范大学物理系通过显微镜所录制的实验视频。由于时间有限,模型数量收集与分析所花费的时间很长,为了得到更多的真实实验数据,本实验利用了由北京邮电大学欧中洪教授所提供的实验仿真程序。
2.2.2 实现原理
通过对每一个视频进行不同的图像识别,如第一组视频模型,利用初始的bpass 与epretrack 相关系数,引入两个修正系数,在得到第一组最终数据后,与正值相对比,反向推算出这个修正系数并导出,仿真程序由于技术的有限性可提供粒子亮度模拟,因而可得到bpass 的修正系数。在重复多次模型训练后,可利用引入的修正系数对原始确认的系数进行修正,利用Logistic 回归算法,最终得出精度更高、误差更小的实验数据。
3 程序设计
程序主界面采用C++语言编写,简洁明确地提供机器学习:导入模型、模型训练,主要处理:初步处理、筛选粒子、数据绘图,辅助处理:辅助数据处理、实验仿真等功能(图4)。程序在前述的基于python 语言图像识别处理后可得以下电荷——数量统计图图表,图示为某一次正确实验研究后所得到的图像(图5)。
图4 程序主界面截图
图5 电荷——数量统计图
4 结果分析
使用全自动化的处理方式,与实验室手动处理数据相比能够将误差减小10 至100 倍不等,与测定正值的误差小于10 倍(图6、表1)。
表1 实验数据节选
图6 程序输出图
5 结论
本改进实验中利用的图象识别、人工智能机器学习等技术综合运用于密立根油滴实验,降低实验中数据误差。本实验采用的python 语言图像识别与机器学习,C 语言的数据处理为大学物理实验、近代物理实验自动化提供了样本,实验程序与方法可为实际实验智能化升级提供相关参考。