一種虛擬手術(shù)模擬過(guò)程的錄制、回放方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明是關(guān)于一種虛擬手術(shù)數(shù)據(jù)的處理技術(shù),具體地,是關(guān)于一種虛擬手術(shù)模擬 過(guò)程的錄制、回放方法及裝置。
【背景技術(shù)】
[0002] 虛擬手術(shù)是利用醫(yī)學(xué)影像數(shù)據(jù),使用虛擬現(xiàn)實(shí)技術(shù)在計(jì)算機(jī)中建立虛擬環(huán)境,使 醫(yī)生能夠借助虛擬環(huán)境中的信息進(jìn)行手術(shù)計(jì)劃、訓(xùn)練,以及實(shí)際手術(shù)中引導(dǎo)手術(shù)的技術(shù)。采 用虛擬現(xiàn)實(shí)技術(shù)來(lái)虛擬手術(shù)環(huán)境,可以使醫(yī)務(wù)工作者沉浸于虛擬的場(chǎng)景內(nèi),可以通過(guò)視、 聽(tīng)、觸覺(jué)感知并學(xué)習(xí)各種手術(shù)實(shí)際操作,體驗(yàn)并學(xué)習(xí)如何應(yīng)付臨床手術(shù)中的實(shí)際情況。這樣 節(jié)約了培訓(xùn)醫(yī)務(wù)人員的費(fèi)用和時(shí)間,使非熟練人員進(jìn)行手術(shù)的風(fēng)險(xiǎn)性大大降低,對(duì)提高醫(yī) 學(xué)教育與訓(xùn)練的效率和質(zhì)量以及改善醫(yī)學(xué)手術(shù)水平的發(fā)展不平衡的現(xiàn)狀有著特殊的意義。
[0003] 目前的虛擬手術(shù)過(guò)程錄制方法主要有以下三種:
[0004] (1)屏幕錄像軟件。
[0005] 該方法在進(jìn)行模擬手術(shù)過(guò)程之前,先打開(kāi)CamStudio、Camtasia Studio等屏幕錄 像軟件,對(duì)整個(gè)屏幕進(jìn)行錄制。
[0006] 此方法存在的缺陷如下:首先,這種方法不僅操作繁瑣復(fù)雜,不符合用戶習(xí)慣,同 時(shí)也增加了虛擬手術(shù)模擬軟件對(duì)第三方軟件(屏幕錄制軟件)的依賴性,極大地增加了虛 擬手術(shù)模擬環(huán)境搭建的復(fù)雜度和工程量。其次,該方法對(duì)屏幕的錄制需要占用較大的系統(tǒng) 資源,會(huì)對(duì)虛擬手術(shù)本身的模擬過(guò)程產(chǎn)生影響,具體體現(xiàn)在模擬幀率的大幅度下降,極大地 損害了手術(shù)本身的模擬體驗(yàn)。最后,該方法的本質(zhì)是以某幀率從幀緩沖區(qū)提取屏幕截圖并 進(jìn)行視頻轉(zhuǎn)碼輸出通用的視頻格式(通常為avi格式)。因此采用該方法對(duì)模擬手術(shù)過(guò)程 的錄制,實(shí)際上是手術(shù)過(guò)程中整個(gè)屏幕上所有變化的錄制,因此會(huì)記錄大量與虛擬手術(shù)界 面無(wú)關(guān)的冗余信息。
[0007] (2)從圖形API (應(yīng)用程序編程接口)幀緩沖區(qū)提取圖像進(jìn)行錄制。
[0008] 虛擬手術(shù)為了提高場(chǎng)景渲染的真實(shí)度和用戶的視覺(jué)沉浸感,通常采用圖形 API (OpenGL或DirectX)進(jìn)行手術(shù)場(chǎng)景和模型的繪制。為了生成動(dòng)態(tài)、連續(xù)的畫面效果,此 類圖形API具有前后兩個(gè)幀緩沖區(qū)分別進(jìn)行在線(On-Screen)顯示和離屏(Off-Screen) 渲染。該方法以一定頻率從幀緩沖區(qū)中提取連續(xù)圖像,或者進(jìn)行視頻編碼進(jìn)行通用文件格 式輸出,或者保存到硬盤中作回放時(shí)使用(以一定幀率重新顯示保存的圖像)。
[0009] 此方法存在的弊端在于:提取的原始圖像通常體積較大,若不加處理進(jìn)行保存,對(duì) 存儲(chǔ)空間的消耗極大。通過(guò)實(shí)時(shí)壓縮的方式減少圖像空間占用,會(huì)對(duì)虛擬手術(shù)模擬的實(shí)時(shí) 性產(chǎn)生影響,導(dǎo)致模擬幀率的降低。通過(guò)降低圖像質(zhì)量的方式減少空間占用,會(huì)降低回放時(shí) 的畫面質(zhì)量,導(dǎo)致用戶體驗(yàn)的下降。因此,該方法通常會(huì)面臨畫面質(zhì)量、存儲(chǔ)空間以及模擬 效率三者之間的取舍,無(wú)法同時(shí)進(jìn)行優(yōu)化。
[0010] (3)通過(guò)記錄每幀的渲染狀態(tài)進(jìn)行錄制。
[0011] 虛擬手術(shù)場(chǎng)景在渲染過(guò)程中,圖形API和場(chǎng)景中的物體存在逐幀變化的"渲染狀 態(tài)",通常包括變換矩陣狀態(tài)、模型形變狀態(tài)等等。該方法通過(guò)保存渲染過(guò)程中每幀的渲染 狀態(tài),間接記錄模擬過(guò)程的每幀畫面?;胤艜r(shí),通過(guò)逐幀恢復(fù)先前保存的渲染狀態(tài),實(shí)現(xiàn)手 術(shù)過(guò)程的畫面回放。
[0012] 此方法存在的問(wèn)題主要有:其空間占用和時(shí)間效率與虛擬手術(shù)場(chǎng)景的復(fù)雜度成正 比。場(chǎng)景的復(fù)雜度越高,動(dòng)態(tài)模型數(shù)量越大,每幀需要保存的渲染狀態(tài)越多,所占用的系統(tǒng) 資源就越大。因此,該方法局限性較大,只適用于虛擬手術(shù)場(chǎng)景相對(duì)簡(jiǎn)單的應(yīng)用場(chǎng)合。
【發(fā)明內(nèi)容】
[0013] 本發(fā)明實(shí)施例的主要目的在于提供一種虛擬手術(shù)模擬過(guò)程的錄制、回放方法及裝 置,以實(shí)現(xiàn)針對(duì)性強(qiáng)、資源占用少、畫面質(zhì)量好、占用空間少、無(wú)冗余數(shù)據(jù)的虛擬手術(shù)模擬過(guò) 程錄制和回放步驟。
[0014] 為了實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供一種虛擬手術(shù)模擬過(guò)程的錄制、回放方法, 所述的虛擬手術(shù)模擬過(guò)程的錄制、回放方法包括:事件預(yù)分類步驟:獲取不同手術(shù)類型中 的多個(gè)操作信號(hào),將每一所述操作信號(hào)抽象為一響應(yīng)事件,并將所述響應(yīng)事件映射至一包 含多個(gè)整數(shù)標(biāo)識(shí)的整數(shù)集中,所述響應(yīng)事件與所述整數(shù)標(biāo)識(shí)一一對(duì)應(yīng);錄制步驟:存儲(chǔ)初 始場(chǎng)景狀態(tài),依次獲取當(dāng)前手術(shù)類型的多個(gè)所述操作信號(hào),同時(shí)根據(jù)獲取的所述操作信號(hào) 查詢并存儲(chǔ)與所述當(dāng)前手術(shù)類型的多個(gè)所述操作信號(hào)分別對(duì)應(yīng)的多個(gè)整數(shù)標(biāo)識(shí);根據(jù)存 儲(chǔ)的多個(gè)整數(shù)標(biāo)識(shí)及所述的初始場(chǎng)景狀態(tài)生成錄制片段;回放步驟:獲取所述初始場(chǎng)景狀 態(tài),按存儲(chǔ)順序依次獲取所述錄制片段中的多個(gè)整數(shù)標(biāo)識(shí),同時(shí)根據(jù)獲取的整數(shù)標(biāo)識(shí)及所 述的初始場(chǎng)景狀態(tài)進(jìn)行響應(yīng)、渲染,生成并顯示新的場(chǎng)景狀態(tài)。
[0015] 在一實(shí)施例中,上述的錄制步驟包括:步驟a :初始化錄制定時(shí)器,設(shè)置所述錄制 定時(shí)器的錄制刷新頻率及錄制觸發(fā)時(shí)刻;所述的錄制定時(shí)器用于將連續(xù)的時(shí)間離散成固定 長(zhǎng)度的錄制時(shí)間片段,所述錄制時(shí)間片段的長(zhǎng)度為各錄制觸發(fā)時(shí)刻之間的錄制定時(shí)間隔; 步驟b :接收一開(kāi)始錄制信號(hào),根據(jù)所述的開(kāi)始錄制信號(hào)進(jìn)行錄制;步驟c :存儲(chǔ)所述的初始 場(chǎng)景狀態(tài)于一標(biāo)準(zhǔn)庫(kù)容器中,所述初始場(chǎng)景狀態(tài)包括:獲取所述初始場(chǎng)景狀態(tài)時(shí)的模型狀 態(tài)及渲染狀態(tài);步驟d :獲取當(dāng)前錄制觸發(fā)時(shí)刻的操作信號(hào);
[0016] 步驟e :從所述整數(shù)集中查詢并獲取所述當(dāng)前錄制觸發(fā)時(shí)刻的操作信號(hào)對(duì)應(yīng)的整 數(shù)標(biāo)識(shí),并存儲(chǔ)獲取的整數(shù)標(biāo)識(shí)于所述的標(biāo)準(zhǔn)庫(kù)容器中;步驟f :在所述錄制定時(shí)器的下一 個(gè)錄制觸發(fā)時(shí)刻,返回執(zhí)行所述的步驟d?步驟f,直至所述步驟d中獲取的操作信號(hào)為錄 制結(jié)束信號(hào)時(shí),從所述整數(shù)集中查詢并獲取所述錄制結(jié)束信號(hào)在所述整數(shù)集中對(duì)應(yīng)的錄制 結(jié)束整數(shù)標(biāo)識(shí),并存儲(chǔ)所述錄制結(jié)束整數(shù)標(biāo)識(shí)于所述的標(biāo)準(zhǔn)庫(kù)容器中;步驟g :根據(jù)存儲(chǔ)的 多個(gè)整數(shù)標(biāo)識(shí)、錄制結(jié)束整數(shù)標(biāo)識(shí)及所述的初始場(chǎng)景狀態(tài)生成所述錄制片段。
[0017] 在一實(shí)施例中,上述錄制步驟的錄制幀率與所述錄制刷新頻率的關(guān)系通過(guò)以下公 式表示:m/f = 1000,其中,m為所述的錄制幀率,f為所述的錄制刷新頻率。
[0018] 在一實(shí)施例中,當(dāng)在所述錄制定時(shí)器的錄制觸發(fā)時(shí)刻并無(wú)所述操作信號(hào)時(shí),所述 響應(yīng)事件為空事件,所述的空事件與所述整數(shù)集中的整數(shù)標(biāo)識(shí)0相對(duì)應(yīng)。
[0019] 在一實(shí)施例中,上述的回放步驟包括:步驟h :初始化回放定時(shí)器,設(shè)置所述回放 定時(shí)器的回放刷新頻率及回放觸發(fā)時(shí)刻;所述回放定時(shí)器用于將連續(xù)的時(shí)間離散成固定 長(zhǎng)度的回放時(shí)間片段,所述回放時(shí)間片段的長(zhǎng)度為各所述回放觸發(fā)時(shí)刻之間的回放定時(shí)間 隔;步驟i:接收一開(kāi)始回放信號(hào),根據(jù)所述開(kāi)始回放信號(hào)進(jìn)行回放;步驟j:將回放開(kāi)始時(shí) 的場(chǎng)景狀態(tài)壓棧保存至預(yù)設(shè)的堆棧數(shù)據(jù)結(jié)構(gòu)中;步驟k:從所述標(biāo)準(zhǔn)庫(kù)容器中獲取所述的 初始場(chǎng)景狀態(tài);步驟1 :在所述回放定時(shí)器的當(dāng)前的回放觸發(fā)時(shí)刻,獲取存儲(chǔ)于所述標(biāo)準(zhǔn)庫(kù) 容器中的一整數(shù)標(biāo)識(shí);步驟m :判斷所述步驟1中獲取的整數(shù)標(biāo)識(shí)是否為錄制結(jié)束整數(shù)標(biāo) 識(shí);若否,根據(jù)獲取的整數(shù)標(biāo)識(shí)所對(duì)應(yīng)的響應(yīng)事件及待響應(yīng)場(chǎng)景狀態(tài)響應(yīng)生成響應(yīng)場(chǎng)景狀 態(tài),并渲染所述的響應(yīng)場(chǎng)景狀態(tài),生成并顯示所述新的場(chǎng)景狀態(tài),所述回放定時(shí)器更新至下 一個(gè)回放觸發(fā)時(shí)刻,將所述的待響應(yīng)場(chǎng)景狀態(tài)更新為所述的新的場(chǎng)景狀態(tài),并返回執(zhí)行所 述的步驟1 ;若是,從所述堆棧數(shù)據(jù)結(jié)構(gòu)中獲取并顯示所述的回放開(kāi)始時(shí)的場(chǎng)景狀態(tài);其 中,在所述回放定時(shí)器的第一個(gè)回放觸發(fā)時(shí)刻,所述的待響應(yīng)場(chǎng)景狀態(tài)為所述的初始場(chǎng)景 狀態(tài);其中,所述步驟1中,在不同的回放觸發(fā)時(shí)刻,按所述錄制片段中整數(shù)標(biāo)識(shí)的存儲(chǔ)順 序,依次獲取一所述的整數(shù)標(biāo)識(shí)。
[0020] 在一實(shí)施例中,在所述回放定時(shí)器的其中一回放觸發(fā)時(shí)刻,當(dāng)所述的步驟m中獲 取的整數(shù)標(biāo)識(shí)為所述整數(shù)標(biāo)識(shí)〇時(shí),渲染所述其中一回放觸發(fā)時(shí)刻對(duì)應(yīng)的待響應(yīng)場(chǎng)景狀 態(tài),生成所述空事件對(duì)應(yīng)的新的場(chǎng)景狀態(tài)。
[0021] 在一實(shí)施例中,當(dāng)所述回放定時(shí)間隔等于所述錄制定時(shí)間隔時(shí),在所述回放步驟 中,以與所述錄制步驟相同的速度回放所述的錄制片段;當(dāng)所述回放定時(shí)間隔小于所述錄 制定時(shí)間隔時(shí),在所述回放步驟中,以快于所述錄制步驟的速度回放所述的錄制片段;當(dāng)所 述回放定時(shí)間隔大于所述錄制定時(shí)間隔時(shí),在所述回放步驟中,以慢于所述錄制步驟的速 度回放所述的錄制片段。
[0022] 在一實(shí)施例中,當(dāng)在每個(gè)所述回放定時(shí)間隔讀取η個(gè)所述響應(yīng)事件時(shí),在所述回 放步驟中,以η倍速快放所述的錄制片段;當(dāng)在每個(gè)所述回放定時(shí)間隔讀取I/η個(gè)所述響應(yīng)