基于ARM9的嵌入式手持瞳孔测量仪设计

田海军++杨婷+赵杨辉



摘 要: 研究一种基于ARM9架构的嵌入式Linux手持瞳孔测量仪。采用S3C2440A芯片进行程序算法计算,经由摄像头对动态视频的帧图像采集,由QT/Embedded图形界面系统建立人机交互。程序算法选用Canny算子对眼部灰度图像进行边缘检测,利用Hough变换实现瞳孔检测。实验表明,其算法精度高、噪声小、针对瞳孔测量达到了预期的实验效果。
关键词: 手持瞳孔测量仪; 帧图像采集; 瞳孔检测; Hough变换
中图分类号: TN98?34; TP391 文献标识码: A 文章编号: 1004?373X(2017)12?0079?04
Abstract: A kind of embedded Linux hand?held pupilometer based on ARM9 architecture is discussed in this paper. The programmed algorithm is calculated by S3C2440A chip, with which frame image of dynamic video is collected through camera and human?computer interaction is established at Qt/Embedded graphical user interface (GUI) system. Canny operator is selected for the programmed algorithm to detect the edge of eye gray image. The pupil detection is implemented by means of Hough transform. The experiment result indicates that the algorithm achieves the expected effect in pupil detection with high precision and low noise.
Keywords: hand?held pupilometer; frame image acquisition; pupil detection; Hough transform
瞳孔测量[1]在工业、医疗、军事等方面具有重要意义。尤其在临床医学,一些复杂的体力劳动正逐步被嵌入式医疗仪器所取代,使得医院在针对病人治疗时,可以减轻传统治疗对医患者双方的体力消耗,提高了病情数据分析的准确度和人们就诊的效率。手持瞳孔测量仪[2]体积小、安装调整方便、测量精确度高,使其在诊断某些引起瞳孔收缩变化的症状时,为后续治疗提供准确的依据,因此采用嵌入式系统的手持瞳孔测量仪[3]在医疗器械行业拥有广阔的应用前景。
1 系统总体设计
本文以嵌入式系统[4]设计作为中心思路,阐述了硬、软件平台的搭建以及程序算法的原理。硬件平台以Samsung公司的ARM芯片S3C2440A为核心,形成了包括摄像头、存储单元以及人机交互界面等在内的图像分析装置电路设计方案。软件平台则采用Linux 2.6.31系统内核作为操作系统,图形界面系统采用QT/Embedded,通过建立交叉开发环境,编写瞳孔检测程序,利用交叉编译工具链实现程序到嵌入式设备的移植。程序算法采用基于灰度图像的Canny算子对眼部图像的边缘化处理,经由动态阈值算法生成二值化图像,再通过Hough[5]变换实现瞳孔的定位与检测[6?7]。系统总体设计流程图如图1所示。
2 设计平台搭建
2.1 硬件平台搭建
瞳孔测量的硬件部分由处理器、外围扩展、人机交互接口以及存储部分组成。本文采用基于ARM920T的S3C2440A[8]芯片,由Samsung公司专门为手持终端设计,具有内存管理单元(MMU),选取0.18 mm工艺以及AMBA新型总线结构,主频高达400 MHz,同时支持Thumb 的16位压缩指令集,从而高效获得32位的系统性能。
为了满足Linux操作系统与Qt图像界面能良好运行,系统采用具有容量大、价格低、掉电不丢失信息等特点的NAND FLASH存储模块[9],再通过SDRAM存储芯片會大大提高数据的存取速度且能最大限度地发挥系统性能。本系统中,NAND FLASH采用Samsung公司的K9F1208芯片。该芯片存储容量为8×64 Mb、TSOP48封装、工作电压为3.3 V、数据位宽为16位、内部拥有528 B×32页×4 096块,每页大小为528 B,每次可同时擦除或读/写4页或块的内容。摄像头采集的视频图像经由S3C2440A的数据总线DATA0?7传输到读/写信号驱动K9F1208芯片。
SDRAM选用32 MB的K4S561632C存储芯片作为缓存以辅助32位处理器提高数据处理能力。为了提高针对相对复杂算法的实时性操作,采用两片SDRAM存储芯片并联的方式实现位扩展使其数据总线宽度达到32 b,总容量为64 MB。
人机交互界面[10]是人们在使用手持式设备最直接有效的途径之一,通过LCD液晶显示屏可以实时观察测量结果,并对其进行反馈。系统选取夏普公司的一款4.3英寸带触摸屏的TFT型LCD,型号为LQ043T3DOE。S3C2440A中的LCD控制器与液晶屏之间采用夏普公司的LZ9FC22匹配数据格式与显示时序。为了提高控制器的负载能力,需要对控制信号、数据的电平进行升压,这里选取74LVTH162245电平转换芯片连接控制器与触摸屏的引脚。人机交互显示结构如图2所示,其中XP,XM,YP,YM是触摸屏对按压的响应信号,通过控制器转换为x,y坐标送回S3C2440A芯片中进行处理。
2.2 软件平台搭建
作为瞳孔测量的软件部分,利用嵌入式操作系统支持软件应用。常用的操作系统有Linux,μC/OS?Ⅱ,WIN CE等。本文选取嵌入式Linux操作系统,它的最大优点在于其源代码公开、低成本的软件开发与维护、在世界范围内拥有大量的开发人员、发展更新迅速且能支持市面上大部分的硬件,十分适合用于嵌入式系统。为了方便操作人员实时查看瞳孔测量情况,手持测量设备需要提供人机交互界面GUI,基于嵌入式Linux的GUI目前较为流行的分别为MiniGUI与Qt/Embedded。在权衡良好界面、占用空间与系统资源、移植性、可靠性等方面后,最終选择Qt/Embedded作为图形界面。程序设计开发采用目前较为流行的OpenCV,它由一系列C函数构成,并提供Matlab,Python等语言接口,可以运行在Linux,Windows等主流操作系统上,在计算机视觉和图像处理方面性能高且占用空间小。综上所述,系统设计平台如图3所示。
3 程序算法设计
3.1 边缘检测
对于采集的瞳孔图像信息首先要对其灰度化,得到的二维图像亮度变化最剧烈的地方称为边缘,在瞳孔测量中,边缘指的是目标瞳孔与背景之间的区域,这是实现图像分析的第一步。使用梯度边缘检测算法得到的图像边缘是在梯度方向上各个方向差值最大的像素的集合,实现这一阶段需要滤波、增强、检测、定位四个步骤,并由边缘检测器生成边缘集。边缘检测器的种类有很多,这里选取Canny算子,相对与其他检测器,具有更好的信噪比、定位性能以及对单一边缘的单一响应。其理论思想是首先对灰度图像进行高斯平滑滤波,通过合适的标准差s和邻域对每个像素点进行加权平均得到平滑图像以抑制噪声,其信噪比SNR可表示为:
接着,如果某一像素点的边缘强度小于相邻两个像素点沿梯度方向的边缘强度,那么这个点就是非极大值点。对于这类像素点,将该处梯度幅值置0,认为是非边缘点。最后,经过上述几步处理后,图像仍存在大量细纹里及噪声导致的假边缘,这时利用动态阈值算法,设定两个阈值t1和t2(t1<t2),高阈值会导致部分边缘信息丢失而保留下真边缘的像素点,低阈值会使图像存在过多的伪边缘,但可以确保真边缘端点之间的连线,采用高低阈值的双阈值算法会最大程度上保证图像边缘的完整性和清晰性,并生成眼部边缘的二值化图像。边缘检测过程如图4所示。
3.2 瞳孔检测
定位图像中的瞳孔目标是瞳孔精密测量中最重要的一环。本文基于霍夫变换来对瞳孔进行精确定位,其基本原理是利用参数空间来描述图像空间,即利用满足绝大多数边界点的某一参数形式来对图像的边界进行表达。对全局参数的计算则基于对局部的度量,因此对于待测瞳孔边界因噪声影响而引发的边缘中断有很好的容错及鲁棒性。式(4)以直线为例,设一组,并考虑避免直线平行于轴时斜率无限大的情况,这里采用极坐标来表示直线
式中:表示直线与x轴的夹角;是对应直角坐标系原点与直线的距离。在以为变量,为系数的情况下,为平面上以为固定参数的惟一直线,霍夫变换就是在以为系数,为变量的情况下,将先前提到的惟一直线对应在系数变量翻转情况下的一个点,而这个点就是以惟一直线上各个点作为这里的系数构成的一组正弦曲线的交点。反之,为平面上以为固定参数的惟一正弦曲线,它对应系数翻转情况下的各条直线的确定交点。
从上面的分析可以知道图像上每一条边缘曲线的所有点都对应着以为变量的一组正弦曲线,由于图像边缘的不规则性导致的为系数的不惟一性,即边缘曲线对应的交点并不落在同一位置上,这里需要通过上述的霍夫变换将其拟合为最适合的直线。首先将为变量的空间细化为多个拥有独自计数器的方格,然后利用边缘曲线每一点对应的正弦曲线的交点落在方格的数量来确定选取的坐标,也就是选取交点数最多的方格坐标作为拟合直线的系数,其他则丢弃。将式(4)进行推广得到:
式中:表示瞳孔的圆心;代表瞳孔的半径。此时的系数作为霍夫变换的变量会形成一个三维空间,将立体空间划分为若干个拥有独立计数器的立方体,计算以为变量的圆锥面之间的交点集,累加的焦点最多的立方体的坐标就是图像中瞳孔的圆心和半径。空间原理图如图5所示。
可见,由于三个变量的不确定性导致的计算量庞大影响了对瞳孔测量的实时性,所以根据实际瞳孔大小的变换引入关于的上下限与缩放因子缩小图片,从而可以大大减轻测量的压力,解决了经典霍夫变换计算量大的缺点。而相比于其他检测算法,霍夫圆检测具有更高的检测精度与抗干扰性,对于瞳孔实时的微小变化具有极高的捕捉性。
利用手持设备测量瞳孔是为了避免摄像头与瞳孔的间距对采集图像的大小影响,通常采用卡槽将摄像头与人眼距离固定,这样就确保了实际图像中的一个像素对应实际测量多少毫米。通过定位测试,图像的像素当量约为0.075 mm/pixel。实验结果如图6所示,这里的瞳孔圆心坐标为(324,236),半径为52,即3.9 mm,正常人的瞳孔半径在0.75~4 mm之间,实验表明此检验算法在实际应用中能达到像素级别的精确度。
4 结 论
本文介绍了瞳孔测量在实际临床中的应用,基于ARM9的嵌入式Linux手持设备以它体积小、检测精度高并内嵌经典霍夫变换圆检测,在Canny边缘检测的基础上进行的瞳孔测量视觉算法,为观察病患者身体状况提供了有效的依据。在具体对瞳孔进行测量时,首先利用canny算子获取眼部边缘图像,然后利用改进的经典霍夫变换法获得瞳孔半径和圆心坐标,最后将结果与眼部图像进行拟合,通过QT/Embedded显示在人机交互界面。实验表明,该方法对瞳孔测量具有实时性、可靠性及精确性。
参考文献
[1] SHINODA Takayuki, KATO M. A pupil diameter measurement system for accident prevention [C]// Proceedings of IEEE 2006 International Conference on System, Man and Cybernetics. Taipei, China: IEEE, 2006, 2: 1699?1703.

[2] ANDREA K W, HONTS C R. Effectiveness of pupil diameter in a probable comparison question test for deception [J]. Legal and criminological psychology, 2009, 14(10): 279?292.
[3] BORASTON Z, BLAKEMORE S J. The application of eye?tracking technology in the study of autism [J]. Journal of physiology, 2013, 581(3): 893?898.
[4] VIDAL M, TURNER J, BULLING A, et al. Wearable eye tracking for mental health monitoring [J]. Computer communications, 2012, 35(11): 1306?1311.
[5] 蔡晋辉,蒋庆,周则魁,等.圆检测HOUGH变换的改进算法研究[J].模拟识别与人工智能,2004,17(1):72?76.
[6] 郭琛,高小榕.基于眼电和稳态视觉诱发电分析的目光跟踪方法[J].中国生物医学工程学报,2012,31(3):382?387.
[7] DUCHOWSKI A T. A breadth?first survey of eye?tracking applications [J]. Research methods, instruments, & computers, 2002, 34(4): 455?470.
[8] 孔德勇,杨斌.基于S3C2440A嵌入式无线监控系统的设计[J].微计算机信息,2009,25(5):114?116.
[9] 钱华明,刘英明,张根旅.基于S3C2410嵌入式无线视频监控系统的设计[J].计算机测量与控制,2009,17(6):1132?1135.
[10] 郑凯华,章旭東,俞立,等.基于S3C2440的图像采集与显示系统[J].计算机系统应用,2011,20(8):225?228.