本發(fā)明屬于圖形處理技術(shù)領(lǐng)域,具體涉及一種面向移動(dòng)設(shè)備的真實(shí)感體渲染和交互系統(tǒng)及其工作方法,尤其是一種面向移動(dòng)設(shè)備的基于物理的真實(shí)感體渲染和交互系統(tǒng)。
背景技術(shù):
目前通過計(jì)算機(jī)斷層掃描(CT)以及磁共振成像(MRT)獲取患者病變部位的影響圖片是醫(yī)生進(jìn)行臨床診斷、手術(shù)規(guī)劃和檢測(cè)藥物介入治療效果的常用手段。體渲染技術(shù)(Volume Rendering)可以由CT等設(shè)備產(chǎn)生的離散三維標(biāo)量數(shù)據(jù)產(chǎn)生能夠直觀傳遞三維體數(shù)據(jù)形狀、深度和大小信息的二維圖片。高分辨率CT及MRI數(shù)據(jù)的三維交互式重建通常在高性能圖形處理器(GPU)工作站或計(jì)算集群上才能實(shí)現(xiàn),但一般用戶很難接觸到這些昂貴的計(jì)算資源。即使醫(yī)院等機(jī)構(gòu)擁有高性能計(jì)算設(shè)備,其同時(shí)也只能為一個(gè)用戶服務(wù),導(dǎo)致計(jì)算資源利用率較低。此外,高性能計(jì)算設(shè)備體積較大,缺乏便攜性,對(duì)其使用受到空間位置限制。
目前大多數(shù)移動(dòng)設(shè)備(如智能手機(jī)或平板電腦等)所配備的多點(diǎn)觸控屏幕使其非常適合作為醫(yī)學(xué)應(yīng)用的交互接口,移動(dòng)設(shè)備顯示質(zhì)量和分辨率都能和常用桌面設(shè)備相媲美,最重要的是移動(dòng)設(shè)備的可便攜性以及現(xiàn)在無處不在的網(wǎng)絡(luò)連接使得醫(yī)生在進(jìn)行協(xié)作診斷和治療時(shí)不再被限制在醫(yī)院里的工作站設(shè)備。但交互式真實(shí)感醫(yī)學(xué)數(shù)據(jù)可視化需要巨大的計(jì)算能力和存儲(chǔ)容量及存儲(chǔ)帶寬,移動(dòng)設(shè)備和普通桌面設(shè)備很難達(dá)到該要求。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是提供一種面向移動(dòng)設(shè)備的真實(shí)感體渲染和交互系統(tǒng)及其工作方法,采用瀏覽器/服務(wù)器(B/S)架構(gòu)將計(jì)算設(shè)備與交互顯示設(shè)備進(jìn)行分離,用戶可通過接入網(wǎng)絡(luò)的移動(dòng)設(shè)備透明使用遠(yuǎn)端高性能真實(shí)感體渲染服務(wù)器而無需關(guān)心交互顯示設(shè)備的計(jì)算能力。
為解決上述技術(shù)問題,本發(fā)明的實(shí)施例提供一種面向移動(dòng)設(shè)備的真實(shí)感體渲染和交互系統(tǒng),包括服務(wù)器端和客戶端,所述服務(wù)器端包括:
渲染服務(wù)器,處理體渲染任務(wù);
Web服務(wù)器,處理Web頁(yè)面、發(fā)送渲染圖像并接收交互事件;
耦合組件,連接渲染服務(wù)器和Web服務(wù)器;
所述客戶端包括:
客戶端瀏覽器,接收并顯示W(wǎng)eb服務(wù)器發(fā)送的渲染圖像,并將用戶產(chǎn)生的交互事件發(fā)送至Web服務(wù)器。
其中,所述服務(wù)器端包括GPU體渲染模塊、消息管理模塊和瀏覽器通信模塊,所述GPU體渲染模塊包括渲染服務(wù)器管理單元、體渲染單元和圖像輸出單元,所述消息管理模塊包括圖像數(shù)據(jù)分發(fā)單元和交互事件分發(fā)單元,所述瀏覽器通信模塊包括圖像數(shù)據(jù)發(fā)送單元和交互事件接收單元。
其中,所述渲染服務(wù)器管理單元從渲染服務(wù)器集群中選擇一臺(tái)計(jì)算資源充足的主機(jī),啟動(dòng)體渲染單元;
所述體渲染單元從服務(wù)器端體數(shù)據(jù)存儲(chǔ)服務(wù)器中將體數(shù)據(jù)拷貝到渲染服務(wù)器的顯存中,設(shè)置渲染參數(shù),進(jìn)行漸進(jìn)式迭代渲染,將迭代渲染結(jié)果移交至圖像輸出單元;
所述圖像輸出單元根據(jù)服務(wù)器端耦合組件的狀態(tài)信息決定是否將圖像送入耦合組件緩沖隊(duì)列。
其中,所述圖像數(shù)據(jù)分發(fā)單元為圖像數(shù)據(jù)增加用戶信息,將其移交至瀏覽器通信模塊;
所述交互事件分發(fā)單元從交互事件信息中提取用戶信息、交互事件名稱和交互事件參數(shù),根據(jù)用戶信息將交互事件分發(fā)至GPU體渲染模塊。
其中,所述圖像數(shù)據(jù)發(fā)送單元根據(jù)圖像數(shù)據(jù)的用戶信息將其發(fā)送至對(duì)應(yīng)用戶;
所述交互事件接收單元負(fù)責(zé)接收客戶端瀏覽器發(fā)送的交互事件信息并將其移交至消息管理模塊。
其中,所述客戶端包括圖像顯示模塊、交互動(dòng)作監(jiān)聽模塊和服務(wù)器通信模塊,所述圖像顯示模塊根據(jù)接收到的壓縮圖像格式選擇相應(yīng)的解壓算法對(duì)圖像數(shù)據(jù)進(jìn)行解壓并在客戶端瀏覽器的頁(yè)面上顯示;
所述交互動(dòng)作監(jiān)聽模塊監(jiān)聽圖像旋轉(zhuǎn)、縮放和平移操作,傳輸函數(shù)改變操作,燈光參數(shù)改變操作,裁剪面設(shè)置操作,相機(jī)參數(shù)設(shè)置操作,偵測(cè)到交互操作后將交互事件封裝到JSON結(jié)構(gòu)體中并移交至服務(wù)器通信模塊;
所述服務(wù)器通信模塊包括圖像數(shù)據(jù)接收單元和交互事件發(fā)送單元,所述圖像數(shù)據(jù)接收單元負(fù)責(zé)接收來自Web服務(wù)器的壓縮渲染圖像,將其移交至圖像顯示模塊,所述交互事件發(fā)送單元負(fù)責(zé)將封裝好的交互事件消息發(fā)送至Web服務(wù)器。
其中,所述耦合組件包括自適應(yīng)渲染服務(wù)器圖像輸出速度調(diào)整模塊和圖像壓縮模塊;
所述自適應(yīng)渲染服務(wù)器圖像輸出速度調(diào)整模塊的緩沖隊(duì)列連接渲染服務(wù)器和Web服務(wù)器,當(dāng)緩沖隊(duì)列被填滿時(shí)說明渲染服務(wù)器輸出圖像速度高于Web服務(wù)器發(fā)送圖像的速度,此時(shí)增大渲染服務(wù)器輸出圖像的時(shí)間間隔,減小其輸出速度;當(dāng)緩沖隊(duì)列被取空時(shí)說明Web服務(wù)器發(fā)送圖像的速度高于渲染服務(wù)器輸出圖像的速度,此時(shí)需要減小渲染服務(wù)器輸出圖像的時(shí)間間隔,增大其輸出速度;
所述圖像壓縮模塊為了在不同網(wǎng)絡(luò)環(huán)境下提高交互刷新率,對(duì)每次重新迭代渲染的前幾十幀圖像采用較低的JPEG質(zhì)量壓縮,提高壓縮率,對(duì)中間渲染結(jié)果采用中等偏高的JPEG質(zhì)量壓縮,在保證一定壓縮率的條件下保持較好的圖像質(zhì)量;對(duì)最終的高質(zhì)量渲染結(jié)果采用PNG格式壓縮,避免圖像細(xì)節(jié)丟失。
本發(fā)明實(shí)施例還提供一種面向移動(dòng)設(shè)備的真實(shí)感體渲染和交互系統(tǒng)的工作方法,包括如下步驟:
S101、用戶通過客戶端瀏覽器輸入服務(wù)器端Web服務(wù)器的主機(jī)地址,客戶端瀏覽器向Web服務(wù)器發(fā)送請(qǐng)求登錄頁(yè)面的HTTP請(qǐng)求,Web服務(wù)器向客戶端瀏覽器返回登錄頁(yè)面的HTML內(nèi)容;
S102、用戶輸入用戶名、密碼等驗(yàn)證信息后向Web服務(wù)器發(fā)送登錄驗(yàn)證請(qǐng)求,驗(yàn)證通過后Web服務(wù)器返回體數(shù)據(jù)管理頁(yè)面;
體數(shù)據(jù)管理頁(yè)面的邏輯處理包括:
S102-1、從Web服務(wù)器獲得該用戶已上傳的體數(shù)據(jù),在體數(shù)據(jù)管理頁(yè)面上列出數(shù)據(jù)列表;
S102-2、用戶可刪除已有體數(shù)據(jù),向Web服務(wù)器發(fā)送刪除請(qǐng)求;
S102-3、用戶可選擇上傳新的體數(shù)據(jù),從本地選擇一個(gè)或多個(gè)體數(shù)據(jù)上傳至體數(shù)據(jù)存儲(chǔ)服務(wù)器;
S102-4、從列表中選擇一個(gè)體數(shù)據(jù)進(jìn)行渲染。
S103、用戶在體數(shù)據(jù)管理頁(yè)面上選定目標(biāo)渲染體數(shù)據(jù)后,Web服務(wù)器向渲染服務(wù)器發(fā)送啟動(dòng)體渲染器實(shí)例的指令,并將體數(shù)據(jù)描述信息發(fā)送給渲染服務(wù)器;
S104、渲染服務(wù)器收到啟動(dòng)指令及體數(shù)據(jù)描述信息后創(chuàng)建一個(gè)體渲染器實(shí)例;從體數(shù)據(jù)存儲(chǔ)服務(wù)器中檢索出所需渲染的體數(shù)據(jù)后將體數(shù)據(jù)復(fù)制到渲染服務(wù)器的顯存中并啟動(dòng)體渲染器實(shí)例,開始渲染體數(shù)據(jù);
S105、Web服務(wù)器確認(rèn)體渲染器實(shí)例啟動(dòng)后向客戶端瀏覽器發(fā)送渲染服務(wù)器啟動(dòng)成功信息和交互渲染工作頁(yè)面;
S106、客戶端瀏覽器收到渲染服務(wù)器啟動(dòng)成功信息后與Web服務(wù)器之間建立WebSocket通信通道;
S107、WebSocket通信通道建立后開始交互體渲染循環(huán),該循環(huán)由服務(wù)器端和客戶端共同完成。
進(jìn)一步,所述交互體渲染循環(huán)的實(shí)施流程包括:
S107-1、客戶端的交互動(dòng)作監(jiān)聽模塊通過為交互工作頁(yè)面的每個(gè)可交互元素編寫的Javascript回調(diào)函數(shù)用以監(jiān)聽用戶交互操作;
S107-2、發(fā)生用戶交互事件后,回調(diào)函數(shù)將交互事件的參數(shù)封裝成{event_name:name, event_parameters:parameters}的JSON格式移交至客戶端的服務(wù)器通信模塊;
S107-3、客戶端的服務(wù)器通信模塊調(diào)用WebSocket對(duì)象的發(fā)送方法發(fā)送給Web服務(wù)器;
S107-4、位于Web服務(wù)器上的瀏覽器通信模塊收到交互事件消息后將其移交給消息管理模塊;
S107-5、消息管理模塊從交互事件JSON結(jié)構(gòu)中提取交互事件名及交互事件參數(shù)后更新事件名對(duì)應(yīng)的渲染參數(shù),將更新后的渲染參數(shù)發(fā)送給服務(wù)該用戶的體渲染器實(shí)例的GPU體渲染模塊;
S107-6、GPU體渲染模塊將新的渲染參數(shù)拷貝到渲染服務(wù)器GPU的顯存后重新開始體渲染迭代計(jì)算;
S107-7、GPU體渲染模塊根據(jù)自適應(yīng)優(yōu)化組件提供的信息確定每次圖像輸出所需的迭代計(jì)算次數(shù)n,經(jīng)過n次迭代計(jì)算后輸出一次渲染圖像;
S107-8、渲染圖像經(jīng)過壓縮編碼后發(fā)送到Web服務(wù)器的消息管理模塊;
S107-9、Web服務(wù)器的消息管理模塊確定對(duì)應(yīng)用戶地址后將壓縮后的圖像移交給瀏覽器通信模塊;
S107-10、瀏覽器通信模塊通過調(diào)用WebSocket的發(fā)送方法將壓縮圖像發(fā)送至客戶端瀏覽器;
S107-11、客戶端瀏覽器接收到壓縮圖像后將其移交至圖像顯示模塊;
S107-12、圖像顯示模塊對(duì)壓縮圖像進(jìn)行解碼后由HTML5的canvas標(biāo)簽顯示。
其中,客戶端的用戶交互界面上設(shè)有畫布區(qū)域、控件組區(qū)域、選擇數(shù)據(jù)按鈕、傳輸函數(shù)設(shè)置按鈕、燈光設(shè)置按鈕、裁剪面設(shè)置按鈕和相機(jī)參數(shù)設(shè)置按鈕;
點(diǎn)擊所述選擇數(shù)據(jù)按鈕可返回?cái)?shù)據(jù)管理頁(yè)面,同時(shí)關(guān)閉當(dāng)前渲染工作;
所述畫布區(qū)域包含兩個(gè)功能:
(1)顯示接收到的渲染圖像;
(2)生成相機(jī)位置變換交互事件:a、單指滑動(dòng)進(jìn)行相機(jī)圍繞體數(shù)據(jù)中心旋轉(zhuǎn);b、雙指捏合調(diào)整相機(jī)與體數(shù)據(jù)中心的距離,距離越近,被渲染的對(duì)象越大,反之被渲染的對(duì)象越?。籧、三指滑動(dòng)進(jìn)行相機(jī)平移;
用戶通過點(diǎn)擊傳輸函數(shù)設(shè)置按鈕、燈光設(shè)置按鈕、裁剪面設(shè)置按鈕和相機(jī)參數(shù)設(shè)置按鈕進(jìn)行傳輸函數(shù)、燈光參數(shù)、裁剪面和相機(jī)參數(shù)的設(shè)置,所需控件顯示在控件組區(qū)域內(nèi)。
優(yōu)選的,傳輸函數(shù)設(shè)置包括:
(1)顏色設(shè)置,設(shè)置體數(shù)據(jù)不同數(shù)值在渲染時(shí)對(duì)應(yīng)的顏色;
(2)密度設(shè)置,設(shè)置MCPT渲染算法中體數(shù)據(jù)不同數(shù)值代表的透光程度;
燈光參數(shù)設(shè)置包括:
(1)燈光個(gè)數(shù),可增減光源個(gè)數(shù);
(2)燈光顏色,每個(gè)光源顏色可獨(dú)立設(shè)置;
(3)燈光大小,每個(gè)光源的面積大小可獨(dú)立設(shè)置;
(4)燈光位置,每個(gè)光源的位置可獨(dú)立設(shè)置,為渲染對(duì)象的不同部分提供不同光照;
(5)HDR光源,選擇不同的HDR圖片作為環(huán)境光,增強(qiáng)渲染真實(shí)感;
裁剪面設(shè)置可同時(shí)在X、Y和Z三個(gè)方向放置裁剪面并分別設(shè)置三個(gè)裁剪面的位置,顯示渲染數(shù)據(jù)的內(nèi)部結(jié)構(gòu);
相機(jī)參數(shù)設(shè)置包括:
(1)視角(Field Of View, FOV)設(shè)置,調(diào)整視角大小可調(diào)整渲染圖像內(nèi)容的范圍;
(2)光圈大小,調(diào)整不同光圈大小可提供不同的景深效果,增強(qiáng)渲染真實(shí)感;
(3)曝光值,渲染器輸出的原始圖像采用HDR格式,設(shè)置不同的曝光值可調(diào)整圖像的整體明暗度。
本發(fā)明的上述技術(shù)方案的有益效果如下:本發(fā)明采用自適應(yīng)算法連接渲染服務(wù)器器和Web服務(wù)器可較大地縮短整個(gè)渲染過程所需時(shí)間,提高系統(tǒng)性能,使用戶在不同的網(wǎng)絡(luò)環(huán)境中均可以較快的速度獲得高質(zhì)量渲染圖像。在大帶寬低延遲的局域網(wǎng)內(nèi),渲染服務(wù)器能通過緩沖隊(duì)列的狀態(tài)較快調(diào)整其每次圖像輸出間隔使得其輸出速度與網(wǎng)絡(luò)承載能力相平衡,并能相對(duì)平穩(wěn)保持該狀態(tài),因此用戶在整個(gè)渲染過程中能以較流暢的視覺體驗(yàn)觀察圖像的輸出過程。在網(wǎng)絡(luò)傳輸情況難以預(yù)測(cè)的廣域網(wǎng)環(huán)境中,渲染服務(wù)器的計(jì)算速度遠(yuǎn)大于Web服務(wù)器的輸出速度,此時(shí)渲染服務(wù)器會(huì)調(diào)整每次圖像輸出的迭代計(jì)算次數(shù)至較大的值,因此渲染服務(wù)器每次輸出圖像的時(shí)間間隔變大,在渲染過程中輸出較少圖像,所以雖然圖像輸出幀率不高,但整個(gè)渲染過程所需時(shí)間基本不變。
附圖說明
圖1為本發(fā)明的總體設(shè)計(jì)方案圖;
圖2為本發(fā)明一個(gè)交互渲染循環(huán)的數(shù)據(jù)流向圖;
圖3為本發(fā)明的自適應(yīng)渲染服務(wù)器與Web服務(wù)器連接算法流程圖;
圖4為本發(fā)明客戶端交互渲染頁(yè)面示意圖。
附圖標(biāo)記說明:
1、選擇數(shù)據(jù)按鈕;2、畫布區(qū)域;3、傳輸函數(shù)設(shè)置按鈕;4、燈光設(shè)置按鈕;5、裁剪面設(shè)置按鈕;6、相機(jī)參數(shù)設(shè)置按鈕;7、控件組區(qū)域。
具體實(shí)施方式
為使本發(fā)明要解決的技術(shù)問題、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖及具體實(shí)施例進(jìn)行詳細(xì)描述。
如圖1所示,一種面向移動(dòng)設(shè)備的真實(shí)感體渲染和交互系統(tǒng),包括服務(wù)器端和客戶端,所述客戶端包括客戶端瀏覽器,所述服務(wù)器端劃分為渲染服務(wù)器、Web服務(wù)器以及連接渲染服務(wù)器和Web服務(wù)器的耦合組件,計(jì)算量較大的體渲染任務(wù)由服務(wù)器端的渲染服務(wù)器加速完成;Web服務(wù)器負(fù)責(zé)Web頁(yè)面的處理、發(fā)送渲染圖像并接收交互事件;耦合組件用于連接輸出圖像速度不一致的渲染服務(wù)器和Web服務(wù)器。
所述耦合組件包括自適應(yīng)渲染服務(wù)器圖像速度調(diào)整模塊和圖像壓縮模塊,所述自適應(yīng)渲染服務(wù)器圖像輸出速度調(diào)整模塊緩沖隊(duì)列連接渲染器和Web服務(wù)器,當(dāng)緩沖隊(duì)列被填滿時(shí)說明渲染服務(wù)器輸出圖像速度高于Web服務(wù)器發(fā)送圖像的速度,此時(shí)增大渲染器輸出圖像的時(shí)間間隔,減小其輸出速度;當(dāng)緩沖隊(duì)列被取空時(shí)則說明Web服務(wù)器發(fā)送圖像速度高于渲染服務(wù)器輸出圖像的速度,此時(shí)需要減小渲染器輸出圖像的時(shí)間間隔,增大其輸出速度。
所述圖像壓縮模塊為了在不同網(wǎng)絡(luò)環(huán)境下提高交互刷新率,對(duì)每次重新迭代渲染的前幾十幀圖像采用較低的JPEG質(zhì)量壓縮,提高壓縮率;其余中間渲染結(jié)果采用中等偏高的JPEG質(zhì)量壓縮,在保證一定壓縮率的條件下保持較好的圖像質(zhì)量;最終的高質(zhì)量渲染結(jié)果采用PNG格式壓縮,避免圖像細(xì)節(jié)丟失。
服務(wù)器端按功能分,包括GPU體渲染模塊、消息管理模塊和瀏覽器通信模塊,其中,
所述GPU體渲染模塊包括渲染服務(wù)器管理單元、體渲染單元、圖像輸出單元。渲染服務(wù)器管理單元從渲染服務(wù)器集群中選擇一臺(tái)計(jì)算資源充足的主機(jī),啟動(dòng)體渲染單元;體渲染單元是采用蒙特卡羅路徑追蹤(Monte Carlo Path Tracing, MCPT)的物理真實(shí)感體渲染器,體渲染單元從服務(wù)器端的體數(shù)據(jù)存儲(chǔ)服務(wù)器中將體數(shù)據(jù)拷貝到渲染服務(wù)器的顯存中,設(shè)置渲染參數(shù),進(jìn)行漸進(jìn)式迭代渲染,將迭代渲染結(jié)果移交至圖像輸出單元;圖像輸出單元根據(jù)耦合組件的狀態(tài)信息決定是否將圖像送入耦合組件緩沖隊(duì)列。
所述消息管理模塊包括圖像數(shù)據(jù)分發(fā)單元和交互事件分發(fā)單元。圖像數(shù)據(jù)分發(fā)單元為圖像數(shù)據(jù)增加用戶信息,將其移交至瀏覽器通信模塊;交互事件分發(fā)單元從交互事件信息中提取用戶信息、交互事件名稱和交互事件參數(shù),根據(jù)用戶信息將交互事件分發(fā)至GPU體渲染模塊。
所述瀏覽器通信模塊包括圖像數(shù)據(jù)發(fā)送單元和交互事件接收單元。圖像數(shù)據(jù)發(fā)送單元根據(jù)圖像數(shù)據(jù)的用戶信息將其發(fā)送至對(duì)應(yīng)用戶;交互事件接收單元負(fù)責(zé)接收客戶端瀏覽器發(fā)送的交互事件信息并將其移交至消息管理模塊。
所述客戶端瀏覽器只需接收并顯示W(wǎng)eb服務(wù)器發(fā)送的渲染圖像,并將用戶產(chǎn)生的交互事件發(fā)送至Web服務(wù)器。
客戶端可以分為圖像顯示模塊、交互動(dòng)作監(jiān)聽模塊和服務(wù)器通信模塊,其中,
所述圖像顯示模塊根據(jù)接收到的壓縮圖像格式選擇相應(yīng)的解壓算法對(duì)圖像數(shù)據(jù)進(jìn)行解壓并在頁(yè)面上顯示。
所述交互動(dòng)作監(jiān)聽模塊監(jiān)聽圖像旋轉(zhuǎn)、縮放和平移操作,傳輸函數(shù)改變操作,燈光參數(shù)改變操作,裁剪面設(shè)置操作,相機(jī)參數(shù)設(shè)置操作,偵測(cè)到交互操作后將交互事件封裝到JSON結(jié)構(gòu)體中并移交至服務(wù)器通信模塊。
所述服務(wù)器通信模塊包括圖像數(shù)據(jù)接收單元和交互事件發(fā)送單元,圖像數(shù)據(jù)接收單元負(fù)責(zé)接收來自Web服務(wù)器的壓縮渲染圖像,將其移交至圖像顯示模塊;交互事件發(fā)送單元負(fù)責(zé)將封裝好的交互事件消息發(fā)送至Web服務(wù)器。
如圖1~3所示,本發(fā)明的面向移動(dòng)設(shè)備的真實(shí)感體渲染和交互系統(tǒng)的工作方法包括如下步驟:
S101、用戶需要使用遠(yuǎn)程真實(shí)感體渲染系統(tǒng)時(shí)通過瀏覽器輸入該系統(tǒng)Web服務(wù)器的主機(jī)地址,瀏覽器向Web服務(wù)器發(fā)送請(qǐng)求登錄頁(yè)面的HTTP請(qǐng)求,Web服務(wù)器返回登錄頁(yè)面的HTML內(nèi)容;
S102、用戶輸入用戶名及密碼等驗(yàn)證信息后向Web服務(wù)器發(fā)送登錄驗(yàn)證請(qǐng)求。驗(yàn)證通過后Web服務(wù)器返回體數(shù)據(jù)管理頁(yè)面;
其中,體數(shù)據(jù)管理頁(yè)面的邏輯處理包括:
S102-1、從服務(wù)器獲得該用戶已上傳的體數(shù)據(jù),在頁(yè)面上列出數(shù)據(jù)列表;
S102-2、用戶可刪除已有體數(shù)據(jù),向服務(wù)器發(fā)送刪除請(qǐng)求;
S102-3、用戶可選擇上傳新體數(shù)據(jù),從本地選擇一個(gè)或多個(gè)體數(shù)據(jù)上傳至體數(shù)據(jù)存儲(chǔ)服務(wù)器;
S102-4、從列表中選擇一個(gè)體數(shù)據(jù)進(jìn)行渲染。
本發(fā)明采用PACS服務(wù)器作為體數(shù)據(jù)的組織和存儲(chǔ)服務(wù)器,以方便渲染器在渲染前能快速的調(diào)回使用。
S103、用戶選定目標(biāo)渲染體數(shù)據(jù)后,Web服務(wù)器向渲染服務(wù)器發(fā)送啟動(dòng)體渲染器實(shí)例的指令,并將體數(shù)據(jù)描述信息發(fā)送給渲染服務(wù)器;
S104、渲染服務(wù)器收到啟動(dòng)指令及體數(shù)據(jù)描述信息后創(chuàng)建一個(gè)體渲染器實(shí)例;從PACS服務(wù)器中檢索出所需渲染的體數(shù)據(jù)后將體數(shù)據(jù)復(fù)制到渲染服務(wù)器GPU的顯存中并啟動(dòng)體渲染器實(shí)例,開始渲染體數(shù)據(jù),渲染服務(wù)器采用CUDA C或Open CL編寫以利用GPU的大規(guī)模并行計(jì)算能力加速體渲染計(jì)算。
S105、Web服務(wù)器確認(rèn)體渲染器實(shí)例啟動(dòng)后向客戶端瀏覽器發(fā)送渲染服務(wù)器啟動(dòng)成功信息和如圖4所示的交互渲染工作頁(yè)面;
S106、客戶端瀏覽器收到渲染服務(wù)器啟動(dòng)成功信息后與Web服務(wù)器之間建立WebSocket通信通道;
說明:WebSocket是一種基于TCP協(xié)議的全雙工通信方式,服務(wù)器可以在無瀏覽器請(qǐng)求的情況下向已建立連接的瀏覽器推送消息,與此同時(shí),瀏覽器也可向服務(wù)器發(fā)送請(qǐng)求。
S107、WebSocket通道建立后開始交互體渲染循環(huán),該循環(huán)由遠(yuǎn)程服務(wù)器端和客戶端共同完成。
其中,所述交互體渲染循環(huán)的實(shí)施流程如圖2所示,包括:
S107-1、客戶端的交互動(dòng)作監(jiān)聽模塊通過為交互工作頁(yè)面的每個(gè)可交互元素編寫的Javascript回調(diào)函數(shù)用以監(jiān)聽用戶交互操作;
S107-2、發(fā)生用戶交互事件后,回調(diào)函數(shù)將交互事件的參數(shù)封裝成{event_name:name, event_parameters:parameters}的JSON格式移交至客戶端的服務(wù)器通信模塊;
S107-3、客戶端的服務(wù)器通信模塊調(diào)用WebSocket對(duì)象的發(fā)送方法發(fā)送給Web服務(wù)器;
S107-4、位于Web服務(wù)器上的瀏覽器通信模塊收到交互事件消息后將其移交給消息管理模塊;
S107-5、消息管理模塊從交互事件JSON結(jié)構(gòu)中提取交互事件名及交互事件參數(shù)后更新事件名對(duì)應(yīng)的渲染參數(shù),將更新后的渲染參數(shù)發(fā)送給服務(wù)該用戶的體渲染器實(shí)例的GPU體渲染模塊;
S107-6、GPU體渲染模塊將新的渲染參數(shù)拷貝到渲染服務(wù)器(GPU)的顯存后重新開始體渲染迭代計(jì)算;
S107-7、GPU體渲染模塊根據(jù)自適應(yīng)渲染服務(wù)器圖像速度調(diào)整模塊提供的信息確定每次圖像輸出所需的迭代計(jì)算次數(shù)n,經(jīng)過n次迭代計(jì)算后輸出一次渲染圖像;
S107-8、渲染圖像經(jīng)過壓縮編碼后發(fā)送到Web服務(wù)器的消息管理模塊;
S107-9、Web服務(wù)器的消息管理模塊確定對(duì)應(yīng)用戶地址后將壓縮后的圖像移交給瀏覽器通信模塊;
S107-10、瀏覽器通信模塊通過調(diào)用WebSocket的發(fā)送方法將壓縮圖像發(fā)送至客戶端瀏覽器;
S107-11、客戶端瀏覽器接收到壓縮圖像后將其移交至圖像顯示模塊;
S107-12、圖像顯示模塊對(duì)壓縮圖像進(jìn)行解碼后由HTML5的canvas標(biāo)簽顯示。
渲染服務(wù)器輸出一幀圖像的時(shí)間為,
其中,為迭代計(jì)算時(shí)間,即一次圖像輸出中所有單次迭代計(jì)算時(shí)間總和;β為GPU拷貝圖像至主機(jī)內(nèi)存所需時(shí)間,由數(shù)據(jù)大小和硬件性能決定;γ為圖像編碼壓縮時(shí)間,其大小取決于圖像的內(nèi)容和圖像的壓縮質(zhì)量。
若每次迭代計(jì)算的結(jié)果均向客戶端瀏覽器輸出,則迭代計(jì)算時(shí)間僅占Φ的一小部分,渲染集群輸出圖像性能受β和γ的限制較大。但分析表明無需輸出所有中間渲染圖像,因此可以通過調(diào)整中的迭代計(jì)算次數(shù)n以及圖像編碼壓縮時(shí)間獲得更好的輸出性能。
耦合組件采用FIFO圖像數(shù)據(jù)緩沖隊(duì)列連接渲染服務(wù)器和Web服務(wù)器這兩種輸出速度不同的系統(tǒng),渲染服務(wù)器以較高的速率向隊(duì)列輸出數(shù)據(jù),而Web服務(wù)器則以較低的速率讀取數(shù)據(jù)。令n和n_max分別為渲染服務(wù)器一次圖像輸出的迭代渲染次數(shù)和迭代渲染次數(shù)閾值,本發(fā)明提出的渲染服務(wù)器和Web服務(wù)器的自適應(yīng)連接算法主要流程為:
渲染開始時(shí),初始化一個(gè)空?qǐng)D像數(shù)據(jù)隊(duì)列。
渲染器以最快的速度(n = 1)將圖像數(shù)據(jù)送入隊(duì)列,以確保隊(duì)列中有充足圖像可供Web服務(wù)器連續(xù)發(fā)送至客戶端瀏覽器。
算法初始設(shè)置一個(gè)最大迭代計(jì)算次數(shù)的閾值n_max,表示渲染服務(wù)器輸出速率能使Web服務(wù)器流暢輸出的最大估計(jì)迭代計(jì)算次數(shù)。
若渲染服務(wù)器發(fā)現(xiàn)緩沖隊(duì)列已滿,則表明渲染服務(wù)器輸出圖像速率超出了Web服務(wù)器發(fā)送承載量;算法通過改變渲染服務(wù)器每次圖像輸出的迭代計(jì)算次數(shù)以調(diào)整每次圖像輸出的時(shí)間間隔,迭代計(jì)算次數(shù)越多,輸出時(shí)間間隔越大,但下一次輸出的圖像質(zhì)量越高。
隊(duì)列滿時(shí)若當(dāng)前迭代次數(shù)n 小于n_max則進(jìn)行乘法增加,以更快獲得使渲染服務(wù)器輸出速度和Web服務(wù)器輸出速度相平衡的n 值。
若渲染服務(wù)器依然檢測(cè)到隊(duì)列滿,則進(jìn)行加法增大以避免迭代計(jì)算次數(shù)過大(圖像輸出時(shí)間間隔過大)導(dǎo)致系統(tǒng)發(fā)送卡頓。
Web服務(wù)器以當(dāng)前網(wǎng)絡(luò)可承載速度從圖像數(shù)據(jù)隊(duì)列頭部取出圖像數(shù)據(jù)。
當(dāng)Web服務(wù)器檢測(cè)到緩沖隊(duì)列為空時(shí),表明渲染服務(wù)器的圖像輸出速率過低,需增大其輸出速率;算法通過乘法減小渲染服務(wù)器當(dāng)前迭代渲染次數(shù)n 以縮短圖像輸出時(shí)間間隔,從而使渲染服務(wù)器快速輸出;更新n_max=n/2獲取當(dāng)前網(wǎng)絡(luò)狀態(tài)下渲染服務(wù)器單次圖像輸出最大估計(jì)迭代次數(shù)。
每次更新渲染參數(shù)后,渲染服務(wù)器重新開始迭代渲染。最初迭代渲染輸出的幾十幀圖像包含大量噪點(diǎn),其壓縮效率較低。圖像壓縮模塊對(duì)交互過程中,每次重新渲染輸出的前50幀圖像采用較低的JPEG質(zhì)量(20/100)進(jìn)行壓縮,以大幅減小這些圖像的數(shù)據(jù)大小,以最大可能在較差網(wǎng)絡(luò)條件下提高交互刷新速率。
通常50幀之后的圖像只有在交互停止后才能得到輸出,對(duì)這些圖像采用數(shù)值為75的JPEG質(zhì)量壓縮,在獲得10:1的壓縮率的條件下能獲得較好的圖像質(zhì)量。
所有迭代計(jì)算完成后輸出的最終高質(zhì)量圖像采用無損PNG格式壓縮以避免圖像細(xì)節(jié)丟失。
如圖4所示,客戶端的用戶交互界面上設(shè)有畫布區(qū)域2、控件組區(qū)域7、選擇數(shù)據(jù)按鈕1、傳輸函數(shù)設(shè)置按鈕3、燈光設(shè)置按鈕4、裁剪面設(shè)置按鈕5和相機(jī)參數(shù)設(shè)置按鈕6。
點(diǎn)擊所述選擇數(shù)據(jù)按鈕1可返回?cái)?shù)據(jù)管理頁(yè)面,同時(shí)關(guān)閉當(dāng)前渲染工作。
所述畫布區(qū)域2包含兩個(gè)功能:
(1)顯示接收到的渲染圖像;
(2)生成相機(jī)位置變換交互事件:a、單指滑動(dòng)進(jìn)行相機(jī)圍繞體數(shù)據(jù)中心旋轉(zhuǎn);b、雙指捏合調(diào)整相機(jī)與體數(shù)據(jù)中心的距離,距離越近,被渲染的對(duì)象越大,反之被渲染的對(duì)象越??;c、三指滑動(dòng)進(jìn)行相機(jī)平移。
用戶通過點(diǎn)擊傳輸函數(shù)設(shè)置按鈕3、燈光設(shè)置按鈕4、裁剪面設(shè)置按鈕5和相機(jī)參數(shù)設(shè)置按鈕6進(jìn)行傳輸函數(shù)、燈光參數(shù)、裁剪面和相機(jī)參數(shù)的設(shè)置,所需控件顯示在控件組區(qū)域7內(nèi)。
其中,傳輸函數(shù)設(shè)置包括:
(1)顏色設(shè)置,設(shè)置體數(shù)據(jù)不同數(shù)值在渲染時(shí)對(duì)應(yīng)的顏色;
(2)密度設(shè)置,設(shè)置MCPT渲染算法中體數(shù)據(jù)不同數(shù)值代表的透光程度;
燈光參數(shù)設(shè)置包括:
(1)燈光個(gè)數(shù),可增減光源個(gè)數(shù);
(2)燈光顏色,每個(gè)光源顏色可獨(dú)立設(shè)置;
(3)燈光大小,每個(gè)光源的面積大小可獨(dú)立設(shè)置;
(4)燈光位置,每個(gè)光源的位置可獨(dú)立設(shè)置,為渲染對(duì)象的不同部分提供不同光照;
(5)HDR光源,選擇不同的HDR圖片作為環(huán)境光,增強(qiáng)渲染真實(shí)感。
裁剪面設(shè)置可同時(shí)在X、Y和Z三個(gè)方向放置裁剪面并分別設(shè)置三個(gè)裁剪面的位置,顯示渲染數(shù)據(jù)的內(nèi)部結(jié)構(gòu)。
相機(jī)參數(shù)設(shè)置包括:
(1)視角(Field Of View, FOV)設(shè)置,調(diào)整視角大小可調(diào)整渲染圖像內(nèi)容的范圍;
(2)光圈大小,調(diào)整不同光圈大小可提供不同的景深效果,增強(qiáng)渲染真實(shí)感;
(3)曝光值,渲染器輸出的原始圖像采用HDR格式,設(shè)置不同的曝光值可調(diào)整圖像的整體明暗度。
以上所述是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明所述原理的前提下,還可以作出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。