鄭成龍 豐艷



摘要:目前人臉穴位點(diǎn)的取穴方法僅按照人臉靜態(tài)圖中的穴位排布來(lái)確定,實(shí)時(shí)性較差。為了幫助穴位愛(ài)好者以及醫(yī)務(wù)人員更直觀地觀察穴位點(diǎn)的分布情況,設(shè)計(jì)了一種基于增強(qiáng)現(xiàn)實(shí)技術(shù)實(shí)時(shí)獲取人臉穴位點(diǎn)排布的方法。該方法首先利用OpenFace框架獲取人臉特征點(diǎn)的位置,然后根據(jù)人臉特征點(diǎn)的坐標(biāo)計(jì)算人臉穴位的位置。利用Unity 3D平臺(tái),將有關(guān)穴位信息標(biāo)注在獲取到的人臉穴位點(diǎn)位置上,最終通過(guò)移動(dòng)端拍攝人臉實(shí)現(xiàn)人臉穴位實(shí)時(shí)顯示。
關(guān)鍵詞: 人臉穴位點(diǎn); 增強(qiáng)現(xiàn)實(shí); Unity3D; 人臉特征點(diǎn)檢測(cè); OpenFace
中圖分類(lèi)號(hào):R245.9? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2022)17-0089-02
隨著生活水平的不斷提高,健康成為目前備受關(guān)注的頭等大事。國(guó)家高度重視發(fā)展中醫(yī)文化,甚至把中醫(yī)上升到關(guān)乎民族復(fù)興、國(guó)家盛衰的空前高度。在這樣的大背景下,越來(lái)越多的人開(kāi)始嘗試在家用拔罐[1]、艾灸[2]等傳統(tǒng)的中醫(yī)方式進(jìn)行養(yǎng)生保健。
這些經(jīng)典的中醫(yī)養(yǎng)生方式,離不開(kāi)經(jīng)絡(luò)與穴位的定位,但是對(duì)于非醫(yī)學(xué)專(zhuān)業(yè)的普通人來(lái)說(shuō),查找穴位成為最需解決的問(wèn)題。
對(duì)此,本文研究并開(kāi)發(fā)了一款基于增強(qiáng)現(xiàn)實(shí)(Augemented Reality,AR)技術(shù)[3]的人臉穴位自動(dòng)定位系統(tǒng),可以很好地實(shí)現(xiàn)基于手機(jī)端的面部穴位實(shí)時(shí)定位。
雖然近幾年出現(xiàn)了一些基于移動(dòng)端的虛實(shí)疊加應(yīng)用系統(tǒng),但大多都是離線系統(tǒng)。而本文研發(fā)的實(shí)時(shí)系統(tǒng),具有更好的交互性和用戶體驗(yàn)。
1 研究現(xiàn)狀
利用系統(tǒng)軟件輔助查詢?nèi)四樠ㄎ唬壳皣?guó)內(nèi)有一定研究。其中楊旭明團(tuán)隊(duì)研究并開(kāi)發(fā)了一款基于Web針刺面部穴位定位虛擬仿真系統(tǒng)軟件[4],在靜態(tài)人臉圖片上標(biāo)記穴位。該系統(tǒng)在一定程度上降低了穴位查詢的難度,但仍具有局限性,很難跟隨人臉的移動(dòng)動(dòng)態(tài)地顯示穴位。
目前獲取圖像和視頻最常見(jiàn)最便捷的途徑是手機(jī)拍攝。因此,開(kāi)發(fā)一款基于移動(dòng)端的人臉穴位實(shí)時(shí)定位系統(tǒng),更能符合實(shí)際的應(yīng)用需求。
2 相關(guān)技術(shù)概述
2.1 AR技術(shù)
AR技術(shù)是在虛擬現(xiàn)實(shí)(Virtual Reality,VR)[5]技術(shù)基礎(chǔ)之上發(fā)展而來(lái)。不同于VR系統(tǒng)完全虛擬的世界,AR技術(shù)是將計(jì)算機(jī)生成的三維虛擬物體、場(chǎng)景或提示信息實(shí)時(shí)疊加到真實(shí)場(chǎng)景圖像中,從而實(shí)現(xiàn)對(duì)現(xiàn)實(shí)場(chǎng)景的補(bǔ)充和增強(qiáng)。
2.2 Unity3D引擎
Unity3D[6]是一款游戲開(kāi)發(fā)引擎,由丹麥Unity Technologies公司在2004年創(chuàng)建。用戶可以通過(guò)該引擎創(chuàng)造地形、光照、碰撞等仿真內(nèi)容,以及實(shí)現(xiàn)實(shí)時(shí)人機(jī)交互。Unity3D引擎具有跨平臺(tái)性,支持Windows、Android、iOS等多個(gè)平臺(tái),做到一次開(kāi)發(fā)、多平臺(tái)部署,能夠極大縮短軟件的開(kāi)發(fā)周期。Unity3D 4.6版本之后,圖形用戶界面系統(tǒng)(UGUI)被集成到了Unity3D的編輯器中,UGUI提供了按鈕(Button)、輸入框(InputField)等組件,可以快速、簡(jiǎn)單、靈活地創(chuàng)建UI界面。
經(jīng)過(guò)多年的發(fā)展,Unity3D因操作容易、性能穩(wěn)定等特點(diǎn),在游戲、虛擬現(xiàn)實(shí)、增強(qiáng)現(xiàn)實(shí)、醫(yī)學(xué)、建筑等領(lǐng)域得到了廣泛的應(yīng)用。
2.3 人臉穴位計(jì)算
利用OpenFace[7]框架對(duì)人臉進(jìn)行68個(gè)關(guān)鍵點(diǎn)檢測(cè),定位后的人臉如圖1所示。
穴位在人臉的分布位置與68個(gè)特征點(diǎn)的關(guān)系分為三種:第一種:穴位落在68個(gè)特征點(diǎn)上;第二種:穴位沒(méi)有落在68個(gè)特征點(diǎn)上,但是穴位與兩個(gè)以上的特征點(diǎn)有關(guān)系;第三種:穴位沒(méi)有落在68個(gè)特征點(diǎn)上,但穴位僅僅與一個(gè)特征點(diǎn)有關(guān)系。
首先用阿拉伯?dāng)?shù)字給人臉68個(gè)特征點(diǎn)標(biāo)號(hào),如圖2所示。
滿足第一種情況的穴位,瞳子髎穴位于眼角位置,與特征點(diǎn)36號(hào)和45號(hào)對(duì)應(yīng)。上廉泉穴位于下頜正下方略微凹陷處,與特征點(diǎn)8號(hào)位置對(duì)應(yīng)。前大迎穴靠近下頜尖處,與特征點(diǎn)10號(hào)和6號(hào)對(duì)應(yīng)。攢竹穴位于眉頭處,與特征點(diǎn)21號(hào)和22號(hào)對(duì)應(yīng)。絲空竹穴位于眉梢,與特征點(diǎn)17號(hào)和26號(hào)對(duì)應(yīng)。山根穴位于鼻梁根部,與特征點(diǎn)27號(hào)對(duì)應(yīng)。魚(yú)腰穴位于眉毛正中,與特征點(diǎn)19號(hào)和24號(hào)對(duì)應(yīng)。地倉(cāng)穴位于嘴角外側(cè),與特征點(diǎn)48號(hào)和54號(hào)對(duì)應(yīng)。禾髎穴位于上唇中央高起處外側(cè),與特征點(diǎn)53號(hào)和49號(hào)對(duì)應(yīng)。頰車(chē)穴位于下頜角處,與特征點(diǎn)4號(hào)和12號(hào)對(duì)應(yīng)。
對(duì)于第二種情況,需根據(jù)兩個(gè)特征點(diǎn)的位置來(lái)計(jì)算。滿足第二種情況的穴位,人中穴位于鼻唇溝上三分之一處,可由特征點(diǎn)33號(hào)和51號(hào)計(jì)算得出。如公式(1)所示,Y人中、X人中表示人中穴在人臉圖像上的位置。Y33和Y51分別表示特征點(diǎn)33號(hào)和51號(hào)到圖像上邊框的距離,X33和X51分別表示特征點(diǎn)33號(hào)和51號(hào)到圖像左邊框的距離。
[Y人中=Y33-Y33-Y51/3X人中=X33-X33-X51/3]? ? ? ? ? ? ? ?(1)
印堂穴位于兩個(gè)眉頭連線的中點(diǎn),可由特征點(diǎn)21號(hào)和22號(hào)計(jì)算得出。計(jì)算如公式(2)所示,Y印堂、X印堂表示印堂穴在人臉圖像上的位置。Y21和Y22分別表示特征點(diǎn)21號(hào)和22號(hào)到圖像上邊框的距離,X21和X22分別表示特征點(diǎn)21號(hào)和22號(hào)到圖像左邊框的距離。
[Y印堂=Y21+Y22-Y21/2X印堂=X33+X22-X21/2]? ? ? ? ? ? ? (2)
球后穴在眼眶下緣,外眼側(cè)起約四分之一處,用X球后和Y球后表示球后穴的位置。用X39和X36表示39號(hào)、36號(hào)特征點(diǎn)距離圖像左邊框的距離。Y41表示41號(hào)特征點(diǎn)距離圖像上邊框的距離。球后穴的位置由公式(3)計(jì)算得出。
[X球后=X39-X36/4Y球后≈Y41]? ? ? ? ? ? ? ? ? ? ? ? (3)
第三種情況比較復(fù)雜,需要利用骨度分寸法[8]和Canny[9]邊緣檢測(cè)來(lái)輔助定位。骨度分寸法是古代的一種測(cè)量方法,以骨節(jié)為標(biāo)志測(cè)量身體各部分長(zhǎng)度,如眉心到發(fā)際的距離為3寸,兩前額角之間為9寸。
Canny算法在1986年被John F .Canny提出,是應(yīng)用比較廣的邊緣檢測(cè)算法。
用X發(fā)際點(diǎn)表示發(fā)際點(diǎn)到圖像左邊框的距離,用Y發(fā)際點(diǎn)表示發(fā)際點(diǎn)到圖像上邊框的距離。X發(fā)際點(diǎn)比較容易得到,人臉正視鏡頭,X發(fā)際點(diǎn)=X眉心=X印堂。Y發(fā)際點(diǎn)數(shù)值的確定同樣需要人臉正視鏡頭,利用Canny檢測(cè)人臉圖片邊緣,如圖3所示。在Canny檢測(cè)所得到的邊緣點(diǎn)坐標(biāo)中查找X=X發(fā)際點(diǎn)且Y值小于Y眉心的點(diǎn),在滿足條件的點(diǎn)中,取其Y值最大的點(diǎn),即為發(fā)際點(diǎn)(X發(fā)際點(diǎn),Y發(fā)際點(diǎn))。
用C表示發(fā)際線到眉心的相對(duì)大小。用M表示兩眼角45號(hào)特征點(diǎn)與36號(hào)特征點(diǎn)之間的距離。X45和X36分別表示特征點(diǎn)45號(hào)和36號(hào)到圖像左邊框的距離。如公式(4)所示。此時(shí)的C和M為初始值,需要在穴位點(diǎn)檢測(cè)之前初始化。
[C=Y發(fā)際-Y眉心M=X45-X36]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(4)
當(dāng)人臉進(jìn)行前后移動(dòng)時(shí),用Mnew表示移動(dòng)后兩眼角之間的距離,用X45(new)和X36(new)表示移動(dòng)后兩眼角45號(hào)特征點(diǎn)和36號(hào)特征點(diǎn)距離圖片左邊框的位置,用R表示人臉縮放的比值。由公式(5)計(jì)算Mnew和R值。
[Mnew=X45(new)-X36(new)R=Mnew/M]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (5)
陽(yáng)白穴的位置在魚(yú)腰穴的上方兩寸處,用X陽(yáng)白和Y陽(yáng)白表示, X魚(yú)腰(左)和Y魚(yú)腰(左)表示左眼魚(yú)腰穴的位置。由公式(6)計(jì)算得。
[X陽(yáng)白=R*C*2/3+X魚(yú)腰(左)Y陽(yáng)白=Y魚(yú)腰(左)-R*C*2/3]? ? ? ? ? ? ? ? ? ? ? ? ?(6)
四白穴位于瞳孔正中央下約2寸處,用X四白和Y四白表示。X40表示40號(hào)特征點(diǎn)距離圖像左邊框的距離。Y40表示40號(hào)特征點(diǎn)距離圖像上邊框的距離。由公式(7)計(jì)算得。
[X四白≈X40Y四白≈R*C*2/3+Y40]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(7)
至此,我們得到了所有穴位點(diǎn)的位置。
3系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
3.1 系統(tǒng)功能設(shè)計(jì)
系統(tǒng)具有四個(gè)功能:
1)虛擬穴位在人臉全部顯示。使用戶觀察各穴位之間的位置關(guān)系更加清晰。
2)依據(jù)用戶輸入的穴位名稱(chēng)顯示單個(gè)穴位。避免其他穴位視覺(jué)上的干擾。
3)依據(jù)用戶輸入的病癥名稱(chēng),系統(tǒng)自動(dòng)查找并顯示相應(yīng)穴位。查找穴位的目的是治療疾病或養(yǎng)生保健,但面部穴位較多,對(duì)于非醫(yī)學(xué)專(zhuān)業(yè)的普通百姓而言,很難熟記各病癥與穴位的關(guān)系,因此,通過(guò)疾病名稱(chēng)查找穴位,能夠更好地滿足用戶需求。
4)提供指定穴位相關(guān)知識(shí),例如顯示穴位對(duì)應(yīng)的治療病癥,以及對(duì)應(yīng)的養(yǎng)生保健方法。
3.2 系統(tǒng)功能實(shí)現(xiàn)
該系統(tǒng)利用紅點(diǎn)和穴位名稱(chēng)標(biāo)注穴位的具體位置。紅點(diǎn)和穴位名稱(chēng)通過(guò)Unity3D UGUI控件制作。
創(chuàng)建與穴位點(diǎn)數(shù)量相同的Image和Text控件。每一個(gè)Image對(duì)應(yīng)一個(gè)穴位,每個(gè)Text對(duì)應(yīng)一個(gè)穴位的名稱(chēng)。系統(tǒng)運(yùn)行的過(guò)程中,各Image和Text控件位置與計(jì)算出的人臉穴位位置對(duì)應(yīng)。穴位的顯示效果如圖5所示。另外,通過(guò)腳本可控制Image、Text啟用與禁用,進(jìn)而控制穴位的顯示與隱藏。
繼續(xù)在Unity3D 場(chǎng)景中添加Button、Image及InputField等UI組件[10],實(shí)現(xiàn)對(duì)系統(tǒng)功能的交互操作。穴位相關(guān)知識(shí)和疾病治療方法將以圖片的形式顯示在界面上方,如圖6所示。
為避免UI組件對(duì)人臉穴位的觀察造成遮擋,輸入框設(shè)計(jì)為半透明,且交互按鈕和輸入框均顯示在界面的底部。
4結(jié)論
本文探索性地將AR技術(shù)應(yīng)用于穴位識(shí)別系統(tǒng),設(shè)計(jì)并實(shí)現(xiàn)了一款人臉穴位動(dòng)態(tài)查找軟件,使用戶查找穴位更方便快捷。
目前該面部穴位查詢系統(tǒng)對(duì)于用戶正視攝像頭或頭部小范圍的移動(dòng)定位精確性較高,但對(duì)于大范圍的頭部移動(dòng)精確性會(huì)降低。本論文的后續(xù)工作:1)提高大范圍頭部移動(dòng)的精準(zhǔn)性;2)將穴位查找范圍進(jìn)一步擴(kuò)大,嘗試實(shí)現(xiàn)人體全部穴位的動(dòng)態(tài)查詢定位。
參考文獻(xiàn):
[1] 王貞虎.舒筋活絡(luò)的拔罐術(shù)[J].健康生活,2018(6):28-30.
[2] 梁鳳霞,王華,王靜芝,等. 國(guó)際中醫(yī)針灸教育課程體系現(xiàn)狀與思考[A]. 世界針灸學(xué)會(huì)聯(lián)合會(huì)、中國(guó)中醫(yī)科學(xué)院、海南省衛(wèi)生健康委員會(huì).“中醫(yī)針灸”申遺十周年特別活動(dòng)暨世界針灸學(xué)會(huì)聯(lián)合會(huì)2020國(guó)際針灸學(xué)術(shù)研討會(huì)論文集[C].世界針灸學(xué)會(huì)聯(lián)合會(huì)中國(guó)中醫(yī)科學(xué)院、海南省衛(wèi)生健康委員會(huì):中國(guó)針灸學(xué)會(huì),2020:2.
[3] 王宇希,張鳳軍,劉越.增強(qiáng)現(xiàn)實(shí)技術(shù)研究現(xiàn)狀及發(fā)展趨勢(shì)[J].科技導(dǎo)報(bào),2018,36(10):75-83.
[4] 楊旭明,彭昊宇,方琢,等.基于Web的針刺面部穴位定位、處方學(xué)習(xí)和虛擬仿真系統(tǒng)的研發(fā)[J].中華醫(yī)學(xué)圖書(shū)情報(bào)雜志,2019,28(10):51-56.
[5] 楊青,鐘書(shū)華.國(guó)外“虛擬現(xiàn)實(shí)技術(shù)發(fā)展及演化趨勢(shì)”研究綜述[J].自然辯證法通訊,2021,43(3):97-106.
[6] 劉春飛,張季,王嘉,等.基于Unity3D技術(shù)的移動(dòng)端數(shù)字人體腧穴仿真系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].世界科學(xué)技術(shù)-中醫(yī)藥現(xiàn)代化,2021,23(5):1490-1499.
[7] 梁昭德.基于卷積神經(jīng)網(wǎng)絡(luò)的駕駛?cè)似跈z測(cè)算法研究[D].廣州:華南理工大學(xué),2018.
[8] 李佳潞,黃銀蘭,喬嘉,等.骨度分寸定位法的古代文獻(xiàn)研究[J].山西中醫(yī)藥大學(xué)學(xué)報(bào),2021,22(1):4-7.
[9] 李軍,鐘鵬.OpenCV的車(chē)道線檢測(cè)方法[J].華僑大學(xué)學(xué)報(bào)(自然科學(xué)版),2021,42(4):421-424.
[10] 楊旭.基于虛擬現(xiàn)實(shí)的注塑成型仿真系統(tǒng)的研究及開(kāi)發(fā)[D].杭州:浙江大學(xué),2018.
收稿日期:2022-02-10
作者簡(jiǎn)介:鄭成龍(1996—),男,山東濱州人,碩士,虛擬現(xiàn)實(shí)方向;豐艷(1977—),女,山東青島人,教授,博士,碩士生導(dǎo)師,圖像處理、虛擬現(xiàn)實(shí)、多媒體技術(shù)。