叶桦杉,李 翔
(文山学院 人工智能学院,云南 文山 663099)
美国医学会曾对200多例婴儿猝死综合症病例进行过研究,结果发现,大约有30%的婴儿因睡沙发床堵住口或鼻造成窒息[1]。睡姿不当是婴儿在熟睡中窒息的一大诱因,不具备自主翻身能力的婴儿极易因为在侧卧过程中头部向某一侧的偏转程度过大,致使卧具上柔软的被褥或枕头堵住口鼻而存在窒息的风险。而婴儿头部的偏转程度又直接反映在正俯视图像中近耳侧眼角与鼻骨凹点处距离的大小关系上。因此,可以采用在图像上检测婴儿近耳侧眼角与鼻骨凹点处的距离同预设值的进行比较的方法,实现对婴儿因睡眠姿态不当而产生窒息风险的预判。
本方法首先进行图像预处理和耳部图像提取。随后将耳部图像按比例分割后进行部位判断与耳部特征点查找。最后借助欧几里得距离计算公式进行近耳侧眼角坐标推算、鼻骨凹点查找和近耳侧眼角与鼻骨凹点距离计算,通过实测值与预设值的比对,对婴儿当前睡眠姿态有无窒息风险进行判断。方法单次实现流程图如图1所示。
图 1 单次实现流程图
由于本方法主要应用于夜间,获取的图像整体偏暗,对比度较低,且图像尺寸不尽相同,因此首先对图像进行预处理。预处理阶段输出的图像将作为后续运算操作的输入图像。
首先对图像进行尺寸归一化处理,使捕获的图像统一变为X×Y尺寸的图像,这有利于后续进行图像分割及各项坐标值运算的正常进行。接着将尺寸归一化后的图像灰度化,并通过直方图均衡化的方式,提高图像对比度,处理结果如图2所示。
图 2 直方图均衡化处理
最后使用Sobel算子[2]对图像中被检测对象主体的边缘进行提取并去除部分无关区域,提取效果如图3所示。
图 3 二值化边缘提取
图像预处理阶段的输出图像是一幅尺寸为X×Y、由像素值为0或1的像素点构成的二值化边缘提取图像。P(i,j)为图像矩阵中第i行第j列的的像素值。
对于同一个被检测对象,在二值化边缘提取图像中各部位的像素值和基本不变,且耳部只位于图像的上半部分。根据此特点提出一种基于像素值匹配的耳部提取方法。
在二值化边缘提取图像上,令一尺寸为x×y、特征点为(M,N)的矩形选框从P(1, 1)处开始以特定步长d对图像上半部分进行遍历,同时计算选区内的像素值和在误差D允许的范围内,当S(p)达到某一预设值S(p0)时,即|S(p)-S(p0)|≤D,便可认为耳部存在于此选区之中,提取效果如图4所示。
图 4 尺寸为x×y的耳部图像选区
为快速确定耳部特征点、减少运算资源浪费、提升运算结果的精准度,故将2.2小节所得耳部图像进行横向四等分、纵向六等分处理。结果如图5所示。
图 5 左耳与右耳的判别依据
从耳部图像比例分割的结果来看,耳朵上部、下部特征点在耳部提取图像中所处的位置相对固定,据此可在特定区域内通过提取元数组求和的方式来确定耳部特征点。由于不同部位特征点在耳部提取图像中的相对位置不同,因此必须先借助获取上步运算过程中赋予图像的特征值来选择恰当的运算方式。
3.2.1 左侧
设左耳上部、下部特征点坐标分别为:(xl1,yl1)和(xl2,yl2)、对应选框特征点坐标为:(Ml,Nl)。则此两点在2.2小节所得图像中的坐标值具有如下特点:
对于左耳上部特征点,采用在上述约束条件确定的区域内,从下向上逐行取出元数组进行求和的方式进行查找。当发现某行所在的元数组值之和不为零时,读取该行行号作为左耳上部特征点纵坐标yl1,并读取该行元数组中最左端的非零元素的列号作为左耳上部特征点横坐标xl1。综上可得左耳上部特征点在2.1节所得二值图像中的坐标为:(Ml+xl1-1,Nl+yl1-1)。
对于左耳下部特征点,则从左到右逐列取出元数组进行求和,当发现某列所在的元数组值之和不为零时,读取该列列号作为左耳下部特征点横坐标xl2,并在该列元数组中读取最下端非零元素的行号作为耳朵下部特征点纵坐标yl2。可得左耳下部特征点在二值图像中的坐标为:(Ml+xl2-1,Nl+yl2-1)
3.2.2 右侧
设右耳上部、下部特征点坐标分别为:(xr1,yr1)和(xr2,yr2)、对应选框特征点坐标为:(Mr,Nr)。则此两点在所得图像中的坐标值具有如下特点:
对于右耳上部特征点,采用在上述约束条件确定的区域内,从下向上逐行取出元数组进行求和的方式进行查找。当发现某行所在的元数组值之和不为零时,读取该行行号作耳朵上部特征点纵坐标yr1,并读取该行元数组中最右侧非零元素的列号作为耳朵上部特征点横坐标xr1。综上可得右耳上部特征点在2.1节所得二值图像中的坐标为:(Mr+xr1-1,Nr+yr1-1)。
对于右耳下部特征点,则从右到左逐列取出元数组进行求和,当发现某列所在的元数组值之和不为零时,读取该列列号作为右下部特征点横坐标xr2,并读取该列元数最下端非零元素的行号作为右耳下部特征点纵坐标yr2,可得右耳耳朵下部在二值图中的坐标为:(Mr+xr2-1,Nr+yr2-1)。
在二维平面上,任意两点(xm,ym)和(xn,yn)间的距离L可用欧氏距离来度量,即[3]
由几何学公理可知,圆心到圆周上的距离处处相等[4]。若设耳朵上部、下部在二值化边缘提取图像中的坐标为(x1,y1)、(x2,y2),它们到近耳侧眼角坐标的距离分别为R1和R2,并分别以(x1,y1)和(x2,y2)为圆心,R1和R2为半径作圆。在误差允许的范围内,两圆的交点之一恰是眼角坐标。因此,可借助此原理联立方程组,并根据实际情况选取恰当的解,求出近耳侧眼角坐标(xe,ye)。
设左耳上部、下部特征点到左眼近耳侧眼角的距离分别为Rl1和Rl2。则由式(1)可求得左眼近耳侧眼角坐标为(xle,yle),如图6所示。
图 6 面部左侧特征点欧氏距离
设右耳上部、下部特征点到右眼近耳侧眼角的距离分别为Rr1和Rr2。则由式(2)可求得右眼近耳侧眼角坐标为(xre,yre),如图7所示。
图 7 面部右侧特征点欧氏距离
若婴儿在睡觉时,口鼻一侧紧贴卧具,则存在窒息风险。而婴儿口鼻紧贴卧具时,其近耳侧眼角与鼻骨凹点处的距离同正常侧卧时相比较小。可通过计算近耳侧眼角与鼻骨最凹点处的距离与对应预设值相比较,从而判断婴儿睡姿有无窒息风险。
在二值化边缘提取图像中,采用延拓法通过眼角坐标构建包含鼻骨最凹点的选区,并根据图像特征值在此选区中进行鼻骨凹点的查找。
依据 4.1、4.2 计算值得出近耳侧眼角坐标值,在该点处进行横向延伸。当找到其对应边界区中第一个非零值像素点时,将此两点确定的直线纵向拓展30个像素,将两点的运动轨迹及二直线包含的区域作为下步计算区域。
以此区域横向边界的中垂线为界,再次对选区进行分割。以该区域中垂线为下界,以近边缘侧界线为上界,在此范围内逐列求和,当某列元数组求和之值不为零时,读取该列数组中最上端非零值像素点的横纵坐标,加以几何变换,便可得到鼻骨凹点在二值化边缘提取图像中的坐标值,再计算该点与眼角坐标点的欧氏距离得到实测距离L,如图8中a、b所示。
图 8 延拓法提取鼻梁处区域
令实测距离L与预设距离L0相比较,当L<L0时,则说明当前睡姿可能存在窒息风险,可向外界发出警报,反之则说明当前睡姿无窒息风险。
由于不同被检测对象个体间存在差异,因此,相关参数应根据被检测对象的实际情况做出相应调整。使用仿真娃娃在适合的预设参数下对其左侧卧姿态进行检测,以验证本方法的可行性。测试所用预设值如表1所示;左侧实测用图、判据如表2所示;测试过程GUI界面如图9.1、图9.2所示。
表1 仿真测试预设值
表2 测试图及阈值设定
图 9.1 左侧实测·状态正常
图 9.2 左侧实测·窒息风险
从仿真实验结果来看,使用单张图像测试时,实测结果与期望结果一致。能够对婴儿睡姿是否存在窒息风险进行判断。但本方法目前只能对单幅图像进行检测,图片导入需要通过手动操作实现。可行性仍然停留在理论层面上。
在日后的提升与优化中,将考虑把本方法与从视频流分帧提取得到时序图像组的方法相结合,实现通过视频流直接获取图像并检测的功能,对被检测对象进行连续监测,提高本方法的实用性。