便携红外相机视力检测算法
技术领域
本发明涉及一种便携红外相机视力检测算法,属于深度学习图像处理技术。
背景技术
在视力筛查领域中,以往的方法缺少简捷、有效的检测手段,普查率和治疗率普遍较低。2000年,由李湘宁、陈家璧等改进的偏心摄影验光仪,虽然考虑了光源宽度和照相机口径大小的影响能减小计算中的系统误差,但验光法存在工作盲区,方法陈旧且精度较差,测量效果并不理想。2002年,张涛、邹林儿等提出的数字式摄影验光仪,由于光路单一的原因,验光对仪器的要求较高且方法陈旧,并且需要专业的验光师才可以使用。2009年,薛峰、李湘宁利用曲波对图像进行去噪和边缘检测,再由最小二乘法拟合边缘点和瞳孔更精确的定位,计算出瞳孔的屈光度。虽然稳定性和实时性好,但由于光学分析是基于点光源的框架为前提,在实际工作的光源中有一定的物理尺寸,需要根据实际光源大小调整。而且由于眼睛的像差影响,也会造成一定的测量误差,会影响屈光度的测量精度。2013年,罗玉浩等用OpenCV实现红外图像的瞳孔检测限制有效区域,仅适用于瞳孔位置相对固定情况,难以处理瞳孔相对位移较大的情况。
传统的视力检测技术主要以大型的仪器设备结合专业验光师操作为主,需要专业验光师,通过验光师与患者通力合作才能实现,人力物力及财力资源花费高昂,而且验光方法存在一定的缺陷,又因为青少年儿童的配合率低,经常有验光结果不准确,视力问题不能及时纠正,会影响青少年儿童的视力发育问题。而深度学习Faster R-CNN识别和阈值分割图像处理技术与Photorefraction Ocular Screening设备(多灯光反射照相机)的技术结合可以实现视力的智能检测,不但节省了了以上人力物力和专业的验光室上的巨资花费,也避免了与青少年儿童不好配合的困难。
从国际国内研究状况分析,目前验光方法的发展缓慢,缺少一种快速、高精度、容错率高的验光方法。目前已有多种用于检查视力功能的方法和器械,例如由Kaakinen在1975年提出的,并由Howland,山本敏雄,王光霁和瞿佳等进一步发展的偏心摄影验光方法就是其中一种比较快速、经济、客观的方法,但其简便性和精确性还远不能令人满意,单光照灯鲁棒性低,对环境光线比较敏感,适合光线比较理想的情况下。
近几年,瞳孔图像处理技术在国内快速发展,为眼病筛查诊断和治疗提供了有力支持。通过算法来实现瞳孔图像的分割,例如姚畅等采用基于分布式遗传算法和Otsu相结合,来提取对比度较小及边界微弱的角膜映光点边缘的方法,属于通过训练算法实现图像的分割。这种方法能够采用容器标准的图像信息,得到更优的分割结果,但同时需要对大量的图像预分割处理,大部分情况下是无法实现的。梁晓玲等对基于图像处理的近视斜视筛查方法的研究,采用Hough变换方法,实现瞳孔孔径及瞳孔中心点的检测,来实现对瞳孔图像的检测,但该方法的所采集的数据比较单一,鲁棒性低,也没有实现对传统仪器数据采集上的新突破。
新式验光仪例如日本尼德克AR-20手持式电脑验光仪则更为轻便,其价格在15万元人民币左右,虽然比大型验光仪便宜,但价格仍然昂贵,所以仍只能用于医院或其他医疗部门,而不能被大众所接受。
按照检测原理,将屈光度的检测分三大类:光学、数字图像处理和其他方法。光学方法:利用人眼的光学特性配合外部的光学组件获取瞳孔的屈光状态。目前市场上大部分采用基于哈特曼波前探测的光学原理实现。基于数字图像处理的屈光度检测方法的依据是不同屈光状态的瞳孔对光照反应不同,通过对瞳孔图像进行数字图像处理来推算屈光度,其核心方法是偏心摄影验光法,也是本发明研究的重点。其他方法则是利用激光等其他手段来检测屈光度。
发明内容
为解决上述问题,本发明的目的在于提供一种便携红外相机视力检测算法,利用深度学习Faster R-CNN识别图像,采用阈值分割的方法,来识别分割人脸图像,提取瞳孔特征参数,根据特征参数的比值来计算屈光度,同时结合Photorefraction OcularScreening设备的多灯拍摄技术,来实现瞳孔针对不同角度光线所形成不同屈光度的计算,快速、准确的实现视力筛查。
本发明的目的是通过以下技术方案实现的:
一种便携红外相机视力检测算法,包括以下步骤:
步骤1,通过多灯光反射照相机选取焦距为1m的拍摄距离,分别从不同角度对瞳孔进行拍摄,获得多张不同角度灯位的人脸图像;
步骤2,对采集好的人脸图像预处理,采用Faster R-CNN识别技术对人脸图像进行瞳孔识别,并将识别的瞳孔图像切割下来;
步骤3,对所述瞳孔图像进行阈值分割,得到二值化图像;
步骤4,对二值化图像进行瞳孔的特征参数提取;
步骤5,根据瞳孔的特征参数计算瞳孔屈光度,并计算每个灯位屈光度的平均值;
步骤6,将步骤5得到的平均值花在屈光图中,完成视力检测。
进一步的,步骤3包括对所述瞳孔图像进行相应的图像处理,消除噪声污染的影响;进而对瞳孔图像进行边缘检测,检测瞳孔的特征边缘信息,清晰的提取瞳孔的特征边缘,并将图像阈值分割得到二值化图像。
进一步的,从光源发出的光线通过屈光系统投射到眼底,反射光线经过放置在摄像镜头前的半圆形光阑在照相机成像平面上形成新月形瞳孔图像,且瞳孔图像的新月形状有亮暗分界线。
进一步的,步骤4中通过检测连通域面积的方式,实现对瞳孔图像进行特征参数提取。
进一步的,瞳孔图像中整个瞳孔区域的特征参数提取方法为:
步骤a,对预处理后得到的瞳孔图像进行二值化,调整阈值参数,再对瞳孔图像进行阈值分割,然后对瞳孔区域进行特征提取,并将瞳孔区域标记为最大连通域;
步骤b,找到瞳孔图像中的最大连通域,对其进行标记处理,将标记的最大连通域以外的其它区域置为0;
步骤c,根据提取的瞳孔图像中瞳孔区域,获得此连通域面积。
进一步的,瞳孔图像中新月形亮区域的特征参数提取方法为:
步骤a’,分别对各预处理后的瞳孔图像使用调整亮度和对比度的方法进行增强处理;对增强处理后的瞳孔图像进行二值化操作,初步提取出瞳孔内新月形区域;
步骤b’,对步骤a’所提取的新月形区域进行连通域面积大小提取,设瞳孔区域面积为S,并将面积大于S/100的连通区域标记成最小连通域;
步骤c’,找到最小的连通域标记,将标记外其它区域置成0,提取角膜映光点;
步骤d’,对步骤a’所提取的新月形区域进行连通域面积大小提取,找到图像中最大连通域进行标记,将其它连通域设为0;
步骤e’,分别提取瞳孔图像对应的新月形区域,得到此连通域面积。
进一步的,步骤5中,屈光度D根据以下公式计算:
D=E/(2·A·R·DF)
式中:DF是瞳孔图像中新月形区域面积与整个瞳孔区域面积的比例;A为眼睛主面到照相机镜头主面的距离;R为瞳孔半径;E为照相机光源中心到照相机光阑刀口边缘的偏心距。
进一步的,步骤6中,按屈光度的高低将视力检测分成低度、中度和高度,根据不同程度的近视采用不同的权重取值,并确定瞳孔屈光度取值灯位区域;低度近视选用Lenth为1的圈层对应的灯位值,中度近视选用Lenth为2的圈层对应的灯位值,高度近视选用Lenth为3的圈层对应的灯位值。
进一步的,其中屈光度在300以下为低度近视,屈光度在300-600为中度近视,屈光度为600以上为高度近视。
本发明的有益效果为:
第一,针对光反射照相眼部筛查装置提出一种检测瞳孔参数的新方法,该验光方法首先通过多灯光反射照相机(Photorefraction Ocular Screening Device)获得多张不同角度灯光的人脸图像,避免了传统验光流程复杂和验光设备昂贵的问题,也不需要专业的验光师使用。
第二,采用深度学习Faster R-CNN快速准确实现瞳孔检测,将深度学习的快速准确的识别技术与先进的多灯光反射照相机技术相结合,该方法快速、准确、时效性好,实现了视力的智能检测。
第三,瞳孔最终的屈光度根据多组实验取得的每个灯位的平均值,算法鲁棒性好,容错率高。
附图说明
图1为光反射照相机拍摄应用示意图;
图2为具体实施方式中所选灯位区域示意图;
图3为偏心摄影验光系统结构示意图;
图4为光反射照相机光源和光阑结构示意图;
图5为Matlab模拟近视眼示意图;
图6为瞳孔区域的提取结果示意图;
图7为角膜映光点区域提取结果示意图;
图8为光反射照相左眼新月形区域分割结果示意图;
图9为对于同一筛查眼,传统仪器测量为550度时,根据本发明算法计算出的屈光度结果示意图;
图10为对于同一筛查眼,传统仪器测量为450度时,根据本发明算法计算出的屈光度结果示意图;
图11为对于同一筛查眼,传统仪器测量为250度时,根据本发明算法计算出的屈光度结果示意图;
图12为对于同一筛查眼,传统仪器测量为800度时,根据本发明算法计算出的屈光度结果示意图;
图13为本发明所述视力检测算法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
一种便携红外相机视力检测算法,包括以下步骤:
步骤1,通过多灯光反射照相机(Photorefraction Ocular Screening Device)选取焦距为1米的拍摄距离,如图1所示,分别从不同角度对瞳孔进行拍摄,获得多张不同角度灯位的人脸图像。本实施例中只选取19个灯作为候选区参与计算,如图2所示,除去四角8个灯。
步骤2,利用Faster R-CNN实现瞳孔图像检测。目标检测的复杂性由以下两个因素引起的,即大量的候选框需要处理,及这些候选框的定位是很粗糙的,所以必须被微调。Faster R-CNN网络将提出候选框的网络(RPN)和检测网络(Fast R-CNN)融合到一个网络架构中,从而较理想的处理了上面提出的问题。RPN即认为是可能包含的物体区域;Fast R-CNN检测器,它采用RPN提出的RoIs进行分类和框的微调。本实施例对光反射照相机采集好的图像,经过预处理后,采用Faster R-CNN对人脸图像进行瞳孔识别,并将识别的瞳孔图像切割下来,不同照灯对应19张不同拍摄图,为方便统计本实施例仅选取左眼作为示例。
步骤3,对检测出来的瞳孔图像进行相应的图像处理,消除噪声污染的影响。进而对瞳孔图像进行边缘检测,检测瞳孔的特征边缘信息,清晰的提取瞳孔的特征边缘,并将图像二值化。光反射照相机采用偏心摄影原理,偏心摄影验光系统结构图如图3所示,从光源发出的光线通过屈光系统聚焦到视网膜上,成像清晰为正视眼无屈光不正的情况,如光线1;当光源光线聚焦到视网膜前为近视眼,如光线2;当光源光线聚焦到视网膜后形成远视眼,如光线3。发出的光线投射到眼底,根据眼睛的屈光状态不同,反射光线经过放置在摄像镜头前的半圆形光阑在照相机成像平面上形成不同形状的瞳孔图像。所成的瞳孔图像为一新月形,具体形状按照光源、光阑的放置位置和被测者的屈光状态而不同。瞳孔图像的新月形状有亮暗分界线。经过实验表明,该亮暗边界与被测眼的屈光状态在一定的范围内有对应关系。即随着被测眼的屈光度改变,瞳孔图像的亮暗部分的比例也会相应改变。利用光线追迹方法可得出偏心摄影验光的理论公式,近视和远视的屈光度D都可以用以下公式表示:
D=E/(2·A·R·DF)
式中:DF是瞳孔图像中新月形区域面积与整个瞳孔区域面积的比例;A为眼睛主面到照相机镜头主面的距离;R为瞳孔半径;E为照相机光源中心到照相机光阑刀口边缘的偏心距。
D为人眼相对屈光度,定义为D=(1/X)-(1/A),X为远点距离。
步骤4,进行特征参数的提取,所述特征参数为步骤3中提到的用于计算屈光度的参数。
筛选近似、斜视眼病的重要依据为:新月形亮区域,角膜映光点产生的眼位偏斜。近视眼病患者在接受反射照相机光源发出的光线,会聚焦到视网膜前,其瞳孔图像内会形成新月形区域。照相机内光源与光阑位置如图4所示。
在反射照相机得到的反射图像中,瞳孔内部产生新月形区域形成两岸分界线。鉴于临床实验,眼病患者的近视程度与瞳孔内新月形区域产生的亮暗分界线,存在着一定范围内的正比例关系。该关系为:随着近视程度上升,新月形区域比例上升,亮暗边界线的高度增加;反之,随着近视程度下降,新月形区域比例下降,亮暗边界线的高度减低。近视眼模型如图5所示。
本实施例通过采用检测其连通域面积的方式,来实现对瞳孔图像进行阈值分割,同时进行特征参数提取,从而实现对近视眼病的筛查。
瞳孔图像中整个瞳孔区域的特征提取的方法为:
步骤a,对预处理后得到的瞳孔图像进行二值化,调整阈值参数,再对瞳孔图像进行阈值分割,然后对瞳孔区域进行特征提取,并将瞳孔区域标记为最大连通域。
步骤b,找到瞳孔图像中的最大连通域,对其进行标记处理,将标记的最大连通域以外的其它区域置为0。
步骤c,根据提取的瞳孔图像中瞳孔区域,获得此连通域面积。如图6所示。
瞳孔图像中新月形亮区域的特征提取具体的方法为:
步骤a’,分别对预处理后的19张瞳孔图像使用调整亮度、对比度等方法对得到的瞳孔图像进行增强处理;对增强后的瞳孔图像进行二值化操作,初步提取出瞳孔内新月形区域。
步骤b’,对步骤a’所提取的新月形区域进行连通域面积大小提取,设瞳孔区域面积为S,并将面积大于S/100的连通区域标记成最小连通域。
步骤c’,找到最小的连通域标记,将标记外其它区域置成0。提取角膜映光点,如图7所示。
步骤d’,对步骤a’所提取的新月形区域进行连通域面积大小提取,找到图像中最大连通域进行标记,将其它连通域设为0。
步骤e’,分别提取19张瞳孔图像对应的新月形区域,得到此连通域面积,如图8所示。
步骤5,根据步骤4提取的特征参数计算瞳孔屈光度,并绘制不同灯位的屈光图。瞳孔图像因不同近视程度,呈现不同屈光度。通过19只红外灯从不同角度照射,瞳孔图像对19个角度产生的屈光度有所不同,本实施例通过大量实验证实,对于高度近视,距离中心点的距离越远的照射结果值,也就是最外圈的值,越接近瞳孔的真实屈光度;对于中度近视,距离中心点次远的照射结果值,也就是中间层结果,更接近瞳孔图像的真实屈光度;对于低度近视,与瞳孔图像的真实屈光度误差最小的为内圈结果。
实验结果如图9所示,550度视力为中度近视,所以选取第二圈,对应灯号为3,6,22,19,17,9的数值作为参考,除中心小圆圈以外的小圆圈中上面的数值为该算法的平均值,下面的数值为该算法的平均值与传统仪器测量值的误差。中心圆圈中的数值为传统仪器测量出来的度数。本实施例中图11所示结果为几组实验的平均值,为方便统计这里表1所示数据仅为一组实验结果的取值,其中Led为红外灯号,MaxArea为月牙形光斑面积即新月形区域面积,S为瞳孔检测框内切圆面积,DF为MaxArea与S的比值,Lenth为圈层,E为照相机光源中心到光阑刀口边缘的偏心距值,R-Pixel为检测框内切圆半径,实际取值为检测框宽度的二分之一,R为估算出的瞳孔半径,实际取值为R-Pixel结合多次实验获得的误差项估算出的值,D为被筛查眼病患者筛查眼的屈光度,而图9所示结果为同一患者的多组图像的屈光度计算结果在不同灯位的平均值。根据实验结果,对于中度近视误差大概在50度左右。
表1 550度瞳孔屈光度D及特征参数统计
通过上述实验结果证明该结合深度学习的光反射照相验光方法的鲁棒性好。
本发明又通过上百组不同程度近视数据来验证该方法的有效性,经过大量的数据测试,当视力近视度数大于等于150度,误差接近理想。通过多组实验,按低度近视、中度近视和高度近视分成三组统计数据如下所示,这里只列举部分具有代表性的数据。其中屈光度在300以下为低度近视,屈光度在300-600位中度近视,屈光度为600以上为高度近视。
为了让实验结果便于观察,低度近视参数统计表只统计内层圈(Lenth为1)数值,中度近视只统计中间层圈(Lenth为2)数值,高度近视只统计外层圈(Lenth为3)数值。如图10、图11、图12分别对应表2中度近视、表3低度近视和表4高度近视部分数据统计表。实验结果显示,不管什么程度近视,在非曝光式的光照条件下进行拍摄,每个候选区灯位的屈光度D都接近真实的屈光度。同上面550度统计结果一样,图10、图11、图12中对应的数据采用多组实验的平均值来降低不同光照强度的影响,表中对应的数值为随机选取的实验结果。从实验结果可以看出,不同程度的近视误差都能够维持在50度左右。而能将视力误差做到50度在国内已经算是领先水平了。因此,发展此项视力筛查工作具有非常大的市场潜力。
表2 450度瞳孔(中度近视)屈光度D及特征参数统计
表3 250度(低度近视)瞳孔屈光度D及特征参数统计
表4 800度(高度近视)瞳孔屈光度D及特征参数统计
综上所述,实现视力检测的简化步骤为:通过多灯光反射照相机(Photorefraction Ocular Screening Device)采集图像;将采集好的图像进行预处理,然后采用利用Faster R-CNN实现瞳孔图像检测,并将瞳孔图像切割下来,切成的图像为矩形;对矩形的瞳孔图像进行阈值分割得到二值化图像;对二值化后的图像实现特征参数提取;根据瞳孔的特征参数计算瞳孔屈光度,计算每个灯位屈光度的平均值;将上一步得到的平均值画在一张屈光图中。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。