李晉芳, 陳基榮, 李二芳, 莫建清, 李浩勇
(1.廣東工業(yè)大學(xué) 機電工程學(xué)院, 廣州 510006; 2.河南理工大學(xué) 河南理工大學(xué)醫(yī)院, 河南 焦作 454150)
隨著虛擬現(xiàn)實技術(shù)和醫(yī)療結(jié)合的深入,虛擬手術(shù)訓(xùn)練技術(shù)已趨于成熟,給現(xiàn)代醫(yī)學(xué)領(lǐng)域帶來了很多的便利。如今的虛擬手術(shù)系統(tǒng)還是存在著許多缺點和不完善的地方,使其不能成為一個成熟的虛擬現(xiàn)實交互平臺。這些不足,根據(jù)虛擬現(xiàn)實技術(shù)的基本特征及虛擬手術(shù)中的一些實際需求,可以總結(jié)為3個方面:沉浸感不強;交互方式單一;不能實現(xiàn)遠程協(xié)同。
基于虛擬醫(yī)療領(lǐng)域的這種現(xiàn)狀,搭建一個高沉浸感的、擁有徒手交互等多種交互方式、可遠程協(xié)同進行操作的高效手術(shù)訓(xùn)練平臺具有很大的現(xiàn)實意義[1]。它的實現(xiàn)可以讓醫(yī)生便捷、高效的進行異地遠程醫(yī)療培訓(xùn)及手術(shù)指導(dǎo),特別是對于緩解我國中西部地區(qū)醫(yī)療資源緊張的情況將會起到很好的作用[2]。
為了實現(xiàn)該遠程協(xié)同手術(shù)指導(dǎo)平臺,本文對混合現(xiàn)實中的虛實場景疊加、交互方式、手術(shù)中患者身高數(shù)據(jù)采集、數(shù)據(jù)傳輸、虛擬場景信息的同步等相關(guān)技術(shù)進行了研究[3]。
在遠程協(xié)同指導(dǎo)過程中,虛擬患者是不可缺少的元素。基于增強現(xiàn)實的遠程手術(shù)指導(dǎo)是將指導(dǎo)醫(yī)生和被指導(dǎo)醫(yī)生置于同一個增強現(xiàn)實環(huán)境中[4]。在此環(huán)境中,他們可以看到由手術(shù)室真實畫面和虛擬患者模型組成的畫面,指導(dǎo)過程則通過指導(dǎo)醫(yī)生對虛擬患者的姿態(tài)控制及雙方的語音通話完成[5]。為此,遠程協(xié)同手術(shù)指導(dǎo)平臺應(yīng)遵循如下原則:
(1) 能逼真的模擬真實患者。所采用的虛擬患者模型,應(yīng)和真實患者具有相同或相似的身高、體態(tài)及各關(guān)節(jié)長度,以使其在手術(shù)指導(dǎo)過程中能和真實患者圖像實現(xiàn)較好的三維空間上的重疊,使被指導(dǎo)的醫(yī)生可以獲得較精確的姿態(tài)調(diào)整信息。
(2) 可感知對方的存在和行為。被指導(dǎo)的醫(yī)生需要通過增強現(xiàn)實場景觀察到指導(dǎo)醫(yī)生的手部動作,以判斷操作的具體過程。指導(dǎo)醫(yī)生需要實時觀察到被指導(dǎo)醫(yī)生的操作過程和真實患者的姿態(tài),以調(diào)整自己的指導(dǎo)過程[6]。
(3) 協(xié)同對象間可進行實時溝通和交流。除了可通過圖像的方式相互感知對方,遠程手術(shù)指導(dǎo)的雙方還可通過語音交流這一最自然的交流方式,進行更加充分的交流[7]。
本文采用分層結(jié)構(gòu)思想構(gòu)建該系統(tǒng)平臺的體系結(jié)構(gòu),如圖1所示。整個系統(tǒng)采用客戶端/服務(wù)器(Client/Server,C/S)網(wǎng)絡(luò)架構(gòu),通過遠程服務(wù)器實現(xiàn)實習(xí)端和指導(dǎo)端兩個客戶端的互聯(lián)[8]。在服務(wù)器中,交互層用于用戶賬號信息、虛擬患者模型的管理、協(xié)同過程中場景信息的同步及雙方語音和視頻數(shù)據(jù)信息的傳輸;數(shù)據(jù)庫用于存儲用戶賬號信息數(shù)據(jù)、虛擬患者模型數(shù)據(jù)、指導(dǎo)平臺操作規(guī)則及一些其他的數(shù)據(jù)。在兩個客戶端中,實習(xí)端的主要功能為實現(xiàn)虛擬患者模型和真實手術(shù)場景的疊加、同指導(dǎo)端進行語音通話以及對真實患者身高數(shù)據(jù)的采集;指導(dǎo)端除了有虛實場景疊加和語音通話,還可通過手勢交互的方式對虛擬患者姿態(tài)進行控制。
圖1 遠程協(xié)同手術(shù)指導(dǎo)平臺框架結(jié)構(gòu)
這里以膝關(guān)節(jié)鏡手術(shù)的虛擬訓(xùn)練與指導(dǎo)為實例,介紹系統(tǒng)的硬件平臺搭建,如圖2所示。
圖2 系統(tǒng)硬件組成
從輸入設(shè)備、本地數(shù)據(jù)處理設(shè)備、服務(wù)器、輸出設(shè)備4個方面, 可以將此硬件平臺表示為如圖3所示的框架結(jié)構(gòu)。
圖3 系統(tǒng)硬件框架
(1) 輸入設(shè)備。輸入設(shè)備由Kinect、Leap Motion、虛擬膝關(guān)節(jié)鏡手術(shù)交互設(shè)備、Oculus定位儀、陀螺儀[9]及鼠標鍵盤組成。其中Oculus定位儀用于定位佩戴者頭部所處的空間位置,它通過對頭盔表面紅外燈陣列的識別實現(xiàn)定位。Oculus陀螺儀內(nèi)置于頭盔中,用于感知使用者頭部的空間旋轉(zhuǎn)角度。鼠標鍵盤則用于進入手術(shù)訓(xùn)練系統(tǒng)前的用戶賬號登錄等操作。
(2) 數(shù)據(jù)處理設(shè)備。數(shù)據(jù)處理設(shè)備指本文中的客戶端主機,它是整個本地客戶端的核心部分,為客戶端系統(tǒng)提供后臺服務(wù)和對數(shù)據(jù)的分析、計算等處理,同時也是輸入設(shè)備、輸出設(shè)備、遠程服務(wù)器三者的通信橋梁。
(3) 服務(wù)器。服務(wù)器是各客戶端之間進行連接的橋梁,也是實現(xiàn)遠程協(xié)同通信的關(guān)鍵部件。本文原型系統(tǒng)開發(fā)階段的服務(wù)器主要用于實現(xiàn)手術(shù)訓(xùn)練過程中,各客戶端之間音、視頻、場景信息等數(shù)據(jù)的同步以及用戶賬號的管理。
(4) 輸出設(shè)備。輸出設(shè)備包括Oculus頭盔顯示器、耳機及主機顯示器。整個遠程協(xié)同手術(shù)系統(tǒng),在從本地輸入設(shè)備和遠程服務(wù)器獲取到音、視頻及虛擬場景數(shù)據(jù)信息后,經(jīng)過客戶端主機的數(shù)據(jù)處理,最終會將所得數(shù)據(jù)以 Oculus雙目立體視覺和聲音的形式呈現(xiàn)在用戶的頭盔顯示器和耳機中。
如圖4所示,整個系統(tǒng)的軟件框架由3層結(jié)構(gòu)組成。底層是由操作系統(tǒng)、 Unity虛擬現(xiàn)實引擎、 Photon服務(wù)器框架、設(shè)備驅(qū)動、開發(fā)應(yīng)用程序編程接口(Application Programming Interface,API)等組成的支撐環(huán)境。中間層是由遠程協(xié)同通信核心功能模塊組成的遠程手術(shù)指導(dǎo)系統(tǒng)平臺。頂層是由膝關(guān)節(jié)鏡手術(shù)相關(guān)的虛擬場景模型、手術(shù)過程規(guī)范、關(guān)節(jié)鏡設(shè)備交互方案等組成一個應(yīng)用實例。
圖4 平臺軟件系統(tǒng)框架
在底層,客戶端相關(guān)功能邏輯主要由Unity引擎進行開發(fā),本系統(tǒng)提供了渲染管線、碰撞檢測、場景模型數(shù)據(jù)讀寫、GUI用戶交互界面設(shè)計等功能。并且本系統(tǒng)中客戶端主機與Leap Motion、Oculus、Kinect及膝關(guān)節(jié)鏡手術(shù)外設(shè)設(shè)備等硬件的通信也是以Unity為橋梁,并借助相應(yīng)的硬件驅(qū)動及開發(fā)API實現(xiàn)的。而服務(wù)器端與各客戶端的通信則都是運用Photon服務(wù)器框架及SQL Server數(shù)據(jù)庫實現(xiàn)的。另外,本文中客戶端和服務(wù)器端的所有編程及代碼編譯工作都由Microsoft Visual Studio編程工具完成。由于其對.NET開發(fā)平臺及C#編程語言的原生支持,并且由于Unity虛擬現(xiàn)實引擎及Photon服務(wù)器框架的底層的都是基于.NET平臺進行開發(fā),使得本文中系統(tǒng)的性能更加穩(wěn)定并且開發(fā)效率更高。
在中間層,是以遠程協(xié)同通信相關(guān)功能等4個功能模塊的研究和實現(xiàn)為基礎(chǔ)開發(fā)的系統(tǒng)平臺。
在頂層是本文基于中間層系統(tǒng)平臺開發(fā)的虛擬膝關(guān)節(jié)鏡手術(shù)訓(xùn)練指導(dǎo)應(yīng)用實例。該系統(tǒng)中的應(yīng)用實例層是可擴展的。即可以基于中間層系統(tǒng)平臺中的核心功能模塊開發(fā)出其它手術(shù)訓(xùn)練應(yīng)用實例[10],如:眼科手術(shù)、腹腔鏡手術(shù)等。
在本系統(tǒng)中的遠程手術(shù)指導(dǎo)過程中,指導(dǎo)醫(yī)生需要通過調(diào)整虛擬患者模型的體位和膝部姿態(tài),以使膝關(guān)節(jié)腔的形狀滿足內(nèi)窺鏡等手術(shù)器械的最佳入刀位置,從而為實習(xí)端醫(yī)生做出正確示范。因此在本系統(tǒng)中的患者模型必須是一個可發(fā)生網(wǎng)格形變且各個關(guān)節(jié)可以靈活運動的模型,這就需要在人體視覺模型的基礎(chǔ)上對其進行骨骼綁定。
骨骼綁定是在三維交互和虛擬現(xiàn)實領(lǐng)域常用的一種對于需要進行姿態(tài)變換的人物模型進行的附加操作。視覺模型即為一個不可變形的表面網(wǎng)格體,因此想要在交互過程中對本文中患者模型的動作、姿態(tài)進行控制,就需要通過骨骼綁定,給視覺模型中的每一個需要運動的關(guān)節(jié)點(如:膝關(guān)節(jié)、脊椎、手臂)生成相對應(yīng)的有6個空間自由度的坐標點。
在骨骼綁定過程中,首先需要在3ds max中對可能發(fā)生運動的關(guān)節(jié)部位創(chuàng)建骨骼,骨骼創(chuàng)建應(yīng)盡量模擬真實的人體骨骼的形態(tài),但也要兼顧到手術(shù)仿真系統(tǒng)的性能,更多的骨骼關(guān)節(jié)點意味著更大的性能消耗。在滿足交互需求的前提下,可簡化骨骼創(chuàng)建的個數(shù)而只創(chuàng)建關(guān)鍵關(guān)節(jié)。如:人體脊柱有33塊脊椎骨,它們都屬于半活動關(guān)節(jié),運動幅度并不大,可以將其關(guān)節(jié)數(shù)量減為3個。如圖5所示,為患者視覺模型及創(chuàng)建好的與其相匹配的人體骨骼。骨骼創(chuàng)建完成之后,需要與模型進行相連,也叫做骨骼蒙皮。在此階段,通過3ds max自動完成模型與骨骼的綁定,并默認每個關(guān)節(jié)點對周圍模型各頂點具有一定權(quán)重的控制,控制權(quán)重值為0~1。1為完全連帶關(guān)系,0則相反。蒙皮之后模型的每個頂點都和周圍若干個骨骼關(guān)節(jié)點產(chǎn)生不同程度的連帶關(guān)系,即每個關(guān)節(jié)點的移動都會不同程度地影響周圍模型頂點的位置。
本文采用leap motion和虛擬現(xiàn)實頭盔oculus相結(jié)合的方式,實現(xiàn)場景的虛實疊加。Leap motion(見圖6)兩顆廣角紅外攝像頭,可獲取真實世界的立體灰階圖像。將leap motion獲得的雙目真實場景圖像,和虛擬患者三維模型實時疊加,輸出到oculus頭盔,即可使用戶觀察到虛擬和現(xiàn)實場景相疊加的畫面。
圖6 Leap Motion硬件結(jié)構(gòu)
圖像的疊加需要通過Leap Motion SDK中提供frame.images()函數(shù)獲取兩個紅外攝像機生成的200 F/s原生圖像,并將其與虛擬患者模型在增強現(xiàn)實場景中實現(xiàn)疊加。首先需要將虛擬患者模型加載到虛擬場景中,并將其初始化位置設(shè)定在兩個虛擬相機中間點連線的y軸正前方,如圖7所示。之后,還需要通過設(shè)置渲染層級屬性將虛擬患者的渲染層級置于矩形面片之前這樣場景運行時,虛擬患者畫面始終先于矩形面片上的雙目圖像被渲染,從而可以防止錯誤的遮擋關(guān)系出現(xiàn)。
圖7 虛擬患者在場景中的放置
如圖8所示,經(jīng)過增強現(xiàn)實場景的搭建,并在其基礎(chǔ)之上將Leap Motion雙目圖像和虛擬患者三維模型分別在同一虛擬相機中疊加渲染,實現(xiàn)了虛實場景的疊加。
圖8 虛擬患者和真實場景的疊加
本系統(tǒng)采用以Leap Motion的徒手交互作為主要交互方式,主要考慮到增強現(xiàn)實設(shè)備的應(yīng)用不同于普通的二維平面應(yīng)用程序,用戶體驗到的是一個真實世界和虛擬三維相疊加的空間,因此與之相對應(yīng)的虛擬空間交互方式也應(yīng)與現(xiàn)實世界中相似,這樣才能大大的提升用戶的交互體驗和沉浸感。
要實現(xiàn)Leap Motion的徒手交互,首先需要獲取手部運動追蹤數(shù)據(jù)。這個過程可通過Leap Motion API為開發(fā)者提供的用于獲取追蹤數(shù)據(jù)的函數(shù)來實現(xiàn)。如通過調(diào)用Leap命名空間下的hand.PalmPostion()函數(shù),可獲取手掌的位置信息。
同時,由于Leap Motion設(shè)備在安裝到Oculus上時難免發(fā)生角度以及位移的偏差,并且Leap Motion還使用了與Unity引擎不同的右手坐標系,這使得通過調(diào)用Leap Motion API所得到的初始追蹤數(shù)據(jù)不能被直接同步給虛擬手模型,而需要通過測出相應(yīng)的裝置角度和位置偏差并對其進行相應(yīng)的數(shù)據(jù)轉(zhuǎn)換。本系統(tǒng)中對用戶手部動作的追蹤是通過安裝于Oculus頭盔正前方的Leap Motion來實現(xiàn)的。因此,安裝位置的偏差量將會直接影響追蹤數(shù)據(jù)的精度。如圖9所示,在將Leap Motion綁定到Oculus正前面后,理論上應(yīng)當使Leap Motion的原點位于設(shè)備佩戴者兩個瞳孔中間點的正前方8 cm處,同時上下位置與Oculus視點保持一致。如果安裝時出現(xiàn)誤差則需要對其進行測量,并在后續(xù)進行補償。
圖9 Leap Motion標準安裝位置
在進行增強現(xiàn)實(Augmented Reality,AR)手術(shù)指導(dǎo)過程中,由于真實患者的身高各不相同,為了實現(xiàn)其和虛擬患者各關(guān)節(jié)在混合現(xiàn)實設(shè)備中的準確疊加,以使實習(xí)端醫(yī)生能對真實患者進行更為精確的姿態(tài)調(diào)整,必須在手術(shù)指導(dǎo)開始前根據(jù)真實患者的身高對虛擬患者身高進行自動調(diào)整,使其相互匹配。同時,為了提高手術(shù)效率和數(shù)據(jù)精度,最佳的方式是可以由系統(tǒng)對身高數(shù)據(jù)自動進行采集并將其分別同步給實習(xí)端和指導(dǎo)端的虛擬患者,而不是由實習(xí)醫(yī)生手動測量并輸入系統(tǒng)。因此,考慮借助Kinect深度相機并通過適當算法來對患者身高數(shù)據(jù)進行檢測。
利用Kinect的視場角并結(jié)合一些三角形幾何運算,可以較精確的測量出人體身高。該身高測量方法的基本原理為,通過實時獲取Kinect深度相機所獲取的空間點三維數(shù)據(jù)并將其轉(zhuǎn)化為空間點云信息,之后以此進行身高估算測量。首先,Kinect深度相機的水平視場角和垂直視場角分別為57°和43°。因此,可以根據(jù)圖10所示的原理,并結(jié)合上一步中所計算出的深度值,對患者的實際高度進行測量。
圖10 身高測試原理圖
由于在使用Kinect對患者身高進行測量時,患者是躺在手術(shù)臺上的,因此d為其到Kinect的實際距離;θ為攝像頭水平視場角的1/2;Hr是待測量的患者實際身高;Hp為已檢測到的人體像素高度;Hb為Kinect深度圖像的像素高度。具體運算公式如下:
b=d×tanθ
通過上述方法,可以最終計算出真實患者較精確的身高值。其中,實際深度值d的計算,是通過將患者人體所在深度像元的深度值取平均值獲得。這是因為人體是凹凸不平的,需要通過取平均值的方式對距離進行平均化,以使測量數(shù)據(jù)更為準確。
3.5.1 音頻數(shù)據(jù)傳輸
本文開發(fā)的是一個原型系統(tǒng),同時在線用戶量并不會很大,不會對服務(wù)器造成太大壓力,因此采用單服C/S架構(gòu)。即服務(wù)器端所有邏輯,均在一臺服務(wù)器主機上完成。其大致結(jié)構(gòu)如圖11所示,屬于星型網(wǎng)絡(luò)結(jié)構(gòu)[11]。在這種網(wǎng)絡(luò)框架下的遠程音頻傳輸?shù)膶崿F(xiàn)過程可大致描述為:客戶端1對音頻信號進行采集并序列化處理,將其發(fā)送給服務(wù)器。通過服務(wù)器的實時廣播功能,將此音頻信號同步給其他需要接收的音頻信號的客戶端,如客戶端2和客戶端3,服務(wù)器在此充當數(shù)據(jù)中轉(zhuǎn)站功能。接收到音頻信號的客戶端2和客戶端3會對其反序列化并進行實時播放。
圖11 本系統(tǒng)C/S架構(gòu)圖
在本系統(tǒng)中,音頻信號的傳輸主要是為了讓用戶可以方便的進行遠程的實時語音通話??蛻舳艘纛l數(shù)據(jù)的采集需要借助Unity官方API中的Microphone和Audio Clip兩個類來完成。其中Microphone類中,Unity提供了獲取本地麥克風(fēng)設(shè)備devices(),開始錄音Start(),停止錄音End(),獲得錄音樣本位置GetPosition()等函數(shù)。通過它來獲取本地錄音設(shè)備并控制音頻輸入流通道的建立和關(guān)閉。獲取到的音頻數(shù)據(jù)將以AudioClip類的實例化對象形式存儲起來,并通過錄音數(shù)據(jù)壓縮將其通過服務(wù)器發(fā)送給指導(dǎo)端或?qū)嵙?xí)端。另一端接收數(shù)據(jù)后,同樣通過音頻數(shù)據(jù)的解壓并將其播放出來。其中,數(shù)據(jù)壓縮和解壓的過程通過Zlib壓縮算法完成。
3.5.2 視頻數(shù)據(jù)傳輸
視頻信號的傳輸主要是為了讓指導(dǎo)醫(yī)生端可以通過頭盔顯示器實時的看到虛擬患者和通過實習(xí)端混合現(xiàn)實頭盔拍攝的真實患者圖像相疊加的畫面。獲取真實患者圖像是為了讓指導(dǎo)端醫(yī)生判斷處于實習(xí)端的真實患者姿態(tài)是否符合膝關(guān)節(jié)鏡手術(shù)的要求,如不符合就會通過Leap Motion徒手交互方式調(diào)節(jié)與之疊加的虛擬患者姿態(tài),并且此調(diào)節(jié)過程可以被實習(xí)端醫(yī)生通過混合現(xiàn)實頭盔實時的觀察到,實習(xí)醫(yī)生只需要將躺在手術(shù)臺上的真實患者姿態(tài)調(diào)整為和虛擬患者重合即可。
視頻傳輸?shù)拇笾略O(shè)計思路,如圖12所示。在實習(xí)醫(yī)生客戶端,通過訪問Leap Motion API,從其中獲取位圖格式的實時視頻幀數(shù)據(jù),然后通過Divx編碼器對視
圖12 視頻傳輸流程
頻幀進行壓縮。DivX是一項視頻壓縮技術(shù)[12],可將視頻圖像壓縮至原來的10%,非常適合于網(wǎng)絡(luò)視頻傳輸中的壓縮與解壓縮。之后數(shù)據(jù)被傳輸給Photon服務(wù)器并通過服務(wù)器中轉(zhuǎn)給待接收的指導(dǎo)端。接收到視頻幀的指導(dǎo)端同樣需要通過DivX對其進行實時解壓,最后通過Oculus頭盔實現(xiàn)視頻顯示。
3.5.3 虛擬場景信息同步
虛擬場景信息的同步包括虛擬患者身體姿態(tài)信息及指導(dǎo)醫(yī)生虛擬模型手的姿態(tài)信息同步[13]。要實現(xiàn)虛擬場景的信息同步,需要選擇適當?shù)挠糜趥鬏攬鼍靶畔⒌膫鬏攨f(xié)議,本文中虛擬場景信息同步環(huán)節(jié)的傳輸協(xié)議將選用JSON。
在本系統(tǒng)中,需要進行實時同步的場景信息主要是用指導(dǎo)醫(yī)生雙手的Leap Motion虛擬手模型、虛擬患者模型的動作信息[14]。以Leap Motion虛擬手為例,如圖13所示,需要同步的信息為模型各關(guān)節(jié)點局部坐標系相對于世界坐標的空間6個自由度坐標值。在此手部模型中一共有16個關(guān)節(jié)點,可以將其信息通過一個復(fù)合JSON對象描述出來。
圖13 Leap Motion虛擬手關(guān)節(jié)點局部坐標系
具體代碼如下:{
"thumb":
[
{"joint":"bone1","position":[40,210,30],"rotation":[90,61,105]},
{"joint":"bone2","position":[81,25.4,30],"rotation":[21,35,76]},
{"joint":"bone3","position":[36,21,38],"rotation":[66,24,18]}
],
"index":
[
{"joint":"bone1","position":[93,24,88],"rotation":[101,31.3,105]},
{"joint":"bone2","position":[33,64,79],"rotation":[85,61.1,135]},
{"joint":"bone3","Position":[65,94,25],"rotation":[90,21,10]}
]
……
}
此JSON對象即為虛擬手模型數(shù)據(jù)的傳輸模型。對象中的最外層為手指名稱和一個復(fù)合型JSON數(shù)組組成的變量。數(shù)組值又由3個復(fù)合型對象組成,每個對象分別存放:手指關(guān)節(jié)名、在虛擬世界坐標系中的空間坐標值、繞世界坐標系X、Y、Z3個坐標軸的旋轉(zhuǎn)角度,關(guān)節(jié)點對象中的數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)類型見表1。同時,由于此傳輸模型內(nèi)容較多,因此在上述復(fù)合JSON對象中,只列出了其中的拇指和食指的JSON模型數(shù)據(jù),之后的中指、無名指、小拇指以及手掌、前臂等予以省略。通過復(fù)合JSON對象即可實現(xiàn)虛擬場景數(shù)據(jù)的在實習(xí)端和指導(dǎo)端之間的同步。
表1 各關(guān)節(jié)點的JSON對象數(shù)據(jù)結(jié)構(gòu)
如圖14(a)所示,在遠程協(xié)同手術(shù)指導(dǎo)平臺中,當指導(dǎo)端醫(yī)生和實習(xí)端醫(yī)生創(chuàng)建協(xié)同組并實現(xiàn)互聯(lián)后,系統(tǒng)會在場景初始化階段自動激活架設(shè)在手術(shù)臺旁的Kinect對真實患者身高進行檢測,并將此數(shù)據(jù)同步給實習(xí)端和指導(dǎo)端的虛擬患者模型,以使其身高尺寸同真實患者相匹配。圖14(b)為同步后的虛擬患者同真實患者疊加后的圖像,從混合現(xiàn)實頭盔視角觀察,其和真實患者在三維空間中實現(xiàn)了較好的疊加。圖14(c)和14(d)則是從手術(shù)臺正上方角度觀察真實患者,以及通過混合現(xiàn)實頭盔從該角度觀察到的虛實患者疊加情況。
(a) Kinect患者身高檢測(b) 虛實患者疊加畫面1
(c) 患者真實畫面(d) 虛實患者疊加畫面2
如圖15(a)所示,指導(dǎo)端醫(yī)生開始通過Leap Motion徒手交互的方式調(diào)整虛擬患者膝關(guān)節(jié)姿態(tài),為實習(xí)端醫(yī)生做出膝關(guān)節(jié)鏡手術(shù)術(shù)前姿態(tài)調(diào)整的示范。圖15(b)為指導(dǎo)端醫(yī)生混合現(xiàn)實頭盔中呈現(xiàn)的虛實患者疊加畫面,其中的真實患者背景畫面為通過網(wǎng)絡(luò)從實習(xí)端醫(yī)生Leap Motion雙目攝像頭實時傳輸過來的,用于讓指導(dǎo)端醫(yī)生判斷處于異地的實習(xí)端手術(shù)現(xiàn)場狀況。同時,指導(dǎo)端醫(yī)生通過驅(qū)動虛擬場景中的Leap Motion虛擬手調(diào)整虛擬患者姿態(tài)。
(a) 指導(dǎo)端操作實景(b) 指導(dǎo)端虛實疊加畫面
如圖16(a)和16(b)所示,當實習(xí)端醫(yī)生接收到通過網(wǎng)絡(luò)實時同步的指導(dǎo)端虛擬患者姿態(tài)后,便可以此為依據(jù)對真實患者膝關(guān)節(jié)姿態(tài)進行調(diào)整,并從各角度觀察其和虛擬患者膝關(guān)節(jié)姿態(tài)是否完全疊加。如圖16(c)和16(d)所示,實習(xí)端醫(yī)生已將兩者空間位置調(diào)整為完全重合,說明此姿態(tài)已符合指導(dǎo)端醫(yī)生標準。
(a) 實習(xí)端操作實景(b) 實習(xí)端虛實疊加畫面1
(c) 實習(xí)端操作實景(d) 實習(xí)端虛實疊加畫面2
遠程協(xié)同手術(shù)指導(dǎo)平臺是一個集三維手術(shù)操作演示、語音視頻溝通于一體的手術(shù)培訓(xùn)及指導(dǎo)系統(tǒng)[15]。它的實現(xiàn)可以讓醫(yī)生進行異地遠程的醫(yī)療手術(shù)培訓(xùn)及手術(shù)指導(dǎo),可以部分緩解我國中西部兌取醫(yī)療及手術(shù)資源緊張的問題[16]。同時,將本系統(tǒng)將增強現(xiàn)實技術(shù)、遠程協(xié)同技術(shù)與虛擬手術(shù)相結(jié)合,也是對將虛擬現(xiàn)實技術(shù)應(yīng)用到醫(yī)療領(lǐng)域的一種全新嘗試。該模式可以被擴展到多種手術(shù)的遠程指導(dǎo)中,如:眼科手術(shù)、腹腔鏡手術(shù),甚至可以用于汽車發(fā)動機維修等各種非醫(yī)療領(lǐng)域。