王 攀, 谢亚行, 林友辉,1b,2, 林昶旭,1b,2*
(1. 厦门大学 a. 物理科学与技术学院; b. 生物仿生与软物质研究院, 福建 厦门 361005;2. 福建省柔性功能材料重点实验室, 福建 厦门 361005)
随着计算机技术的迅速发展及其在各领域的广泛应用, 将化学实验与计算机技术相结合实现自动化实验以降低人力成本和出错率是未来化学实验的发展方向[1]. 光子晶体由具有周期性结构的不同介电常数材料组成. 光子晶体具有结构色, 其光学性能可采用反射光谱和荧光光谱进行表征[2]. 浸泡于溶液中的光子晶体微球水凝胶的光谱信息可以反映其所在化学环境中溶质的组成及浓度等信息, 并且可用于区分手性分子[3]. 然而, 光子晶体微球的制备与表征中存在多次重复测试和须收集信息的种类繁多等问题, 使得光子晶体微球的应用备受限制. 自动化实验的实现则有助于完成部分实验所需要的高通量筛选工作, Pfriem等[4]设计了用于生物分析的新型机器人设备, 实现了高吞吐量屏幕过程链部分的自动化; Griffen等[5]提出将人工智能应用于药物化学, 更精准地向临床医学提供合适的药物; Maryasin等[6]提出将机器学习算法应用于烯烃和烷基卤化物的基本反应, 有效识别了反应类型和预测结果,但是该算法缺乏一般性, 无法对其他类别的反应做出预测; Burger等[7]利用贝叶斯算法驱动机器人在8 d内自主完成688个实验场景, 寻找最高效的催化剂组合, 这种模块自动化组合的方法可适用于常规实验室. 目前, 自动化实验技术主要应用在商业制药领域, 而在化学实验室领域的应用仍处于探索阶段[8]. 本文将初步探索光子晶体微球信息的自动化采集, 利用机械臂通信协议提供的程序控制机械臂到显微镜载物台的指定位置, 在Python控制下, 利用Laplace算法结合图像处理软件保存光子晶体微球照片和测取清晰度实现显微镜的自动对焦, 并在焦点测出光子晶体微球尺寸和采集光谱数据, 以期提高光子晶体微球的信息采集效率.
本文设计了如图1所示的光子晶体微球数据采集系统, 该系统主要有3个组成部分: 1) HIBOTZ-Arm四轴可控机械臂(深圳慧灵科技有限公司, 深圳). 根据机械臂配套的通信协议并利用代码实现准确的四轴移动, 控制机械臂到显微镜载物台的指定位置, 在三维方向联合机械臂夹爪精准取放待测物; 2) Ni-E正置荧光显微镜(尼康仪器有限公司,日本). 在Python的控制下, 采用Laplace算法在图像处理软件NIS-Elements_D界面内通过代码模拟鼠标查看并保存光子晶体微球照片, 利用显微镜的高精度Z轴调焦技术调节载物台高度来调节物距进行对焦处理, 测取清晰度从而实现自动对焦, 然后测出光子晶体微球尺寸; 3) USB2000+微型光纤光谱仪(蔚海光学仪表有限公司, 美国). 应用海洋光学提供的OminiDriver软件驱动控制光纤光谱仪, 实时读取波长和强度等光谱信息, 并利用Python函数寻峰.
图1 光子晶体微球信息采集系统Fig.1 Photonic crystal information automatic collection system
图2 光子晶体微球信息采集流程Fig.2 Photonic crystal information automatic collection processes
本文所设计系统的信息采集过程如图2所示.
图3 遍历法(a)、爬山法(b)和本文方法(c)等3种调焦算法下待测物清晰度随物距的变化关系Fig.3 The clarity of the measured object changes with the object distance: the traversal method (a), the mountain climbing method (b), the traversal method first and then the mountain climbing method (c)
自动对焦的实质是寻找最大清晰度值[9]. 图3(a)(b)显示了待测物清晰度随物距变化的情况, 峰值所对应的点即对焦清晰的点. 与远离焦点的图像相比, 处于焦点的图像具有更多的边缘信息, 其灰度值变化更明显,图像清晰度更高, 故可利用清晰度来判断图像是否准确对焦[10]. 寻找焦点一般采用遍历法或爬山法, 遍历法下在物距范围内设置较小的步幅, 从起点开始测出起点1至终点9中每个点的清晰度, 点5即对焦准确的位点; 爬山算法则从点1开始测量清晰度, 当清晰度值出现拐点时即停止测量. 遍历法的测量工作量较大,而爬山法可能会误将某个局部最大值视为波峰; 因此, 为了更好地完成光子晶体微球的自动对焦, 笔者先设置较大的物距步幅采用遍历法进行粗调, 测量点1至点5的清晰度, 确定调节范围在点3与点4之间, 再设置较小的步幅利用爬山法进行细调, 测量点7至点9的清晰度, 确定焦点为点8, 其原理如图3(c)所示.
测得物距后通过代码模拟鼠标调整载物台至对焦清晰的位点,即可得到对焦清晰的光子晶体微球图像. 图像是由若干像素点组成的,彩色图像的每个像素包含R、G、B3个颜色分量, 每个分量有255种可能性.对图像进行灰度处理,将彩色三通道图像的R、G、B值变成相等的值, 即第i行第j个像素点的灰度值
I(i,j)=R(i,j)×0.3+G(i,j)×0.59+B(i,j)×0.59,
(1)
使得该彩色图像转化为单通道灰度图, 图像的亮度和颜色分布特征得以保留且计算量下降.
现采用SMD[11]、SMD2[11]、Variance[12]及Laplace[12]等8种主流清晰度算法, 针对一组由模糊到清晰的光子晶体微球图像进行清晰度测试, 结合各像素点灰度值的计算结果, 最终选择Laplace算法为本文光子晶体微球清晰度算法. 应用Python软件配合显微镜调整步幅, 测量图像的清晰度值, 找出对焦清晰点, 得到对焦正确的Z轴位置,实现自动对焦.
由于光子晶体微球荧光图像相对反射图像更清晰,选择保存荧光光子晶体微球图像进行尺寸测量. 通过Python保存带有标度尺的光子晶体微球图像,使之转化为灰度图并对各像素点进行二值化处理. 设置一个合适的阈值, 灰度值小于阈值的点为0, 灰度值大于阈值的点为255, 所有像素点只有0或255两个值, 分别对应于白色和黑色.二值化可使得图像信息量再次变少, 且不影响寻找图像轮廓. 利用Python外挂包中的轮廓算子[13]进行图像轮廓识别, 识别并返回待测的二值化图像的边缘像素点信息, 得到二值化后的光子晶体微球图像轮廓.根据边缘像素点信息作出光子晶体微球图像边缘的外接矩形, 利用外接矩形的坐标计算其像素点的边长.类似地,标度尺是一个已知实际长度的长方形, 轮廓算子可同时识别标度尺的轮廓并返回标度尺像素点的边长信息, 故可通过推算光子晶体微球外接矩形的实际边长计算光子晶体微球的实际直径,从而实现对光子晶体微球的尺寸测量.
通过Python实现波长和强度等光谱数据的采集. 将光谱强度数据归一化, 通过寻峰函数读取波峰数据.由于光谱图像中存在噪音和杂峰, 故先对光谱数据利用小波连续变换进行降噪平滑处理:
(2)
表1为采用SMD、SMD2及Variance等8种清晰度测试算法测量一组如图4(a→f的清晰度逐渐递增)所示的光子晶体微球图像所需的时间. 对各算法清晰度测量值进行归一化处理和线性拟合, 结果如图5所示.由图5可知, Variance和Vallath算法的清晰度测量值和实际值变化趋势与其他几种算法的几乎相反, 可能是由于这2种算法不适用于光子晶体微球低清晰度图像所致; Laplace算法的线性拟合度最佳且测试时间最短.
表1 8种清晰度测试算法的测量时间Tab.1 Measuring time of 6 pictures with 8 algorithms
图4 实际清晰度由模糊(a)逐渐趋于清晰(f)的光子晶体微球图像Fig.4 A set of photos of photonic crystals with sharpness ranging from fuzzy to clear, (a) to (f) the actual sharpness increases successively
图5 (a) SMD, (b) SMD2, (c) Variance, (d) Vollath, (e) Energy, (f) Laplace, (g) Brenner, (h) Entropy等8种算法下的清晰度测量值与实际清晰度的单调关系Fig.5 The relationship between the measured clarity of eight algorithms and the actual clarity (a) SMD, (b) SMD2, (c) Variance, (d) Vollath, (e) Energy, (f) Laplace, (g) Brenner, (h) Entropy
图6为光子晶体微球尺寸测量过程中Python程序准确识别出的图像.选取5个不同大小的光子晶体微球, 分别进行5次测量, Python测量值(566, 606, 662, 760, 808 μm)与采用比例尺手动测量的光子晶体微球直径的实际尺寸(550, 620, 648, 743, 820 μm)相比,平均误差为2.1%.故利用Python进行光子晶体微球尺寸自动化检测是可行的.
图6 自动测量光子晶体微球的三阶段原图(a)、灰度图(b)及外接矩形图(c)Fig.6 Photos processed in 3 steps for automatic photonic crystal microsphere measuring: the original photo (a), the grayscale image (b), the schematic diagram of the circumscribed rectangle (c)
利用Python读取OminiDriver数据采集系统实时输出的光谱波长和反射峰强度信息, 对强度归一化后进行降噪处理,通过找出反射峰强度最大值来寻找最大反射峰所对应的波长.选取5个最大反射峰对应波长不同的光子晶体小球进行Python光谱采集与寻峰.将光谱仪配套软件采集的光谱数据保存为文本文件, 对采集到的反射峰强度进行归一化处理; 在绘图软件Origin中对强度数据降噪,再以波长为横坐标,归一化后的反射峰强度信息为纵坐标作图; 在Origin中读取最大峰值时的波长, 进行人工寻峰. 对比人工寻峰和Python寻峰的结果,如表2所示. 由表2可见, 人工寻峰与Python寻峰的结果几乎一致,最大误差不超过0.54%, 表明Python寻峰的结果较为准确, 自动寻峰功能用于采集波峰和波长是合理可靠的.
表2 测量光谱最大反射峰波长的人工测量值、Python测量值和误差Tab.2 Manual measurement value of spectral peak wavelength,Python measurement value and error
本文设计的光子晶体微球信息自动化采集系统实施一次完整的信息采集所需时间为2 min, 而人工配合机器测量所需时间约为10 min, 表明本文设计的系统可以提高光子晶体信息采集与表征的效率.
本文基于Python软件结合机械臂、显微镜和光谱仪等硬件构建了一套光子晶体微球信息自动化采集系统. 实验结果表明, 本文设计的系统能够实现光子晶体微球的准确对焦、尺寸测量以及光谱采集和寻峰,提高了光子晶体信息采集的效率. 模块自动化的实现为更多的实验室操作自动化提供了新思路. 利用机械臂结合Python外挂软件和接口丰富的图像识别、机器学习等算法, 实现了由厘米尺度至微米尺度的移动和对焦等功能, 为显微镜和光谱仪等光学信号系统的深度利用提供新的可能.