本发明属于医疗图像处理领域,尤其涉及一种高鲁棒性的人眼屈光度检测方法。
背景技术:
检眼镜,激光投射和立式验光仪是目前人眼屈光度检测中比较常用的检测方法,检眼镜检测时耗时长且精度低,又极难把握,激光投射本身对人眼存在一定的不安全因素,尤其对新生儿和入学儿童的视力检查难以适用,立式验光仪设备笨重,需要固定的场所及熟练的人员进行操作,适用人群范围小。鉴于上述缺陷,实有必要设计一种高鲁棒性的人眼屈光度检测方法。
技术实现要素:
本发明所要解决的技术问题在于:提供一种高鲁棒性的人眼屈光度检测方法,来解决现有屈光度检测方法通用性差的问题。
为解决上述技术问题,本发明的技术方案是:一种高鲁棒性的人眼屈光度检测方法,该方法在人眼屈光度检测装置上实现,人眼屈光度检测装置包括壳体、摄像模块、控制模块、显示模块、触摸屏、安卓系统、数量为6组的红外灯、测距模块,所述的摄像模块、控制模块、显示模块、触摸屏、红外灯、测距模块均与壳体固连,所述的控制模块分别与摄像模块、显示模块、触摸屏、红外灯、测距模块电相连,所述的安卓系统写入控制模块内,该人眼屈光度检测方法包括以下步骤:
步骤1):开机,安卓系统通过控制模块直接启动摄像模块;
步骤2):手持并移动壳体,保证被检测者的眼睛被显示在显示模块上;
步骤3):点击触摸屏上的“开始”按钮,开始检测;
步骤4):前后移动壳体,通过测距模块检测并定位被检测者的瞳孔与摄像模块之间的距离为1米;
步骤5):1米距离定位完成后,开始自动抓图,同时,6组红外灯开始依次点亮,每组红外灯亮灯时间为200ms,在每组红外灯亮灯的200ms内,摄像模块将会获得六帧图像;
步骤6):当每一个红外灯亮灯时,摄像模块获取感光数据,并传送给控制模块内部的图像信号处理器,所述的图像信号处理器抓取六帧图像中的第三帧和第四帧中的任意一帧图像数据上传至应用层;
步骤7):应用层依据步骤6)所抓取的图像数据检测并计算瞳孔位置,得到含有亮斑的左右眼子区域图像,所述的左右眼子区域图像为定位瞳孔的外接矩形图像;
步骤8):将左右眼子区域图像中的亮斑按照设定公式旋转至水平位置,所述的设定公式为:90-n(当前抓取第几帧)*60;
步骤9):在步骤8)旋转后的图像数据取出一个设定尺寸的矩形框,所述的矩形框穿过瞳孔区域,所述的矩形框中心与瞳孔区域中心重合,所述的矩形框长度为:瞳孔半径r*(3/2),矩形宽度为:瞳孔半径r;
步骤10):计算步骤9)中设定尺寸的矩形框图像数据的灰度值;
步骤11):纵向遍历矩形框中的像素点,得到每一列中像素点的非零值,并计算出每一列非零像素的均方差averdiffsum,当averdiffsum<8.0时,记录当前列的平均值average至队列diffvector中和当前列数n至队列pointvector中;
步骤12):将队列diffvector和队列pointvector中的值进行最小二乘拟合运算,所述的最小二乘拟合运算表达式为:y=k*x+b,计算出拟合直线斜率k和直线常量b的值;
步骤13):剔除队列diffvector中与拟合直线y=k*x+b偏移较大的值,再次通过最小二乘拟合运算计算直线y=k*x+b,直到队列diffvector中与拟合直线的偏移量小于5时计算的y=k*x+b的拟合直线为最终拟合直线;
步骤14):通过大量样本,标定屈光度D与斜率k的对应关系,并拟合曲线;
步骤15):根据步骤13)计算出的最终拟合直线斜率k值,带入步骤14)得到的拟合曲线中,计算对应的屈光度D;
步骤16):重复步骤8)至步骤15)的所有步骤,对6组红外灯依次点亮时摄像模块获取的图像数据计算出6个屈光度,6个屈光度记做D1和D4,D2和D5,D3和D6,所述的对6组红外灯中第一组和第四组,第二组和第五组,第三组和第六组分别组成子午线;
步骤17):根据步骤16)计算出得屈光度D1和D4,D2和D5,D3和D6,计算出A,B,D三个值,其中:A=((D1+D4)/2+(D2+D5)/2+(D3+D6)/2)/3;B=(-2*((D1+D4)/2)+(D2+D5)/2+(D3+D6)/2)/3;D=((D2+D5)/2-(D3+D6)/2)/3;
步骤18):根据步骤17)计算得到的A,B,D三个值,计算球镜sph,柱镜cyl,轴位axis,从而完成人眼屈光度检测,其中:
axis=-0.5*tan-1(D/B)。
有益效果:该高鲁棒性的人眼屈光度检测方法,通过红外灯与图像的匹配和处理,检测瞳孔位置和亮斑分布,精确计算屈光度值,不仅操作简单,安全可靠,且通用性好,适用于所有年龄段的人眼屈光度检查。
附图说明
图1示出本发明流程图
图2示出本发明人眼屈光度检测装置结构示意图
图3示出本发明红外灯组布置示意图
壳体 1 摄像模块 2
控制模块 3 显示模块 4
触摸屏 5 安卓系统(图中未示出)
红外灯 6 测距模块 7
具体实施方式
如图1、图2、图3所示,一种高鲁棒性的人眼屈光度检测方法,该方法在人眼屈光度检测装置上实现,人眼屈光度检测装置包括壳体1、摄像模块2、控制模块3、显示模块4、触摸屏5、安卓系统、数量为6组的红外灯6、测距模块7,所述的摄像模块2、控制模块3、显示模块4、触摸屏5、红外灯6、测距模块7均与壳体1固连,所述的控制模块3分别与摄像模块2、显示模块4、触摸屏5、红外灯6、测距模块7电相连,所述的安卓系统写入控制模块3内,该人眼屈光度检测方法包括以下步骤:
步骤1):开机,安卓系统通过控制模块直接启动摄像模块;
步骤2):手持并移动壳体,保证被检测者的眼睛被显示在显示模块上;
步骤3):点击触摸屏上的“开始”按钮,开始检测;
步骤4):前后移动壳体,通过测距模块检测并定位被检测者的瞳孔与摄像模块之间的距离为1米;
步骤5):1米距离定位完成后,开始自动抓图,同时,6组红外灯开始依次点亮,每组红外灯亮灯时间为200ms,在每组红外灯亮灯的200ms内,摄像模块将会获得六帧图像;
步骤6):当每一个红外灯亮灯时,摄像模块获取感光数据,并传送给控制模块内部的图像信号处理器,所述的图像信号处理器抓取六帧图像中的第三帧和第四帧中的任意一帧图像数据上传至应用层;
步骤7):应用层依据步骤6)所抓取的图像数据检测并计算瞳孔位置,得到含有亮斑的左右眼子区域图像,所述的左右眼子区域图像为定位瞳孔的外接矩形图像;
步骤8):将左右眼子区域图像中的亮斑按照设定公式旋转至水平位置,所述的设定公式为:90-n(当前抓取第几帧)*60;
步骤9):在步骤8)旋转后的图像数据取出一个设定尺寸的矩形框,所述的矩形框穿过瞳孔区域,所述的矩形框中心与瞳孔区域中心重合,所述的矩形框长度为:瞳孔半径r*(3/2),矩形宽度为:瞳孔半径r;
步骤10):计算步骤9)中设定尺寸的矩形框图像数据的灰度值;
步骤11):纵向遍历矩形框中的像素点,得到每一列中像素点的非零值,并计算出每一列非零像素的均方差averdiffsum,当averdiffsum<8.0时,记录当前列的平均值average至队列diffvector中和当前列数n至队列pointvector中;
步骤12):将队列diffvector和队列pointvector中的值进行最小二乘拟合运算,所述的最小二乘拟合运算表达式为:y=k*x+b,计算出拟合直线斜率k和直线常量b的值;
步骤13):剔除队列diffvector中与拟合直线y=k*x+b偏移较大的值,再次通过最小二乘拟合运算计算直线y=k*x+b,直到队列diffvector中与拟合直线的偏移量小于5时计算的y=k*x+b的拟合直线为最终拟合直线;
步骤14):通过大量样本,标定屈光度D与斜率k的对应关系,并拟合曲线;
步骤15):根据步骤13)计算出的最终拟合直线斜率k值,带入步骤14)得到的拟合曲线中,计算对应的屈光度D;
步骤16):重复步骤8)至步骤15)的所有步骤,对6组红外灯依次点亮时摄像模块获取的图像数据计算出6个屈光度,6个屈光度记做D1和D4,D2和D5,D3和D6,所述的对6组红外灯中第一组和第四组,第二组和第五组,第三组和第六组分别组成子午线;
步骤17):根据步骤16)计算出得屈光度D1和D4,D2和D5,D3和D6,计算出A,B,D三个值,其中:A=((D1+D4)/2+(D2+D5)/2+(D3+D6)/2)/3;B=(-2*((D1+D4)/2)+(D2+D5)/2+(D3+D6)/2)/3;D=((D2+D5)/2-(D3+D6)/2)/3;
步骤18):根据步骤17)计算得到的A,B,D三个值,计算球镜sph,柱镜cyl,轴位axis,从而完成人眼屈光度检测,其中:
axis=-0.5*tan-1(D/B)。
本发明不局限于上述具体的实施方式,本领域的普通技术人员从上述构思出发,不经过创造性的劳动,所做出的种种变换,均落在本发明的保护范围之内。