程大骞 付文智 陈东杰 王慕冰 陈 彦 李朝荣
(北京航空航天大学 1物理科学与核能工程学院, 2物理科学与核能工程学院物理实验中心,北京 100191)
在薄透镜焦距测量实验中,需要判断透镜成像的清晰位置。然而由于人眼评估清晰度的灵敏度低,在一定范围内均认为清晰,因此实验中常通过测读法(从左至右与从右至左各寻找一个清晰点,重复至少5次或以上)来减小误差。即便如此,仍然存在一定误差,同时多次重复测读耗费大量时间。本文基于计算机视觉,搭建由低成本摄像头、计算机组成的系统,实时评估成像的清晰度。实验结果表明,本系统可以减小误差,并且节省80%的测读时间,同时使用的摄像头成本约为200元,且不改变实验的其他步骤,可以在实验课程中推广使用。
透镜焦距测量的常用方法有自准直法、物距像距法、共轭法和平行光管法等。在近轴光线条件下,薄透镜的成像规律可用公式(1)表示为
(1)
以共轭法为例[1],设凸透镜的焦距为f,使物与屏的距离L>4f并保持不变,见图1。移动透镜至x1处,在屏上成放大实像(A1B1),再移至x2处,成缩小实像(A2B2)。令x1和x2间的距离为a,物到像屏的距离为b,由式(1)和图1中所给出的几何关系,可导出式(2),进而可求出焦距:
图1 共轭法测凸透镜的焦距
(2)
本系统使用摄像头对屏幕拍摄,输出实时清晰度评估,可用于任何测量焦距的实验方法。
图5 原图(a)、原图直方图分布(b)与对象提取结果(c)
本文使用计算机视觉代替人眼,完成对透镜成像清晰度的评估。
硬件方面,本系统仅需电脑与低成本摄像头。本文使用1/3英寸CMOS感光元件的USB免驱动摄像头,售价约200元,方便在实验课程中推广。程序控制摄像头捕获一帧图像之后,首先进行预处理,包括去除椒盐噪声,并分割出成像区域;其次进行Sobel算子卷积,求得梯度图,再求梯度图的直方图统计;最后基于直方图,根据高梯度像素的数量和相对梯度的分布来评估成像清晰度。系统以20Hz运行,基于OpenCV实现[2]。系统运行框图见图2。
为了提高系统的易用性与鲁棒性,本文借鉴测读法,实验中从左至右、从右至左各获取一个成像清晰的起始位置,取算术平均值作为成像清晰的位置。系统实物图如图3所示。
图3 系统实物图
由于在弱光下使用低成本摄像头,图像有明显的椒盐噪声,本文使用中值滤波过滤。相对于高斯滤波等降噪手段,中值滤波可更多地保留梯度。由图4可见,原图具有较明显的噪声,使用3×3卷积核可以滤除一部分,使用5×5卷积核可以基本滤除,因此使用后者。
图4 原图(左)、3×3卷积核中值滤波(中)、5×5卷积核中值滤波(右)
当成像较小时,由于透镜较小,屏幕周边会有光照影响,干扰之后的处理,需要滤除。
由于中心部位亮度显著大于周边光,统计直方图如图5所示(直方图略去低亮度部分),因此根据直方图,用二值化将高亮度部分滤出作为掩膜,再进行开运算消除暗噪声并放大掩膜,最后将得到的掩膜叠加在原图像上,得到提取之后的图像。
对焦清晰度评估算法非常成熟[3],但在本实验中,场景单一、形状固定,而光照对比度大、亮度低、噪声较大,因此需要特殊设计算法,以克服以上约束。
本文提出的方法首先计算Sobel梯度图,并且对梯度图统计直方图分布。然后基于梯度图的直方图分布,评估成像清晰度。
首先使用Sobel算子,得到预处理之后图像的梯度图。同样,使用不同大小的Sobel卷积核可以得到不同结果,对比之后选用3×3的卷积核,并求得其直方图,如图6所示。
由图6可看到,对焦清晰时边缘锐利,在梯度图中亮度高,亦即梯度图直方图中靠右的部分。图7为两张图像的梯度图局部与两梯度图的直方图,直观可见左图比右图更加锐利。
由图7两直方图可见,清晰图像的梯度分布更加靠右,也就是极高梯度的像素数更多。因此,我们同时考虑高梯度像素的数量与分布,设计算法。我们对梯度从高到低进行统计(即直方图从右到左),将某梯度值对应的像素个数与本梯度对应的权重相乘,再按梯度从高到低,以此把值相加,当和到达一定阈值时,以对应的梯度值为判断依据,称截止梯度noff。当截止梯度值高于一定值时,认为这幅图像是清晰的。权重的形式为指数,即满足式(3)。
图6 Sobel梯度图与对应的直方图(a) 3×3卷积核; (b) 5×5卷积核; (c) 对应的直方图
图7 两幅图的梯度图局部与对应的直方图
本算法有3个参数,即分布权重底数a、分布阈值u及总和阈值Sumth。实验中发现,本算法对参数选择并不敏感,本系统中选择a=1.95,u=242,Sumth=4000。最终将算法编写成应用程序。若评估清晰,则显示白色方框,如图8所示。
图8 软件运行截图
使用者需要使用测读法,即将透镜(或其他光具)从左至右、从右至左各移动一次,记下来两次开始出现白框的位置,取算术平均值,即为清晰成像的位置。最终程序在Python下实现[4],单帧图像的处理用时约为5ms,可以实现20Hz的图像评估,满足实时性需求。
(3)
本文使用计算机代替人眼评估清晰度,目的是减小误差并节省时间,实验围绕目的设计。
由于本文的评估对象是成像清晰度,亦即光具座的位置,难以获得真值,于是使用多人多次测读的方式获得一个误差很小的值来代替真值。具体方法是:4人在同一实验条件下,分别测读5次,得到针对一个清晰成像点的40个数据(即20组),算术平均之后,可以得到方差仅为单次测量方差的5%的测量值,作为真值。同时由本系统对同一条件下的清晰成像位置进行单次测量,与真值对比。
本文使用共轭法进行测量,即有一大一小两个清晰成像点,进而计算平均值,与计算机对比,结果如表1所列。
表1 人与计算机测量结果对比
结果表明,本系统可以输出较为精确的结果。同时,由于只需要单次往返测量,比实验中使用的5次测读法,可节省80%的时间。
本系统使用计算机和低成本摄像头,实现了对透镜成像清晰度的评估,可以减小误差,并且节省该实验的大量时间。系统基于图像梯度,利用高梯度像素的数量和分布,对成像清晰程度评估。本系统成本低廉,并且实现实时评估,可以应用在实验课程中。