单德强 胡超
摘 要:提出一种检测镜片屈光度等光学参数的方法,点光源穿过准直物镜形成的垂直光线再依次穿过眼镜镜片和哈特曼栅格会得到哈特曼光阑图,利用树莓派原装镜头拍摄得到光线形成的哈特曼光阑图。在树莓派上对得到的哈特曼光阑图进行数据处理,并进行一系列的公式的计算最终得到球镜度等镜片参数。
关键词:眼镜屈光度;树莓派;哈特曼光阑;图像处理
中图分类号:TH741 文献标志码:A 文章编号:2095-2945(2018)27-0013-03
Abstract: A method of measuring optical parameters such as diopter of lens is presented. The vertical ray formed by point light source passing through collimating objective lens will get Hartmann diaphragm map when it passes through lens and Hartmann grid in turn. The Hartmann diaphragm of light is captured using the original Raspberry Pi lens. On the Raspberry Pi, the data of the Hartmann diaphragm are processed, and a series of formulas are used to calculate the lens parameters, such as the spherical degree of mirror.
Keywords: diopter of lens; Raspberry Pi; Hartmann diaphragm; image processing
眼镜是矫正眼球屈光、保护眼睛健康,改善视力功能的一种特殊专用的医疗仪器,是驗光中主要的光学矫正方法。焦度计[1]是眼镜镜片检测必不可少的国家强制性测量和检测仪器,是确定眼镜镜片的中心点,检测镜片的顶点屈光度、柱面度数、柱面透镜轴位角度和棱镜度等透镜参数的测量仪器。现在的自动焦度计都带有一个微型电脑,可以进行处理数据等操作,获得的主要参数有球面透镜光焦度,柱面透镜光焦度,柱面透镜轴位和棱镜光焦度。通过自动焦度计检测和分析镜片的过程实现了快速化和自动化,节约了大量的时间和精力,而且还减少了一些人为的测量读数错误或者计算错误。
眼镜屈光度的检测主要包括四个步骤,即光斑图像的获取、图像阈值分割及二值化[2]、光斑质心的提取、光学参数的计算。目前,对于眼镜屈光度检测有许多不同的方法,但是均有其各自的优点与缺点。利用莫尔偏折技术实现镜片屈光度的测量能够达到很高的测量精度,基本原理是根据被测物体所引起的莫尔条纹的偏移量来测量物体的特性,但莫尔条纹的处理比较复杂,而且处理时间较长,无法满足工业测量的需求。而基于PSD等位置探测器的镜片检测方法虽然相对简单,但是对于位置探测器的精度要求很高,并且难以保证测量误差。另外还有其他使用以ARM和CCD为核心的嵌入式测量系统,都可以实现镜片测量的功能。而本文提出的镜片测量方法,只需要将拍到的光斑图像进行特征点提取处理后,对光斑特征点之间的距离进行计算从而得到相对精确的屈光度参数,而不需要使用位置探测器等进行镜片中心点的定位和寻找,从而能够大大节省图像处理的时间,并且测量实验所需的硬件价格低廉,比较适合于工业上的应用。
1 仪器结构
自动焦度计通常是由光学系统、精密机械、光电检测装置及电气控制装置等部分组成,涉及到光、电机和电力等方面的技术。图1为自动焦度计的简单的结构示意图,包括光源、准直物镜、待测镜片的支座、哈特曼光阑板、成像板、图像拍摄摄像头、电子控制处理系统(树莓派)以及LCD显示屏幕(图中未画出)等。选择了高亮度发光二极管作为点光源,通过准直物镜的光线能够得到比较理想的平行光[3]。被测镜片可能是远视镜,近视镜或渐进多焦点镜片。哈特曼光阑板栅格上有五个大孔和若干个小孔,每个小孔和打孔都是等间隔的,在光线穿过后会形成等间隔的光斑图。
2 测量原理
自动焦度计的测量主要是测量光线穿过哈特曼光阑板上的栅格后落在成像板上的五个大光斑点以及其他一些小光斑点的位置和距离的变化[4]。测量原理如图2所示,当没有被测镜片或者镜片是度数为0的透镜时,光源穿过Hartmann光阑板的栅格投影到成像板上,形成的光斑点的位置是在位置1;而当要测量的镜片是为负透镜(近视透镜)时,平行光通过要测量的透镜镜片且会发生偏折现象,并且光斑的位置会被投影到位置2;待测镜片为正透镜(远视透镜)时,平行光线经过偏折光斑点位置会向中心点偏移[5]。控制摄像头捕捉哈特曼光斑点图像,对光斑图像进行去噪声、区域分割、二值化等预处理,计算出光斑特征点的几何坐标参数和光斑中心的移动,然后用先前获得的标准透镜镜片图像坐标数据执行插值和误差计算处理[6]。最后,计算被测透镜镜片的相关光学参数。
2.1 球镜度(SPH)的测量计算
当要测量的透镜镜片是球面镜时,点光源穿过哈特曼光栅形成的光斑图像的四个大孔的中心是图3中的A、B、C和D四个点。已知哈特曼光栅十字准线上两个大孔中心之间的距离为d,待检测透镜镜片会发生平行光线会聚或发散的情况,会使光斑图像上的标线上的两光斑点的中心距离是d0,则待检测透镜镜片的球镜面顶焦度即为:
2.2 柱镜度(CYL)的测量计算
3 实验分析
3.1 实验环境
Raspberry Pi[7]也可以作为一个嵌入式微型计算机进行图像处理,通过OpenCV就可以使用Raspberry Pi上的帧差异方法来检测Raspberry Pi摄像头捕获的图像,通过控制程序,可以直接控制执行器。因此,将OpenCV与Raspberry Pi相结合来处理图像,可以获得一个简洁高效的自动运动检测控制中心。
Raspberry Pi作为微型计算机,只需打开显示器和接通鼠标、键盘等即可实现传统计算机上实现的大部分功能,如文字处理,图像处理等。所以使用Raspberry Pi进行图像处理有很多优点。Raspberry Pi的运算速度也非常快,并且具有GPIO接口,能够通过编写程序实现对GPIO接口的控制来实现对执行器的控制。Raspberry Pi也相对比较便宜,所以使用Raspberry Pi作为图像处理的核心平台,与传统的计算机相比较不管是在性价比还是在处理图像功能的完整性上都有着独特的优势。对于Raspberry Pi上的图像处理,OpenCV是首选工具。OpenCV的全称是(Open Source Computer Vision Library),它是一个基于开源发行的跨平台计算机视觉库,可以运行在Linux、Windows、Mac OS等操作系统上。其特点是较高的移植性和多功能通用性,开源,跨平台,兼容多种操作系统等。使用的编程语言是基于C函数以及少量的C++类语言构成,还提供了与其他编程软件语言的接口:例如,Python、Ruby、Matlab等编程语言,大大增强了其通用性和多功能性。
OpenCV的优势总结下来就是开源;代码规范;具备了良好的可以后续的开发和改进的能力。但是同样的缺点也更加明显,对于图像分析研究的代码运行、分析图像信息的运行速度比较慢,并且运行分析过程中的稳定程度还不够,程序相对也是更独立,因此与其他相关函数库不兼容;对于一些更具体的视觉问题的解决方案需要依靠硬件,有着相对较高的硬件要求[8]。OpenCV的主要目标是构建一个易于使用的计算机视觉框架,并将Raspberry Pi当作嵌入式的微型计算机与之相结合起来,用于解决许多计算机视觉相关应用的复杂问题。
3.2 實验误差分析
球镜度测量误差:球镜度误差可以分为内部误差和外部误差,当光线穿过镜片时在镜片内部发生偏折时产生的误差可当作内部误差,而外部的误差则指在成像板上得到的光斑图像处理过程中测量计算光斑特征点距离时所产生的误差。因此当镜片是度数很大的正透镜(远视镜)时,镜片中心的厚度很大,需要对测得的球镜度重新校正,已达到尽可能的消除误差的目的。
棱镜度测量误差:通过分析可以知道棱镜度的大小是由棱镜顶角、折射率和入射光的入射角决定的。假如光线没有垂直平面入射,也有可能会造成一定的误差。
3.3 实验结果分析
图4是实验采集的图像,由于拍摄所使用的摄像头的分辨率不够高,同时也存在光的衍射、噪声等问题,使得拍摄采集到的图像有些模糊不清楚,质量并不是很高,对于图像的分析处理比较不利,对收集的图像进行去噪和二值化等预处理是非常必要的。在预处理过程中,使用OpenCV自带的一些图像处理模块用于简单的图像处理,然后使用Python编程查找预处理后的光斑图像上的五个大孔的中心坐标点的位置。同时,计算从四个大孔中心到镜片中心的距离。该算法的第一步是找到透镜镜片的中心,然后左右搜索另外同一个水平方向的三个大孔;接着上下搜索纵向的三个大孔。最后通过计算公式编程计算得到镜片的球面透镜焦度数、柱面透镜焦度数、棱镜度数等参数的值。不过通过对实验整体过程的分析,摄像头的分辨率不够高,导致图像的精准度不够,也对最终得到的实验计算结果产生一些误差;另一方面,使用Python编程计算速度还是不够快,如果图像的分辨率更高可能程序运行时长。
4 结束语
本文提出了一种基于树莓派微型计算机检测镜片屈光度的方法,利用树莓派作为电子处理单元,通过对哈特曼光阑图的分析和计算等能够快速实现球镜度、柱镜度和散光度等镜片参数的测量。相对比于简单的单点测量法,解决了检测镜片的局限性;而莫尔偏折法以及朗奇光栅法对于图像的处理又太过于复杂,同时测量的时间也长,并且非常依赖采样点的准确性,难以真正地在工业中使用。而根据本文提出的方法可以采用发光二极管、准直物镜、哈特曼光阑板、树莓派微型计算机、LCD显示屏、拍摄摄像头等构成一个自动的镜片屈光度检测的测量系统,有较强的现实意义。整个系统能够比较准确的测量计算镜片屈光度的光学参数,而且整个系统所使用的设备价格均比较合理。
参考文献:
[1]马玉莹.自动焦度计的应用[J].中国计量,2015,8:77-78.
[2]刘晨,张辉,柯玉军.自动焦度计的研制[J].光学仪器,2003,12(25):40-44.
[3]何小群.基于图像处理技术的自动焦度测量方法[D].重庆大学,2009,6.
[4]刘国成,翟超.基于FPGA的哈特曼光斑图像处理算法设计[D].中国科学技术大学,2016,5.
[5]刘晨.焦度计综述[J].应用光学,2004,25(1):55-57.
[6]吴泽楷,李恭强,王文涛,等.基于改进圆拟合算法的激光光斑中心检测[J].激光与红外,2016,46(3):347-350.
[7]柯博文.树莓派(Raspberry Pi)实战指南[M].北京:清华大学出版社,2015:142-175.
[8]毛星云,冷雪飞.OpenCV3编程入门[M].北京:电子工业出版社,2015:10-20.