国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

遠(yuǎn)程協(xié)同手術(shù)指導(dǎo)平臺(tái)的研究

2019-07-02 12:12:50李晉芳陳基榮李二芳莫建清李浩勇
實(shí)驗(yàn)室研究與探索 2019年6期
關(guān)鍵詞:客戶端遠(yuǎn)程服務(wù)器

李晉芳, 陳基榮, 李二芳, 莫建清, 李浩勇

(1.廣東工業(yè)大學(xué) 機(jī)電工程學(xué)院, 廣州 510006; 2.河南理工大學(xué) 河南理工大學(xué)醫(yī)院, 河南 焦作 454150)

0 引 言

隨著虛擬現(xiàn)實(shí)技術(shù)和醫(yī)療結(jié)合的深入,虛擬手術(shù)訓(xùn)練技術(shù)已趨于成熟,給現(xiàn)代醫(yī)學(xué)領(lǐng)域帶來了很多的便利。如今的虛擬手術(shù)系統(tǒng)還是存在著許多缺點(diǎn)和不完善的地方,使其不能成為一個(gè)成熟的虛擬現(xiàn)實(shí)交互平臺(tái)。這些不足,根據(jù)虛擬現(xiàn)實(shí)技術(shù)的基本特征及虛擬手術(shù)中的一些實(shí)際需求,可以總結(jié)為3個(gè)方面:沉浸感不強(qiáng);交互方式單一;不能實(shí)現(xiàn)遠(yuǎn)程協(xié)同。

基于虛擬醫(yī)療領(lǐng)域的這種現(xiàn)狀,搭建一個(gè)高沉浸感的、擁有徒手交互等多種交互方式、可遠(yuǎn)程協(xié)同進(jìn)行操作的高效手術(shù)訓(xùn)練平臺(tái)具有很大的現(xiàn)實(shí)意義[1]。它的實(shí)現(xiàn)可以讓醫(yī)生便捷、高效的進(jìn)行異地遠(yuǎn)程醫(yī)療培訓(xùn)及手術(shù)指導(dǎo),特別是對(duì)于緩解我國中西部地區(qū)醫(yī)療資源緊張的情況將會(huì)起到很好的作用[2]。

為了實(shí)現(xiàn)該遠(yuǎn)程協(xié)同手術(shù)指導(dǎo)平臺(tái),本文對(duì)混合現(xiàn)實(shí)中的虛實(shí)場景疊加、交互方式、手術(shù)中患者身高數(shù)據(jù)采集、數(shù)據(jù)傳輸、虛擬場景信息的同步等相關(guān)技術(shù)進(jìn)行了研究[3]。

1 指導(dǎo)平臺(tái)總體設(shè)計(jì)

1.1 設(shè)計(jì)原則

在遠(yuǎn)程協(xié)同指導(dǎo)過程中,虛擬患者是不可缺少的元素?;谠鰪?qiáng)現(xiàn)實(shí)的遠(yuǎn)程手術(shù)指導(dǎo)是將指導(dǎo)醫(yī)生和被指導(dǎo)醫(yī)生置于同一個(gè)增強(qiáng)現(xiàn)實(shí)環(huán)境中[4]。在此環(huán)境中,他們可以看到由手術(shù)室真實(shí)畫面和虛擬患者模型組成的畫面,指導(dǎo)過程則通過指導(dǎo)醫(yī)生對(duì)虛擬患者的姿態(tài)控制及雙方的語音通話完成[5]。為此,遠(yuǎn)程協(xié)同手術(shù)指導(dǎo)平臺(tái)應(yīng)遵循如下原則:

(1) 能逼真的模擬真實(shí)患者。所采用的虛擬患者模型,應(yīng)和真實(shí)患者具有相同或相似的身高、體態(tài)及各關(guān)節(jié)長度,以使其在手術(shù)指導(dǎo)過程中能和真實(shí)患者圖像實(shí)現(xiàn)較好的三維空間上的重疊,使被指導(dǎo)的醫(yī)生可以獲得較精確的姿態(tài)調(diào)整信息。

(2) 可感知對(duì)方的存在和行為。被指導(dǎo)的醫(yī)生需要通過增強(qiáng)現(xiàn)實(shí)場景觀察到指導(dǎo)醫(yī)生的手部動(dòng)作,以判斷操作的具體過程。指導(dǎo)醫(yī)生需要實(shí)時(shí)觀察到被指導(dǎo)醫(yī)生的操作過程和真實(shí)患者的姿態(tài),以調(diào)整自己的指導(dǎo)過程[6]。

(3) 協(xié)同對(duì)象間可進(jìn)行實(shí)時(shí)溝通和交流。除了可通過圖像的方式相互感知對(duì)方,遠(yuǎn)程手術(shù)指導(dǎo)的雙方還可通過語音交流這一最自然的交流方式,進(jìn)行更加充分的交流[7]。

1.2 系統(tǒng)整體框架設(shè)計(jì)

本文采用分層結(jié)構(gòu)思想構(gòu)建該系統(tǒng)平臺(tái)的體系結(jié)構(gòu),如圖1所示。整個(gè)系統(tǒng)采用客戶端/服務(wù)器(Client/Server,C/S)網(wǎng)絡(luò)架構(gòu),通過遠(yuǎn)程服務(wù)器實(shí)現(xiàn)實(shí)習(xí)端和指導(dǎo)端兩個(gè)客戶端的互聯(lián)[8]。在服務(wù)器中,交互層用于用戶賬號(hào)信息、虛擬患者模型的管理、協(xié)同過程中場景信息的同步及雙方語音和視頻數(shù)據(jù)信息的傳輸;數(shù)據(jù)庫用于存儲(chǔ)用戶賬號(hào)信息數(shù)據(jù)、虛擬患者模型數(shù)據(jù)、指導(dǎo)平臺(tái)操作規(guī)則及一些其他的數(shù)據(jù)。在兩個(gè)客戶端中,實(shí)習(xí)端的主要功能為實(shí)現(xiàn)虛擬患者模型和真實(shí)手術(shù)場景的疊加、同指導(dǎo)端進(jìn)行語音通話以及對(duì)真實(shí)患者身高數(shù)據(jù)的采集;指導(dǎo)端除了有虛實(shí)場景疊加和語音通話,還可通過手勢交互的方式對(duì)虛擬患者姿態(tài)進(jìn)行控制。

圖1 遠(yuǎn)程協(xié)同手術(shù)指導(dǎo)平臺(tái)框架結(jié)構(gòu)

2 平臺(tái)硬件與軟件結(jié)構(gòu)

2.1 硬件組成

這里以膝關(guān)節(jié)鏡手術(shù)的虛擬訓(xùn)練與指導(dǎo)為實(shí)例,介紹系統(tǒng)的硬件平臺(tái)搭建,如圖2所示。

圖2 系統(tǒng)硬件組成

從輸入設(shè)備、本地?cái)?shù)據(jù)處理設(shè)備、服務(wù)器、輸出設(shè)備4個(gè)方面, 可以將此硬件平臺(tái)表示為如圖3所示的框架結(jié)構(gòu)。

圖3 系統(tǒng)硬件框架

(1) 輸入設(shè)備。輸入設(shè)備由Kinect、Leap Motion、虛擬膝關(guān)節(jié)鏡手術(shù)交互設(shè)備、Oculus定位儀、陀螺儀[9]及鼠標(biāo)鍵盤組成。其中Oculus定位儀用于定位佩戴者頭部所處的空間位置,它通過對(duì)頭盔表面紅外燈陣列的識(shí)別實(shí)現(xiàn)定位。Oculus陀螺儀內(nèi)置于頭盔中,用于感知使用者頭部的空間旋轉(zhuǎn)角度。鼠標(biāo)鍵盤則用于進(jìn)入手術(shù)訓(xùn)練系統(tǒng)前的用戶賬號(hào)登錄等操作。

(2) 數(shù)據(jù)處理設(shè)備。數(shù)據(jù)處理設(shè)備指本文中的客戶端主機(jī),它是整個(gè)本地客戶端的核心部分,為客戶端系統(tǒng)提供后臺(tái)服務(wù)和對(duì)數(shù)據(jù)的分析、計(jì)算等處理,同時(shí)也是輸入設(shè)備、輸出設(shè)備、遠(yuǎn)程服務(wù)器三者的通信橋梁。

(3) 服務(wù)器。服務(wù)器是各客戶端之間進(jìn)行連接的橋梁,也是實(shí)現(xiàn)遠(yuǎn)程協(xié)同通信的關(guān)鍵部件。本文原型系統(tǒng)開發(fā)階段的服務(wù)器主要用于實(shí)現(xiàn)手術(shù)訓(xùn)練過程中,各客戶端之間音、視頻、場景信息等數(shù)據(jù)的同步以及用戶賬號(hào)的管理。

(4) 輸出設(shè)備。輸出設(shè)備包括Oculus頭盔顯示器、耳機(jī)及主機(jī)顯示器。整個(gè)遠(yuǎn)程協(xié)同手術(shù)系統(tǒng),在從本地輸入設(shè)備和遠(yuǎn)程服務(wù)器獲取到音、視頻及虛擬場景數(shù)據(jù)信息后,經(jīng)過客戶端主機(jī)的數(shù)據(jù)處理,最終會(huì)將所得數(shù)據(jù)以 Oculus雙目立體視覺和聲音的形式呈現(xiàn)在用戶的頭盔顯示器和耳機(jī)中。

2.2 軟件框架

如圖4所示,整個(gè)系統(tǒng)的軟件框架由3層結(jié)構(gòu)組成。底層是由操作系統(tǒng)、 Unity虛擬現(xiàn)實(shí)引擎、 Photon服務(wù)器框架、設(shè)備驅(qū)動(dòng)、開發(fā)應(yīng)用程序編程接口(Application Programming Interface,API)等組成的支撐環(huán)境。中間層是由遠(yuǎn)程協(xié)同通信核心功能模塊組成的遠(yuǎn)程手術(shù)指導(dǎo)系統(tǒng)平臺(tái)。頂層是由膝關(guān)節(jié)鏡手術(shù)相關(guān)的虛擬場景模型、手術(shù)過程規(guī)范、關(guān)節(jié)鏡設(shè)備交互方案等組成一個(gè)應(yīng)用實(shí)例。

圖4 平臺(tái)軟件系統(tǒng)框架

在底層,客戶端相關(guān)功能邏輯主要由Unity引擎進(jìn)行開發(fā),本系統(tǒng)提供了渲染管線、碰撞檢測、場景模型數(shù)據(jù)讀寫、GUI用戶交互界面設(shè)計(jì)等功能。并且本系統(tǒng)中客戶端主機(jī)與Leap Motion、Oculus、Kinect及膝關(guān)節(jié)鏡手術(shù)外設(shè)設(shè)備等硬件的通信也是以Unity為橋梁,并借助相應(yīng)的硬件驅(qū)動(dòng)及開發(fā)API實(shí)現(xiàn)的。而服務(wù)器端與各客戶端的通信則都是運(yùn)用Photon服務(wù)器框架及SQL Server數(shù)據(jù)庫實(shí)現(xiàn)的。另外,本文中客戶端和服務(wù)器端的所有編程及代碼編譯工作都由Microsoft Visual Studio編程工具完成。由于其對(duì).NET開發(fā)平臺(tái)及C#編程語言的原生支持,并且由于Unity虛擬現(xiàn)實(shí)引擎及Photon服務(wù)器框架的底層的都是基于.NET平臺(tái)進(jìn)行開發(fā),使得本文中系統(tǒng)的性能更加穩(wěn)定并且開發(fā)效率更高。

在中間層,是以遠(yuǎn)程協(xié)同通信相關(guān)功能等4個(gè)功能模塊的研究和實(shí)現(xiàn)為基礎(chǔ)開發(fā)的系統(tǒng)平臺(tái)。

在頂層是本文基于中間層系統(tǒng)平臺(tái)開發(fā)的虛擬膝關(guān)節(jié)鏡手術(shù)訓(xùn)練指導(dǎo)應(yīng)用實(shí)例。該系統(tǒng)中的應(yīng)用實(shí)例層是可擴(kuò)展的。即可以基于中間層系統(tǒng)平臺(tái)中的核心功能模塊開發(fā)出其它手術(shù)訓(xùn)練應(yīng)用實(shí)例[10],如:眼科手術(shù)、腹腔鏡手術(shù)等。

3 遠(yuǎn)程協(xié)同手術(shù)指導(dǎo)關(guān)鍵支撐技術(shù)

3.1 虛擬患者模型骨骼綁定

在本系統(tǒng)中的遠(yuǎn)程手術(shù)指導(dǎo)過程中,指導(dǎo)醫(yī)生需要通過調(diào)整虛擬患者模型的體位和膝部姿態(tài),以使膝關(guān)節(jié)腔的形狀滿足內(nèi)窺鏡等手術(shù)器械的最佳入刀位置,從而為實(shí)習(xí)端醫(yī)生做出正確示范。因此在本系統(tǒng)中的患者模型必須是一個(gè)可發(fā)生網(wǎng)格形變且各個(gè)關(guān)節(jié)可以靈活運(yùn)動(dòng)的模型,這就需要在人體視覺模型的基礎(chǔ)上對(duì)其進(jìn)行骨骼綁定。

骨骼綁定是在三維交互和虛擬現(xiàn)實(shí)領(lǐng)域常用的一種對(duì)于需要進(jìn)行姿態(tài)變換的人物模型進(jìn)行的附加操作。視覺模型即為一個(gè)不可變形的表面網(wǎng)格體,因此想要在交互過程中對(duì)本文中患者模型的動(dòng)作、姿態(tài)進(jìn)行控制,就需要通過骨骼綁定,給視覺模型中的每一個(gè)需要運(yùn)動(dòng)的關(guān)節(jié)點(diǎn)(如:膝關(guān)節(jié)、脊椎、手臂)生成相對(duì)應(yīng)的有6個(gè)空間自由度的坐標(biāo)點(diǎn)。

在骨骼綁定過程中,首先需要在3ds max中對(duì)可能發(fā)生運(yùn)動(dòng)的關(guān)節(jié)部位創(chuàng)建骨骼,骨骼創(chuàng)建應(yīng)盡量模擬真實(shí)的人體骨骼的形態(tài),但也要兼顧到手術(shù)仿真系統(tǒng)的性能,更多的骨骼關(guān)節(jié)點(diǎn)意味著更大的性能消耗。在滿足交互需求的前提下,可簡化骨骼創(chuàng)建的個(gè)數(shù)而只創(chuàng)建關(guān)鍵關(guān)節(jié)。如:人體脊柱有33塊脊椎骨,它們都屬于半活動(dòng)關(guān)節(jié),運(yùn)動(dòng)幅度并不大,可以將其關(guān)節(jié)數(shù)量減為3個(gè)。如圖5所示,為患者視覺模型及創(chuàng)建好的與其相匹配的人體骨骼。骨骼創(chuàng)建完成之后,需要與模型進(jìn)行相連,也叫做骨骼蒙皮。在此階段,通過3ds max自動(dòng)完成模型與骨骼的綁定,并默認(rèn)每個(gè)關(guān)節(jié)點(diǎn)對(duì)周圍模型各頂點(diǎn)具有一定權(quán)重的控制,控制權(quán)重值為0~1。1為完全連帶關(guān)系,0則相反。蒙皮之后模型的每個(gè)頂點(diǎn)都和周圍若干個(gè)骨骼關(guān)節(jié)點(diǎn)產(chǎn)生不同程度的連帶關(guān)系,即每個(gè)關(guān)節(jié)點(diǎn)的移動(dòng)都會(huì)不同程度地影響周圍模型頂點(diǎn)的位置。

3.2 虛實(shí)場景疊加

本文采用leap motion和虛擬現(xiàn)實(shí)頭盔oculus相結(jié)合的方式,實(shí)現(xiàn)場景的虛實(shí)疊加。Leap motion(見圖6)兩顆廣角紅外攝像頭,可獲取真實(shí)世界的立體灰階圖像。將leap motion獲得的雙目真實(shí)場景圖像,和虛擬患者三維模型實(shí)時(shí)疊加,輸出到oculus頭盔,即可使用戶觀察到虛擬和現(xiàn)實(shí)場景相疊加的畫面。

圖6 Leap Motion硬件結(jié)構(gòu)

圖像的疊加需要通過Leap Motion SDK中提供frame.images()函數(shù)獲取兩個(gè)紅外攝像機(jī)生成的200 F/s原生圖像,并將其與虛擬患者模型在增強(qiáng)現(xiàn)實(shí)場景中實(shí)現(xiàn)疊加。首先需要將虛擬患者模型加載到虛擬場景中,并將其初始化位置設(shè)定在兩個(gè)虛擬相機(jī)中間點(diǎn)連線的y軸正前方,如圖7所示。之后,還需要通過設(shè)置渲染層級(jí)屬性將虛擬患者的渲染層級(jí)置于矩形面片之前這樣場景運(yùn)行時(shí),虛擬患者畫面始終先于矩形面片上的雙目圖像被渲染,從而可以防止錯(cuò)誤的遮擋關(guān)系出現(xiàn)。

圖7 虛擬患者在場景中的放置

如圖8所示,經(jīng)過增強(qiáng)現(xiàn)實(shí)場景的搭建,并在其基礎(chǔ)之上將Leap Motion雙目圖像和虛擬患者三維模型分別在同一虛擬相機(jī)中疊加渲染,實(shí)現(xiàn)了虛實(shí)場景的疊加。

圖8 虛擬患者和真實(shí)場景的疊加

3.3 徒手交互及設(shè)備誤差校正

本系統(tǒng)采用以Leap Motion的徒手交互作為主要交互方式,主要考慮到增強(qiáng)現(xiàn)實(shí)設(shè)備的應(yīng)用不同于普通的二維平面應(yīng)用程序,用戶體驗(yàn)到的是一個(gè)真實(shí)世界和虛擬三維相疊加的空間,因此與之相對(duì)應(yīng)的虛擬空間交互方式也應(yīng)與現(xiàn)實(shí)世界中相似,這樣才能大大的提升用戶的交互體驗(yàn)和沉浸感。

要實(shí)現(xiàn)Leap Motion的徒手交互,首先需要獲取手部運(yùn)動(dòng)追蹤數(shù)據(jù)。這個(gè)過程可通過Leap Motion API為開發(fā)者提供的用于獲取追蹤數(shù)據(jù)的函數(shù)來實(shí)現(xiàn)。如通過調(diào)用Leap命名空間下的hand.PalmPostion()函數(shù),可獲取手掌的位置信息。

同時(shí),由于Leap Motion設(shè)備在安裝到Oculus上時(shí)難免發(fā)生角度以及位移的偏差,并且Leap Motion還使用了與Unity引擎不同的右手坐標(biāo)系,這使得通過調(diào)用Leap Motion API所得到的初始追蹤數(shù)據(jù)不能被直接同步給虛擬手模型,而需要通過測出相應(yīng)的裝置角度和位置偏差并對(duì)其進(jìn)行相應(yīng)的數(shù)據(jù)轉(zhuǎn)換。本系統(tǒng)中對(duì)用戶手部動(dòng)作的追蹤是通過安裝于Oculus頭盔正前方的Leap Motion來實(shí)現(xiàn)的。因此,安裝位置的偏差量將會(huì)直接影響追蹤數(shù)據(jù)的精度。如圖9所示,在將Leap Motion綁定到Oculus正前面后,理論上應(yīng)當(dāng)使Leap Motion的原點(diǎn)位于設(shè)備佩戴者兩個(gè)瞳孔中間點(diǎn)的正前方8 cm處,同時(shí)上下位置與Oculus視點(diǎn)保持一致。如果安裝時(shí)出現(xiàn)誤差則需要對(duì)其進(jìn)行測量,并在后續(xù)進(jìn)行補(bǔ)償。

圖9 Leap Motion標(biāo)準(zhǔn)安裝位置

3.4 患者身高數(shù)據(jù)采集

在進(jìn)行增強(qiáng)現(xiàn)實(shí)(Augmented Reality,AR)手術(shù)指導(dǎo)過程中,由于真實(shí)患者的身高各不相同,為了實(shí)現(xiàn)其和虛擬患者各關(guān)節(jié)在混合現(xiàn)實(shí)設(shè)備中的準(zhǔn)確疊加,以使實(shí)習(xí)端醫(yī)生能對(duì)真實(shí)患者進(jìn)行更為精確的姿態(tài)調(diào)整,必須在手術(shù)指導(dǎo)開始前根據(jù)真實(shí)患者的身高對(duì)虛擬患者身高進(jìn)行自動(dòng)調(diào)整,使其相互匹配。同時(shí),為了提高手術(shù)效率和數(shù)據(jù)精度,最佳的方式是可以由系統(tǒng)對(duì)身高數(shù)據(jù)自動(dòng)進(jìn)行采集并將其分別同步給實(shí)習(xí)端和指導(dǎo)端的虛擬患者,而不是由實(shí)習(xí)醫(yī)生手動(dòng)測量并輸入系統(tǒng)。因此,考慮借助Kinect深度相機(jī)并通過適當(dāng)算法來對(duì)患者身高數(shù)據(jù)進(jìn)行檢測。

利用Kinect的視場角并結(jié)合一些三角形幾何運(yùn)算,可以較精確的測量出人體身高。該身高測量方法的基本原理為,通過實(shí)時(shí)獲取Kinect深度相機(jī)所獲取的空間點(diǎn)三維數(shù)據(jù)并將其轉(zhuǎn)化為空間點(diǎn)云信息,之后以此進(jìn)行身高估算測量。首先,Kinect深度相機(jī)的水平視場角和垂直視場角分別為57°和43°。因此,可以根據(jù)圖10所示的原理,并結(jié)合上一步中所計(jì)算出的深度值,對(duì)患者的實(shí)際高度進(jìn)行測量。

圖10 身高測試原理圖

由于在使用Kinect對(duì)患者身高進(jìn)行測量時(shí),患者是躺在手術(shù)臺(tái)上的,因此d為其到Kinect的實(shí)際距離;θ為攝像頭水平視場角的1/2;Hr是待測量的患者實(shí)際身高;Hp為已檢測到的人體像素高度;Hb為Kinect深度圖像的像素高度。具體運(yùn)算公式如下:

b=d×tanθ

通過上述方法,可以最終計(jì)算出真實(shí)患者較精確的身高值。其中,實(shí)際深度值d的計(jì)算,是通過將患者人體所在深度像元的深度值取平均值獲得。這是因?yàn)槿梭w是凹凸不平的,需要通過取平均值的方式對(duì)距離進(jìn)行平均化,以使測量數(shù)據(jù)更為準(zhǔn)確。

3.5 數(shù)據(jù)傳輸

3.5.1 音頻數(shù)據(jù)傳輸

本文開發(fā)的是一個(gè)原型系統(tǒng),同時(shí)在線用戶量并不會(huì)很大,不會(huì)對(duì)服務(wù)器造成太大壓力,因此采用單服C/S架構(gòu)。即服務(wù)器端所有邏輯,均在一臺(tái)服務(wù)器主機(jī)上完成。其大致結(jié)構(gòu)如圖11所示,屬于星型網(wǎng)絡(luò)結(jié)構(gòu)[11]。在這種網(wǎng)絡(luò)框架下的遠(yuǎn)程音頻傳輸?shù)膶?shí)現(xiàn)過程可大致描述為:客戶端1對(duì)音頻信號(hào)進(jìn)行采集并序列化處理,將其發(fā)送給服務(wù)器。通過服務(wù)器的實(shí)時(shí)廣播功能,將此音頻信號(hào)同步給其他需要接收的音頻信號(hào)的客戶端,如客戶端2和客戶端3,服務(wù)器在此充當(dāng)數(shù)據(jù)中轉(zhuǎn)站功能。接收到音頻信號(hào)的客戶端2和客戶端3會(huì)對(duì)其反序列化并進(jìn)行實(shí)時(shí)播放。

圖11 本系統(tǒng)C/S架構(gòu)圖

在本系統(tǒng)中,音頻信號(hào)的傳輸主要是為了讓用戶可以方便的進(jìn)行遠(yuǎn)程的實(shí)時(shí)語音通話。客戶端音頻數(shù)據(jù)的采集需要借助Unity官方API中的Microphone和Audio Clip兩個(gè)類來完成。其中Microphone類中,Unity提供了獲取本地麥克風(fēng)設(shè)備devices(),開始錄音Start(),停止錄音End(),獲得錄音樣本位置GetPosition()等函數(shù)。通過它來獲取本地錄音設(shè)備并控制音頻輸入流通道的建立和關(guān)閉。獲取到的音頻數(shù)據(jù)將以AudioClip類的實(shí)例化對(duì)象形式存儲(chǔ)起來,并通過錄音數(shù)據(jù)壓縮將其通過服務(wù)器發(fā)送給指導(dǎo)端或?qū)嵙?xí)端。另一端接收數(shù)據(jù)后,同樣通過音頻數(shù)據(jù)的解壓并將其播放出來。其中,數(shù)據(jù)壓縮和解壓的過程通過Zlib壓縮算法完成。

3.5.2 視頻數(shù)據(jù)傳輸

視頻信號(hào)的傳輸主要是為了讓指導(dǎo)醫(yī)生端可以通過頭盔顯示器實(shí)時(shí)的看到虛擬患者和通過實(shí)習(xí)端混合現(xiàn)實(shí)頭盔拍攝的真實(shí)患者圖像相疊加的畫面。獲取真實(shí)患者圖像是為了讓指導(dǎo)端醫(yī)生判斷處于實(shí)習(xí)端的真實(shí)患者姿態(tài)是否符合膝關(guān)節(jié)鏡手術(shù)的要求,如不符合就會(huì)通過Leap Motion徒手交互方式調(diào)節(jié)與之疊加的虛擬患者姿態(tài),并且此調(diào)節(jié)過程可以被實(shí)習(xí)端醫(yī)生通過混合現(xiàn)實(shí)頭盔實(shí)時(shí)的觀察到,實(shí)習(xí)醫(yī)生只需要將躺在手術(shù)臺(tái)上的真實(shí)患者姿態(tài)調(diào)整為和虛擬患者重合即可。

視頻傳輸?shù)拇笾略O(shè)計(jì)思路,如圖12所示。在實(shí)習(xí)醫(yī)生客戶端,通過訪問Leap Motion API,從其中獲取位圖格式的實(shí)時(shí)視頻幀數(shù)據(jù),然后通過Divx編碼器對(duì)視

圖12 視頻傳輸流程

頻幀進(jìn)行壓縮。DivX是一項(xiàng)視頻壓縮技術(shù)[12],可將視頻圖像壓縮至原來的10%,非常適合于網(wǎng)絡(luò)視頻傳輸中的壓縮與解壓縮。之后數(shù)據(jù)被傳輸給Photon服務(wù)器并通過服務(wù)器中轉(zhuǎn)給待接收的指導(dǎo)端。接收到視頻幀的指導(dǎo)端同樣需要通過DivX對(duì)其進(jìn)行實(shí)時(shí)解壓,最后通過Oculus頭盔實(shí)現(xiàn)視頻顯示。

3.5.3 虛擬場景信息同步

虛擬場景信息的同步包括虛擬患者身體姿態(tài)信息及指導(dǎo)醫(yī)生虛擬模型手的姿態(tài)信息同步[13]。要實(shí)現(xiàn)虛擬場景的信息同步,需要選擇適當(dāng)?shù)挠糜趥鬏攬鼍靶畔⒌膫鬏攨f(xié)議,本文中虛擬場景信息同步環(huán)節(jié)的傳輸協(xié)議將選用JSON。

在本系統(tǒng)中,需要進(jìn)行實(shí)時(shí)同步的場景信息主要是用指導(dǎo)醫(yī)生雙手的Leap Motion虛擬手模型、虛擬患者模型的動(dòng)作信息[14]。以Leap Motion虛擬手為例,如圖13所示,需要同步的信息為模型各關(guān)節(jié)點(diǎn)局部坐標(biāo)系相對(duì)于世界坐標(biāo)的空間6個(gè)自由度坐標(biāo)值。在此手部模型中一共有16個(gè)關(guān)節(jié)點(diǎn),可以將其信息通過一個(gè)復(fù)合JSON對(duì)象描述出來。

圖13 Leap Motion虛擬手關(guān)節(jié)點(diǎn)局部坐標(biāo)系

具體代碼如下:{

"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對(duì)象即為虛擬手模型數(shù)據(jù)的傳輸模型。對(duì)象中的最外層為手指名稱和一個(gè)復(fù)合型JSON數(shù)組組成的變量。數(shù)組值又由3個(gè)復(fù)合型對(duì)象組成,每個(gè)對(duì)象分別存放:手指關(guān)節(jié)名、在虛擬世界坐標(biāo)系中的空間坐標(biāo)值、繞世界坐標(biāo)系X、Y、Z3個(gè)坐標(biāo)軸的旋轉(zhuǎn)角度,關(guān)節(jié)點(diǎn)對(duì)象中的數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)類型見表1。同時(shí),由于此傳輸模型內(nèi)容較多,因此在上述復(fù)合JSON對(duì)象中,只列出了其中的拇指和食指的JSON模型數(shù)據(jù),之后的中指、無名指、小拇指以及手掌、前臂等予以省略。通過復(fù)合JSON對(duì)象即可實(shí)現(xiàn)虛擬場景數(shù)據(jù)的在實(shí)習(xí)端和指導(dǎo)端之間的同步。

表1 各關(guān)節(jié)點(diǎn)的JSON對(duì)象數(shù)據(jù)結(jié)構(gòu)

4 應(yīng)用實(shí)例及分析

如圖14(a)所示,在遠(yuǎn)程協(xié)同手術(shù)指導(dǎo)平臺(tái)中,當(dāng)指導(dǎo)端醫(yī)生和實(shí)習(xí)端醫(yī)生創(chuàng)建協(xié)同組并實(shí)現(xiàn)互聯(lián)后,系統(tǒng)會(huì)在場景初始化階段自動(dòng)激活架設(shè)在手術(shù)臺(tái)旁的Kinect對(duì)真實(shí)患者身高進(jìn)行檢測,并將此數(shù)據(jù)同步給實(shí)習(xí)端和指導(dǎo)端的虛擬患者模型,以使其身高尺寸同真實(shí)患者相匹配。圖14(b)為同步后的虛擬患者同真實(shí)患者疊加后的圖像,從混合現(xiàn)實(shí)頭盔視角觀察,其和真實(shí)患者在三維空間中實(shí)現(xiàn)了較好的疊加。圖14(c)和14(d)則是從手術(shù)臺(tái)正上方角度觀察真實(shí)患者,以及通過混合現(xiàn)實(shí)頭盔從該角度觀察到的虛實(shí)患者疊加情況。

(a) Kinect患者身高檢測(b) 虛實(shí)患者疊加畫面1

(c) 患者真實(shí)畫面(d) 虛實(shí)患者疊加畫面2

如圖15(a)所示,指導(dǎo)端醫(yī)生開始通過Leap Motion徒手交互的方式調(diào)整虛擬患者膝關(guān)節(jié)姿態(tài),為實(shí)習(xí)端醫(yī)生做出膝關(guān)節(jié)鏡手術(shù)術(shù)前姿態(tài)調(diào)整的示范。圖15(b)為指導(dǎo)端醫(yī)生混合現(xiàn)實(shí)頭盔中呈現(xiàn)的虛實(shí)患者疊加畫面,其中的真實(shí)患者背景畫面為通過網(wǎng)絡(luò)從實(shí)習(xí)端醫(yī)生Leap Motion雙目攝像頭實(shí)時(shí)傳輸過來的,用于讓指導(dǎo)端醫(yī)生判斷處于異地的實(shí)習(xí)端手術(shù)現(xiàn)場狀況。同時(shí),指導(dǎo)端醫(yī)生通過驅(qū)動(dòng)虛擬場景中的Leap Motion虛擬手調(diào)整虛擬患者姿態(tài)。

(a) 指導(dǎo)端操作實(shí)景(b) 指導(dǎo)端虛實(shí)疊加畫面

如圖16(a)和16(b)所示,當(dāng)實(shí)習(xí)端醫(yī)生接收到通過網(wǎng)絡(luò)實(shí)時(shí)同步的指導(dǎo)端虛擬患者姿態(tài)后,便可以此為依據(jù)對(duì)真實(shí)患者膝關(guān)節(jié)姿態(tài)進(jìn)行調(diào)整,并從各角度觀察其和虛擬患者膝關(guān)節(jié)姿態(tài)是否完全疊加。如圖16(c)和16(d)所示,實(shí)習(xí)端醫(yī)生已將兩者空間位置調(diào)整為完全重合,說明此姿態(tài)已符合指導(dǎo)端醫(yī)生標(biāo)準(zhǔn)。

(a) 實(shí)習(xí)端操作實(shí)景(b) 實(shí)習(xí)端虛實(shí)疊加畫面1

(c) 實(shí)習(xí)端操作實(shí)景(d) 實(shí)習(xí)端虛實(shí)疊加畫面2

5 結(jié) 語

遠(yuǎn)程協(xié)同手術(shù)指導(dǎo)平臺(tái)是一個(gè)集三維手術(shù)操作演示、語音視頻溝通于一體的手術(shù)培訓(xùn)及指導(dǎo)系統(tǒng)[15]。它的實(shí)現(xiàn)可以讓醫(yī)生進(jìn)行異地遠(yuǎn)程的醫(yī)療手術(shù)培訓(xùn)及手術(shù)指導(dǎo),可以部分緩解我國中西部兌取醫(yī)療及手術(shù)資源緊張的問題[16]。同時(shí),將本系統(tǒng)將增強(qiáng)現(xiàn)實(shí)技術(shù)、遠(yuǎn)程協(xié)同技術(shù)與虛擬手術(shù)相結(jié)合,也是對(duì)將虛擬現(xiàn)實(shí)技術(shù)應(yīng)用到醫(yī)療領(lǐng)域的一種全新嘗試。該模式可以被擴(kuò)展到多種手術(shù)的遠(yuǎn)程指導(dǎo)中,如:眼科手術(shù)、腹腔鏡手術(shù),甚至可以用于汽車發(fā)動(dòng)機(jī)維修等各種非醫(yī)療領(lǐng)域。

猜你喜歡
客戶端遠(yuǎn)程服務(wù)器
讓人膽寒的“遠(yuǎn)程殺手”:彈道導(dǎo)彈
軍事文摘(2022年20期)2023-01-10 07:18:38
遠(yuǎn)程工作狂綜合征
英語文摘(2021年11期)2021-12-31 03:25:18
通信控制服務(wù)器(CCS)維護(hù)終端的設(shè)計(jì)與實(shí)現(xiàn)
遠(yuǎn)程詐騙
縣級(jí)臺(tái)在突發(fā)事件報(bào)道中如何應(yīng)用手機(jī)客戶端
孵化垂直頻道:新聞客戶端新策略
基于Vanconnect的智能家居瘦客戶端的設(shè)計(jì)與實(shí)現(xiàn)
電子測試(2018年10期)2018-06-26 05:53:34
得形忘意的服務(wù)器標(biāo)準(zhǔn)
計(jì)算機(jī)網(wǎng)絡(luò)安全服務(wù)器入侵與防御
客戶端空間數(shù)據(jù)緩存策略
德昌县| 万安县| 红原县| 石屏县| 桂平市| 杭州市| 吉隆县| 慈溪市| 桃江县| 五台县| 延津县| 湟中县| 平潭县| 明光市| 柘荣县| 澄迈县| 广东省| 茶陵县| 安丘市| 亳州市| 乐平市| 偏关县| 仲巴县| 松原市| 甘谷县| 新宁县| 洮南市| 名山县| 漳浦县| 扎囊县| 海伦市| 仙桃市| 会宁县| 平阳县| 犍为县| 曲阳县| 汶上县| 裕民县| 离岛区| 南宫市| 庄浪县|