基于瞳孔定位的眼底相机照明控制技术

2021-01-09 09:53:38赵宝彬刘雨晴郝如龙葛爱明
照明工程学报 2020年6期
关键词:二值瞳孔像素

赵宝彬,刘雨晴,郝如龙,葛爱明

(复旦大学光源与照明工程系,上海 200433)

引言

眼底上分布着人体唯一可见的毛细血管,通过检测这些血管分布以及形态变换,对白内障、青光眼、老年黄斑变性、高血压和糖尿病视网膜病变等疾病的预防和早期治疗具有重要作用[1-3]。眼底相机是目前临床上常用的眼底检测方法[4,5]。在对眼底成像的过程中,为满足严格的光照与成像条件,需要将图像采集装置的照明光束中心对准瞳孔中心,使照明光束穿过瞳孔准确投射到眼底[6]。但是在实际操作中,被检测者体型的差异以及眼睛位置与大小的不同造成照明光束中心不能准确对准瞳孔中心。

为保证图像采集装置的照明光束中心对准患者瞳孔中心,一般采取手动对准和自主式对准两种方式。手动对准需要被检测者高度配合,保持相对稳定的拍照姿势,并且需要专业医护人员具有很高的熟练度;自主式对准需要眼底相机实时计算眼部图像的瞳孔中心位置,当患者眼球运动到成像视场中心时,眼底相机快速触发照明系统完成曝光并抓拍眼底图像。自主式对准相比手动对准具有调节速度快和操作简单等优点,适用于眼底筛查设备的智能化改进。

眼底相机精确检测患者瞳孔并完成照明的过程中,实时获取瞳孔中心点坐标是眼底相机照明控制的关键技术。然而,眼球运动、眨眼、角膜反射光斑以及睫毛阴影等因素的干扰,增加了瞳孔中心坐标检测的难度。目前对于瞳孔中心点检测算法,国内外已有很多的相关研究。王晶等[7]提出了基于圆近似模型的瞳孔中心点的自动定位算法,这种方法在变换光照下具有很好的鲁棒性。张宏薇等[8]提出了基于Hough变换的瞳孔识别方法。Nam等[9]提出了一种基于动态阈值法与边缘检测法的瞳孔定位算法。但是这三种算法复杂度高且运行效率低,因此不适合移植于基于嵌入式系统的智能眼底相机中。Leo等[10]提出了基于无监督方法的近红外脸部图像的瞳孔精确定位算法。Abbasi等[11]提出了基于粒子滤波的瞳孔检测算法。赵彦涛等[12]提出了选择性阈值取反操作后进行径向对称变换的瞳孔中心定位。这三种方法主要针对对比度高的红外图像,不适合对比度差的彩色图像。贾彩琴等[13]提出了基于异方差的瞳孔中心定位方法,这种方法首先基于AdaBoost方法检测人脸区域,之后进行边缘检测与圆近似,通过异方差确定瞳孔中心点,这种方法定位精度高,但是计算冗余,计算时间长。

鉴于目前瞳孔定位算法不能满足眼底相机中的照明控制需求,本文研究开发适合基于ZYNQ处理器的眼底相机瞳孔定位算法。

1 方法原理

1.1 基于YCbCr色彩空间的阈值分割

眼部图像的特点是前景瞳孔呈现黑色且亮度低,背景区域的巩膜和皮肤分别呈现白色和黄色且亮度高。基于此特征,本文将RGB格式的眼部图像转换至YCbCr色彩空间,其中Y分量代表亮度、Cb代表蓝色分量、Cr代表红色分量。肤色在Cb和Cr分量具有很好的聚类性,因此可以选取合适阈值过滤掉背景皮肤区域。瞳孔与巩膜之间亮度差异大,因此在Y分量上选取合适的阈值滤除巩膜区域。从而将瞳孔区域从眼部分割出来。根据式(1)~式(3)将图像从RGB格式转换至YCbCr色彩空间[14],结果如图1(b)所示。根据式(4)对瞳孔区域进行分割,结果如图1(c)所示。表1是根据实验确定的最佳阈值。

Y=0.299×R+0.587×G+0.114×B+0

(1)

Cb=-0.169×R-0.331×G+0.500×B+128

(2)

Cr=0.500×R-0.419×G-0.081×B+128

(3)

(4)

表1 瞳孔分割阈值Table 1 Pupil detection thresholds.

图1 基于YCbCr色彩空间的阈值分割Fig.1 Threshold segmentation based on YCbCr color space

1.2 形态学滤波去噪

经过阈值分割,图像存在许多冲击噪声,会对下一步的处理的运算速度与准确性带来影响。本文使用形态学滤波去除这些孤立的噪声点[15]。二值化形态学滤波使用固定的几何结构对图像进行扫描处理,主要有两种基本的操作:腐蚀与膨胀。将这两种操作结合组成开运算与闭运算,先腐蚀后膨胀为开运算,先膨胀后腐蚀为闭运算[16,17]。开运算可以有效去除噪点,闭运算可以填补空洞。本文为了去除孤立的冲击噪声点,使用开运算去除小的像素块。经过本文实验,选择3×3的窗口,先进行两次腐蚀再进行两次膨胀运算。既可以保持目标区域大小不变,又可以有效去除噪声。

1.3 水平积分阈值裁剪法

经过形态学去噪后得到的二值图像由于眼睫毛背景干扰而导致瞳孔区域上边沿过长,进而导致瞳孔中心定位错误。考虑到眼睫毛区域在水平投影方向上的积分值小于瞳孔虹膜区域的积分值,因此本文先将二值图像在水平方向上积分然后选取合适的阈值去除眼睫毛背景干扰。设I(x,y)为M×N大小的二值图像函数,I(x)为水平积分。根据式(5)对原始二值图像在水平方向上做积分运算。选择合适的阈值q,根据式(6)和式(7)可求出Xlow和Xhigh。最后根据式(11)对输入图像I(x,y)进行裁剪得到IOUT(x,y)。这里根据实验选取q值为35。图2(a)为原始二值图像,图2(b)为本文水平积分阈值裁剪法处理后的效果图。可以看出水平积分阈值裁剪法可以效去除眼睫毛背景干扰。图2(c)是未包含水平积分阈值裁剪预处理的瞳孔定位效果图,可以看出,绿色定位点不在人工标记的红色圆圈内,定位效果差。图2(d)是使用包含此处理过程的瞳孔定位效果图,其中,本文算法定位的绿色标记点在人工标记的红色圆圈内,可以看出,引入水平积分阈值裁剪法可以有效去除眼睫毛背景干扰,使得定位效果显著提高。

(5)

q=I(xlow)

(6)

q=I(xhigh)

(7)

(8)

图2 水平积分阈值裁剪法计算过程Fig.2 Experiment of clipping based on horizontal integration and threshold

1.4 连通区域标记与瞳孔中心定位

经过上述步骤得到了瞳孔区域的分割图像,但是此时还不能进行坐标计算,因为上述分割得到的区域仍然是像素层次,需要进行连通区域标记找到最大的连通域,再通过计算连通域的最小外接圆求出瞳孔中心坐标。像素间的连通性是确定区域的一个重要概念,本文采用的是一种基于递归方法的二值图像连通域像素标记算法[18,19],目的是把二值图像中互相邻接的目标像素集合提取出来,通过对二值图像的扫描和分析可得到二值图像中的连通域划分和连通域的数目。二值图像分为前景和背景,本文方法假设目标前景为1,背景为0,标记算法只对目标前景像素进行标记。连通区域标记完之后,选取最大的连通域,使用最小包围圆法求出瞳孔中心坐标[20]。图3展示了完整的瞳孔中心坐标计算流程。

图3 瞳孔中心定位过程,步骤包括RGB至YCbCr色彩空间转换、 阈值分割、形态学滤波、水平积分阈值裁剪、 连通区域标记和最小包圆法Fig.3 Pupil center location Steps include RGB to YCbCr conversion, denoising using morphological filter, horizontal intergration Threshold, labeling and Smallest Enclosing Disk

1.5 瞳孔与照明光束中心点的距离计算

求解出瞳孔中心点坐标后,需要确定该点坐标与照明光束中心点坐标的距离。目前使用的距离主要有以下三种:

1)欧式距离,以点x=(x1,x2,…,xn),y=(y1,y2,…,yn)为例,欧式距离可表示为

(9)

2)曼哈顿距离,又称城市街区距离,可表示为

(10)

3)切比雪夫距离为

(11)

考虑到切比雪夫距离求解只涉及到减法、绝对值和大小比较运算,计算速度相对于涉及到平方与根号开方的欧式距离和曼哈顿距离更快。因此本文选择切比雪夫距离作为瞳孔中心与照明光束中心距离的计算依据。

对与眼底图像上的两点x=(x1,x2),y=(y1,y2),切比雪夫距离可表示为

d(x,y)=max(|x1-y1|,|x2-y2|)

(12)

2 算法软硬件部署

2.1 实验装置介绍

本文实验装置核心板如图4(a)所示,上面搭载了ZYNQ-7020处理芯片、512M DDR、串口、千兆以太网和USB等外设。ZYNQ-7020系列处理器主要由PS和 PL两大功能模块构成[21]。其中,PS主要由ARM CPU、存储器接口和I/O 外设组成;PL 则采用FPGA技术实现扩展功能以满足特定的功能需求。两部分以高速片上总线AXI(Advanced eXtensible Interface)互联,保证整个系统的处理带宽。本文方法的计算架构如图4(b)所示,测试图片首先经过绿色框图代表的IP核(YCbCr色彩转换阈值分割IP、腐蚀运算IP和膨胀运算IP)执行瞳孔区域分割,之后通过视频直接内存存取(video direct memory access, VDMA)发送至DDR并由ARM CPU执行软件部分算法(水平积分阈值裁剪、连通域标记和最小包圆法)计算瞳孔。

2.2 PL端算法综合

1)彩色阈值分割的电路逻辑设计。硬件的优势是处理图像的像素数据流,因此将原始图片转换为RGB格式的像素数据流作为IP核的输入。如图5所示,该电路由色彩转换与阈值分割两部分组成。其中色彩转换部分逻辑电路输入的是像素的RGB值,阈值分割部分输出的是二值图像数据流。为了使此算法设计适合硬件加速,本文对色彩转换部分使用定点整数乘法与移位运算代替式(1)~式(3)中的浮点数乘法运算。为了降低硬件资源消耗,本文又对式(1)~式(3)进行了合并重组,得到式(8)~式(10)。

Y=(76(R-G)+29(B-G))>>8+G

(13)

Cb=(144(B-Y))>>8+128

(14)

Cr=(182(R-Y))>>8+128

(15)

图5 色彩空间转换及阈值分割电路逻辑Fig.5 Threshold segmentation based on YCbCr calculator logic

2)形态滤波的电路逻辑设计。形态学的腐蚀与膨胀是根据图6所示的电路图实现的,为了降低延迟提高数据吞吐率,采用了行缓存与窗口缓存。输出为二值图像,二值图像的像素可以分为两类:前景像素与背景像素。通常前景像素用1表示,背景像素用0表示。为降低PL端资源消耗,本文将图像算法的腐蚀与膨胀电路图分别综合为两个IP核,通过软件重复组合调用完成形态学开运算达到去除噪声的目的。

图6 形态学滤波电路逻辑Fig.6 Morphological filter implementation

2.3 PS端算法部署

运行在PS端的算法由ARM CORTEX A9处理器执行。将OpenCV库移植在ZYNQ处理器上,连通区域标记和最小包圆法可以调用OpenCV库完成,水平阈值积分裁剪算法通过C++语言编写实现。

3 实验结果与分析

经过Vivado开发工具综合编译,图7给出了ZYNQ FPGA资源消耗率,其中查找表(Look Up Table, LUT)和块随机存储器(Block Random Access Memory, BRAM)等存储资源使用率不到全部硬件资源的40%,数字信号处理器(Digital Signal Processor, DSP)计算资源的使用率为5%。因此图像分割和形态学滤波IP消耗的资源在ZYNQ所能提供资源的范围内,满足设计要求。

图7 FPGA硬件资源资源使用率Fig.7 FPGA hardware resource usage

为评估算法的准确性,本文选取了不同被测人员的50张眼部图像进行测试。这50张图片包含了瞳孔部分被遮挡(眼睑遮挡或眼球转动到眼角处),肤色变换,眼睫毛背景干扰,光斑复杂和离焦等多种情况,因此,可以保证算法具有较高的鲁棒性。为定性展示本文定位效果,本文随机选取四张测试图像:图8(a)肤色较白;图8(b)眼球转动至眼角处且存在睫毛背景干扰;图8(c)图片模糊且肤色较暗;图8(d)肤色较亮并存在睫毛背景干扰。考虑到瞳孔面积在50~100 pixel范围内,且人工标定瞳孔中心存在标定误差,因此,当检测到的瞳孔中心位置与标定的瞳孔中心位置的距离小于5个pixel的时候,认为正确检测到瞳孔中心。图8所示的四张测试结果中,红色圆圈是人工标记的瞳孔中心位置,半径为5个pixel。绿色标记点是本文算法计算的瞳孔中心,黄色十字符号是视场中心。眼底相机的视场中心和照明光束中心重合,因此黄色十字符号同时表示照明光束中心。可以看出计算的瞳孔中心绿色标记点准确落在了红色圆圈内,因此认为检测结果正确。当本文方法检测到绿色标记点与黄色十字点的切比雪夫距离小于给定阈值时,说明照明光束中心对准患者瞳孔中心,此时触发照明光源开关,完成眼底曝光照明。

图8 测试不同图片的定位效果Fig.8 Pupil center location results in different conditions

为定量说明本文算法的定位效果优势,将本文算法与圆近似(Circle approximation)[7]和改进的Hough圆检测(Improved Hough circle)[8]方法做对比。表2给出了本文瞳孔定位算法的测试结果,可见:(1)本文算法的主要优势在于检测速度,本文采用了软硬件协同设计思想,将色彩转换阈值分割以及形态学滤波通过硬件加速,使得检测时间显著缩短;(2)检测的准确度略高于其他两种算法,这是因为本文在瞳孔阈值分割部分充分考虑到瞳孔区域前景与背景皮肤和虹膜在YCcCr色彩空间下具有很高的差异性,并且加入了水平积分阈值裁剪法使得睫毛的背景干扰影响降低,提高了检测准确度。因此,本文方法在保证检测精度与鲁棒性高的同时,检测速度有了显著降低,满足眼底相机中照明控制对瞳孔定位精度与时间的要求。

表2 3种算法的平均计算时间和检测精度比较Table 2 Comparison with previous works

4 结论

本文为辅助眼底相机自动为患者拍摄眼底图像,提出了一种用于眼底照明控制的瞳孔中心点定位方法。该方法通过基于YCbCr色彩空间的阈值分割法进行瞳孔区域分割,形态学滤波去除噪声。通过水平积分阈值裁剪法降低眼睫毛背景干扰,最后使用连通域标记与最小包圆法计算瞳孔中心坐标。为满足瞳孔定位实时性的要求,基于ZYNQ处理器完成了算法加速,将瞳孔区域分割算法部署在PL端,经实验验证,本文方法在硬件资源消耗40%的情况下,定位准确度在90%以上,检测速度每帧69 ms,基本满足眼底相机对基于瞳孔定位的照明控制技术的鲁棒性、精确性和实时性的要求,有利于眼底相机的智能化改进。

猜你喜欢
二值瞳孔像素
赵运哲作品
艺术家(2023年8期)2023-11-02 02:05:28
“天眼”的“瞳孔保健师”
军事文摘(2023年20期)2023-10-31 08:42:40
像素前线之“幻影”2000
混沌伪随机二值序列的性能分析方法研究综述
支持CNN与LSTM的二值权重神经网络芯片
高技术通讯(2021年2期)2021-04-13 01:09:46
“像素”仙人掌
基于二值形态学算子的轨道图像分割新算法
测控技术(2018年10期)2018-11-25 09:35:28
瞳孔里的太阳
青年歌声(2018年2期)2018-10-20 02:02:50
瞳孔
基于曲率局部二值模式的深度图像手势特征提取