基于增强现实技术人脸穴位点识别系统设计与实现
2022-08-31郑成龙丰艳
郑成龙 丰艳
摘要:目前人脸穴位点的取穴方法仅按照人脸静态图中的穴位排布来确定,实时性较差。为了帮助穴位爱好者以及医务人员更直观地观察穴位点的分布情况,设计了一种基于增强现实技术实时获取人脸穴位点排布的方法。该方法首先利用OpenFace框架获取人脸特征点的位置,然后根据人脸特征点的坐标计算人脸穴位的位置。利用Unity 3D平台,将有关穴位信息标注在获取到的人脸穴位点位置上,最终通过移动端拍摄人脸实现人脸穴位实时显示。
关键词: 人脸穴位点; 增强现实; Unity3D; 人脸特征点检测; OpenFace
中图分类号:R245.9 文献标识码:A
文章编号:1009-3044(2022)17-0089-02
随着生活水平的不断提高,健康成为目前备受关注的头等大事。国家高度重视发展中医文化,甚至把中医上升到关乎民族复兴、国家盛衰的空前高度。在这样的大背景下,越来越多的人开始尝试在家用拔罐[1]、艾灸[2]等传统的中医方式进行养生保健。
这些经典的中医养生方式,离不开经络与穴位的定位,但是对于非医学专业的普通人来说,查找穴位成为最需解决的问题。
對此,本文研究并开发了一款基于增强现实(Augemented Reality,AR)技术[3]的人脸穴位自动定位系统,可以很好地实现基于手机端的面部穴位实时定位。
虽然近几年出现了一些基于移动端的虚实叠加应用系统,但大多都是离线系统。而本文研发的实时系统,具有更好的交互性和用户体验。
1 研究现状
利用系统软件辅助查询人脸穴位,目前国内有一定研究。其中杨旭明团队研究并开发了一款基于Web针刺面部穴位定位虚拟仿真系统软件[4],在静态人脸图片上标记穴位。该系统在一定程度上降低了穴位查询的难度,但仍具有局限性,很难跟随人脸的移动动态地显示穴位。
目前获取图像和视频最常见最便捷的途径是手机拍摄。因此,开发一款基于移动端的人脸穴位实时定位系统,更能符合实际的应用需求。
2 相关技术概述
2.1 AR技术
AR技术是在虚拟现实(Virtual Reality,VR)[5]技术基础之上发展而来。不同于VR系统完全虚拟的世界,AR技术是将计算机生成的三维虚拟物体、场景或提示信息实时叠加到真实场景图像中,从而实现对现实场景的补充和增强。
2.2 Unity3D引擎
Unity3D[6]是一款游戏开发引擎,由丹麦Unity Technologies公司在2004年创建。用户可以通过该引擎创造地形、光照、碰撞等仿真内容,以及实现实时人机交互。Unity3D引擎具有跨平台性,支持Windows、Android、iOS等多个平台,做到一次开发、多平台部署,能够极大缩短软件的开发周期。Unity3D 4.6版本之后,图形用户界面系统(UGUI)被集成到了Unity3D的编辑器中,UGUI提供了按钮(Button)、输入框(InputField)等组件,可以快速、简单、灵活地创建UI界面。
经过多年的发展,Unity3D因操作容易、性能稳定等特点,在游戏、虚拟现实、增强现实、医学、建筑等领域得到了广泛的应用。
2.3 人脸穴位计算
利用OpenFace[7]框架对人脸进行68个关键点检测,定位后的人脸如图1所示。
穴位在人脸的分布位置与68个特征点的关系分为三种:第一种:穴位落在68个特征点上;第二种:穴位没有落在68个特征点上,但是穴位与两个以上的特征点有关系;第三种:穴位没有落在68个特征点上,但穴位仅仅与一个特征点有关系。
首先用阿拉伯数字给人脸68个特征点标号,如图2所示。
满足第一种情况的穴位,瞳子髎穴位于眼角位置,与特征点36号和45号对应。上廉泉穴位于下颌正下方略微凹陷处,与特征点8号位置对应。前大迎穴靠近下颌尖处,与特征点10号和6号对应。攒竹穴位于眉头处,与特征点21号和22号对应。丝空竹穴位于眉梢,与特征点17号和26号对应。山根穴位于鼻梁根部,与特征点27号对应。鱼腰穴位于眉毛正中,与特征点19号和24号对应。地仓穴位于嘴角外侧,与特征点48号和54号对应。禾髎穴位于上唇中央高起处外侧,与特征点53号和49号对应。颊车穴位于下颌角处,与特征点4号和12号对应。
对于第二种情况,需根据两个特征点的位置来计算。满足第二种情况的穴位,人中穴位于鼻唇沟上三分之一处,可由特征点33号和51号计算得出。如公式(1)所示,Y人中、X人中表示人中穴在人脸图像上的位置。Y33和Y51分别表示特征点33号和51号到图像上边框的距离,X33和X51分别表示特征点33号和51号到图像左边框的距离。
[Y人中=Y33-Y33-Y51/3X人中=X33-X33-X51/3] (1)
印堂穴位于两个眉头连线的中点,可由特征点21号和22号计算得出。计算如公式(2)所示,Y印堂、X印堂表示印堂穴在人脸图像上的位置。Y21和Y22分别表示特征点21号和22号到图像上边框的距离,X21和X22分别表示特征点21号和22号到图像左边框的距离。
[Y印堂=Y21+Y22-Y21/2X印堂=X33+X22-X21/2] (2)
球后穴在眼眶下缘,外眼侧起约四分之一处,用X球后和Y球后表示球后穴的位置。用X39和X36表示39号、36号特征点距离图像左边框的距离。Y41表示41号特征点距离图像上边框的距离。球后穴的位置由公式(3)计算得出。
[X球后=X39-X36/4Y球后≈Y41] (3)
第三种情况比较复杂,需要利用骨度分寸法[8]和Canny[9]边缘检测来辅助定位。骨度分寸法是古代的一种测量方法,以骨节为标志测量身体各部分长度,如眉心到发际的距离为3寸,两前额角之间为9寸。
Canny算法在1986年被John F .Canny提出,是应用比较广的边缘检测算法。
用X发际点表示发际点到图像左边框的距离,用Y发际点表示发际点到图像上边框的距离。X发际点比较容易得到,人脸正视镜头,X发际点=X眉心=X印堂。Y发际点数值的确定同样需要人脸正视镜头,利用Canny检测人脸图片边缘,如图3所示。在Canny检测所得到的边缘点坐标中查找X=X发际点且Y值小于Y眉心的点,在满足条件的点中,取其Y值最大的点,即为发际点(X发际点,Y发际点)。
用C表示发际线到眉心的相对大小。用M表示两眼角45号特征点与36号特征点之间的距离。X45和X36分别表示特征点45号和36号到图像左边框的距离。如公式(4)所示。此时的C和M为初始值,需要在穴位点检测之前初始化。
[C=Y发际-Y眉心M=X45-X36] (4)
当人脸进行前后移动时,用Mnew表示移动后两眼角之间的距离,用X45(new)和X36(new)表示移动后两眼角45号特征点和36号特征点距离图片左边框的位置,用R表示人脸缩放的比值。由公式(5)计算Mnew和R值。
[Mnew=X45(new)-X36(new)R=Mnew/M] (5)
阳白穴的位置在鱼腰穴的上方两寸处,用X阳白和Y阳白表示, X鱼腰(左)和Y鱼腰(左)表示左眼鱼腰穴的位置。由公式(6)计算得。
[X阳白=R*C*2/3+X鱼腰(左)Y阳白=Y鱼腰(左)-R*C*2/3] (6)
四白穴位于瞳孔正中央下约2寸处,用X四白和Y四白表示。X40表示40号特征点距离图像左边框的距离。Y40表示40号特征点距离图像上边框的距离。由公式(7)计算得。
[X四白≈X40Y四白≈R*C*2/3+Y40] (7)
至此,我们得到了所有穴位点的位置。
3系统的设计与实现
3.1 系统功能设计
系统具有四个功能:
1)虚拟穴位在人脸全部显示。使用户观察各穴位之间的位置关系更加清晰。
2)依据用户输入的穴位名称显示单个穴位。避免其他穴位视觉上的干扰。
3)依据用户輸入的病症名称,系统自动查找并显示相应穴位。查找穴位的目的是治疗疾病或养生保健,但面部穴位较多,对于非医学专业的普通百姓而言,很难熟记各病症与穴位的关系,因此,通过疾病名称查找穴位,能够更好地满足用户需求。
4)提供指定穴位相关知识,例如显示穴位对应的治疗病症,以及对应的养生保健方法。
3.2 系统功能实现
该系统利用红点和穴位名称标注穴位的具体位置。红点和穴位名称通过Unity3D UGUI控件制作。
创建与穴位点数量相同的Image和Text控件。每一个Image对应一个穴位,每个Text对应一个穴位的名称。系统运行的过程中,各Image和Text控件位置与计算出的人脸穴位位置对应。穴位的显示效果如图5所示。另外,通过脚本可控制Image、Text启用与禁用,进而控制穴位的显示与隐藏。
继续在Unity3D 场景中添加Button、Image及InputField等UI组件[10],实现对系统功能的交互操作。穴位相关知识和疾病治疗方法将以图片的形式显示在界面上方,如图6所示。
为避免UI组件对人脸穴位的观察造成遮挡,输入框设计为半透明,且交互按钮和输入框均显示在界面的底部。
4结论
本文探索性地将AR技术应用于穴位识别系统,设计并实现了一款人脸穴位动态查找软件,使用户查找穴位更方便快捷。
目前该面部穴位查询系统对于用户正视摄像头或头部小范围的移动定位精确性较高,但对于大范围的头部移动精确性会降低。本论文的后续工作:1)提高大范围头部移动的精准性;2)将穴位查找范围进一步扩大,尝试实现人体全部穴位的动态查询定位。
参考文献:
[1] 王贞虎.舒筋活络的拔罐术[J].健康生活,2018(6):28-30.
[2] 梁凤霞,王华,王静芝,等. 国际中医针灸教育课程体系现状与思考[A]. 世界针灸学会联合会、中国中医科学院、海南省卫生健康委员会.“中医针灸”申遗十周年特别活动暨世界针灸学会联合会2020国际针灸学术研讨会论文集[C].世界针灸学会联合会中国中医科学院、海南省卫生健康委员会:中国针灸学会,2020:2.
[3] 王宇希,张凤军,刘越.增强现实技术研究现状及发展趋势[J].科技导报,2018,36(10):75-83.
[4] 杨旭明,彭昊宇,方琢,等.基于Web的针刺面部穴位定位、处方学习和虚拟仿真系统的研发[J].中华医学图书情报杂志,2019,28(10):51-56.
[5] 杨青,钟书华.国外“虚拟现实技术发展及演化趋势”研究综述[J].自然辩证法通讯,2021,43(3):97-106.
[6] 刘春飞,张季,王嘉,等.基于Unity3D技术的移动端数字人体腧穴仿真系统的设计与实现[J].世界科学技术-中医药现代化,2021,23(5):1490-1499.
[7] 梁昭德.基于卷积神经网络的驾驶人疲劳检测算法研究[D].广州:华南理工大学,2018.
[8] 李佳潞,黄银兰,乔嘉,等.骨度分寸定位法的古代文献研究[J].山西中医药大学学报,2021,22(1):4-7.
[9] 李军,钟鹏.OpenCV的车道线检测方法[J].华侨大学学报(自然科学版),2021,42(4):421-424.
[10] 杨旭.基于虚拟现实的注塑成型仿真系统的研究及开发[D].杭州:浙江大学,2018.
收稿日期:2022-02-10
作者简介:郑成龙(1996—),男,山东滨州人,硕士,虚拟现实方向;丰艳(1977—),女,山东青岛人,教授,博士,硕士生导师,图像处理、虚拟现实、多媒体技术。