欒吉山,趙相偉,崔維頂,馮 康,吳 博
1(山東科技大學(xué) 山東省基礎(chǔ)地理信息與數(shù)字化技術(shù)重點(diǎn)實(shí)驗(yàn)室,青島 266590)
2(南京醫(yī)科大學(xué)第一附屬醫(yī)院 骨科,南京 210029)
隨著互聯(lián)網(wǎng)的發(fā)展和時代的進(jìn)步,計(jì)算機(jī)技術(shù)被廣泛應(yīng)用于醫(yī)學(xué),因?yàn)榫W(wǎng)絡(luò)的便捷和普及,以瀏覽器為基礎(chǔ)的網(wǎng)絡(luò)技術(shù)得到了發(fā)展,在大量軟件應(yīng)用設(shè)計(jì)中,客戶端/服務(wù)器(Client/Server,C/S)逐漸不再滿足需要,瀏覽器/服務(wù)器(Browser/Server,B/S)結(jié)構(gòu)得到了人們的青睞[1].現(xiàn)有的Mimics 等醫(yī)療軟件不僅需要安裝應(yīng)用程序,而且操作也十分麻煩.Web 應(yīng)用因?yàn)槠錈o需安裝并且更新維護(hù)方便的特點(diǎn),吸引了越來越多的學(xué)者的注意,設(shè)計(jì)了許多基于Web的醫(yī)學(xué)可視化系統(tǒng).如李偉波等人開發(fā)了醫(yī)學(xué)圖像處理系統(tǒng),實(shí)現(xiàn)在線提交、在線閱覽[2];李煒等人為醫(yī)療措施不完善地區(qū)開發(fā)了一對一遠(yuǎn)程醫(yī)療系統(tǒng),實(shí)現(xiàn)病患遠(yuǎn)程會診[3];黃志峰等人基于Node.js 技術(shù)開發(fā)了病理對照檢索系統(tǒng)[4];陳哲等人開發(fā)了醫(yī)學(xué)圖像半自動標(biāo)注系統(tǒng),解決了手工標(biāo)注勞動強(qiáng)度大的問題[5];湯超、王常坤等人開發(fā)了閱片系統(tǒng)[6,7];Jong 等人開發(fā)了收集血壓和心臟病例的Web 系統(tǒng)用于跟蹤用戶的健康狀況[8];陳欣等人開發(fā)了具有三維可視化功能的電子書簽系統(tǒng),輔助影像診斷[9];聶澤花等人開發(fā)了影像存儲共享系統(tǒng),實(shí)現(xiàn)臨床示教過程中影像的快速共享[10];Rybarczyk 等人開發(fā)了動作矯正平臺用來指導(dǎo)髖關(guān)節(jié)置換術(shù)后患者的康復(fù)訓(xùn)練[11];萬兵等人開發(fā)了醫(yī)療影像共享平臺[12];何滋魚、董默、劉兆明等人開發(fā)了三維重建系統(tǒng),實(shí)現(xiàn)模型的三維重建[13-15];Popescu 等人開發(fā)了骨科協(xié)作平臺用于為用戶提供指南和信息共享[16].但這些系統(tǒng)并不是專門針對于下肢骨畸形問題,無法滿足下肢骨畸形手術(shù)輔助診斷的需要.
為了達(dá)到對下肢骨畸形手術(shù)提供輔助作用的目的,設(shè)計(jì)了一種基于開源架構(gòu)的下肢骨畸形在線輔助診斷仿真系統(tǒng).該系統(tǒng)主要由3 部分構(gòu)成,包括瀏覽器、服務(wù)器和后臺處理程序.
當(dāng)前醫(yī)生診斷時所采用的輔助系統(tǒng)大多數(shù)是一些二維影像瀏覽平臺,輔助功能極其有限.首先,二維影像無法讓我們從整體上觀察和分析雙下肢各骨骼的相對空間關(guān)系;其次,從圖像上無法實(shí)現(xiàn)多角度觀察和分析畸形部位的特征和空間位置關(guān)系;最后,圖像中包含的細(xì)節(jié)信息醫(yī)生也無法完全掌握.
為了滿足輔助醫(yī)生診斷的需要,本文設(shè)計(jì)的基于開源架構(gòu)的下肢骨畸形在線輔助診斷仿真系統(tǒng),需要構(gòu)建下肢骨三維重建模塊,以取代Mimics 等繁瑣、費(fèi)時的商業(yè)軟件,為醫(yī)生提供用于三維分析的股骨、脛骨和腓骨精細(xì)模型;需要構(gòu)建人工關(guān)節(jié)模塊,以滿足關(guān)節(jié)置換等手術(shù)的需要;需要構(gòu)建包括測量工具、細(xì)節(jié)查看、精確定位等在內(nèi)的多種影像觀察與輔助診斷工具,以滿足畸形部位定性定量需要;需要建立信息管理模塊,以完成DICOM 影像和三維模型信息的存儲,便于醫(yī)生隨時在線查看病例資料,便于病情的追蹤.
本系統(tǒng)以為下肢骨畸形診斷與手術(shù)規(guī)劃提供輔助支持為重點(diǎn),總體框架如圖1所示,包括用戶層、前端表現(xiàn)層、數(shù)據(jù)層與業(yè)務(wù)邏輯層4 個部分.用戶層包括各大瀏覽器,無需下載插件,任何一部電腦都可以快速實(shí)現(xiàn)操作;前端表現(xiàn)層包括登錄注冊、數(shù)據(jù)可視化、下肢骨三維重建、人工關(guān)節(jié)和信息管理等5 個功能模塊;業(yè)務(wù)邏輯層完成了客戶端和服務(wù)器的規(guī)則制定;數(shù)據(jù)層包括BMP、DICOM 圖像、OBJ 模型、套圖壓縮文件等.
圖1 系統(tǒng)框架圖
Web 客戶端是進(jìn)行數(shù)據(jù)可視化和人機(jī)交互操作的界面,功能設(shè)計(jì)方面必須滿足用戶的需求.主界面主要分為4 個區(qū)域,分別是目錄樹區(qū)域、工具欄區(qū)域、可視化窗口和信息顯示窗口.
二維可視化:為了方便用戶通過瀏覽圖像,尋找畸形部位.系統(tǒng)需要實(shí)現(xiàn)二維圖像的可視化,包括BMP、DICOM 等格式單張或批量圖像的加載顯示.并且需要在前端平臺編制各種輔助性功能的工具,實(shí)現(xiàn)對圖像的標(biāo)注、測量、播放等交互操作,以達(dá)到手術(shù)輔助效果.二維可視化主要在Cornerstone.js的基礎(chǔ)上開發(fā),二維交互工具主要基于CornerstoneTools.js 完成.
三維可視化:由于二維圖像并不能充分的顯示畸形部位的特征和位置關(guān)系,難以使用戶對畸形有準(zhǔn)確的認(rèn)知,這就需要系統(tǒng)實(shí)現(xiàn)三維模型的重建與可視化,這里主要包括3 個模塊:OBJ 模型可視化、下肢骨三維重建和人工關(guān)節(jié)重建.分別實(shí)現(xiàn)了:三維OBJ 模型的可視化;股骨、脛骨和腓骨的三維重建及可視化;人工關(guān)節(jié)和缺損骨骼的三維重建及可視化,如圖2所示.其中模型在前端的顯示、交互工具的編寫主要基于Three.js庫,后臺的三維重建程序主要基于VTK 實(shí)現(xiàn).
圖2 系統(tǒng)功能框架
(1)Django 框架
Django是使用Python 語言開發(fā)的、采用了MTV框架模式的Web 開源框架.即M (Model):代表數(shù)據(jù)層,通過編寫算法,從數(shù)據(jù)庫中獲取數(shù)據(jù);T (Template):代表前端表現(xiàn)層,負(fù)責(zé)頁面的展示;V (View):代表業(yè)務(wù)邏輯層,負(fù)責(zé)完成前后端邏輯的制定,如圖3所示.
圖3 Django MTV 框架
Django 工具多、框架大、要素已集成且全面,使用簡單方便.結(jié)合Python 語言成為快速開發(fā)網(wǎng)站的最優(yōu)組合.借此開發(fā)人員可以輕松地完成網(wǎng)站的編寫.
(2)Three.js 與VTK 開源庫
3D 技術(shù)具有十分明顯的優(yōu)點(diǎn),它可以使用戶更加直觀的瀏覽所需內(nèi)容.但Mimic 等3D 軟件需要安裝,不易于操作.實(shí)現(xiàn)網(wǎng)頁三維模型可視化也面臨著諸多困境.WebGL的出現(xiàn)解決了這個問題,WebGL是一種符合HTML5 規(guī)范的3D 圖像繪制標(biāo)準(zhǔn),它為Canvas標(biāo)簽提供了渲染服務(wù),開發(fā)人員可以通過JS 語言實(shí)現(xiàn)三維圖形的繪制,自由展示模型.原生WebGL 開發(fā)困難,Three.js是基于原生WebGL 封裝的3D 引擎庫,使接口更簡單.封裝了調(diào)整對象展示所需的場景、相機(jī)、決定繪制方式的渲染器等要素.無需專業(yè)的學(xué)習(xí)就可以讓用戶簡單的制作三維模型.
VTK (Visualization ToolKit)是一個基于C++開發(fā)的、以O(shè)penGL為基礎(chǔ)發(fā)展起來的開源跨平臺庫.其具有面向Python的接口,滿足Python 編程的需要;通過將一些常用的算法封裝好,使我們無需重復(fù)編寫,如MC 面繪制算法;具有強(qiáng)大的圖形處理和三維可視化功能.后臺三維重建程序主要基于VTK 開源架構(gòu)實(shí)現(xiàn).三維可視化的實(shí)現(xiàn)主要依靠于后臺處理程序,客戶端只返回顯示程序最終結(jié)果.
(3)Cornerstone.js 與CornerstoneTools.js 開源庫
3.2.1 三維模型構(gòu)建
(1)下肢骨三維模型構(gòu)建
下肢骨三維重建是本系統(tǒng)中研發(fā)的最重要的兩個功能模塊之一,通過JS 撰寫瀏覽功能上傳文件,前端的請求會以字符串形式提交至后臺,由Web 服務(wù)器接收并置于JSON 中,調(diào)用OpenCV、Skimage、VTK 等開源架構(gòu)編寫后臺去床程序、分離程序、補(bǔ)洞程序和三維重建程序,調(diào)用Three.js、jQuery.js 等開源架構(gòu)編寫前端模型射線點(diǎn)拾取、畫板工具,逐步對套圖進(jìn)行處理,將渲染后的結(jié)果以二維形式與JSON 字符串傳至客戶端并且顯示.
下肢骨三維重建模塊實(shí)現(xiàn)了下肢骨的高度自動化精細(xì)三維重建,步驟流程如算法1.
?
此下肢骨三維重建模塊的好處在于后臺程序自動完成CT 掃描床去除、噪聲去除;剔除了盆骨、腳骨;并且將下肢骨分為股骨、腓骨和脛骨3 個獨(dú)立模型,如圖4所示,減少對象間的干擾,方便單個模型畸變識別觀察,并實(shí)現(xiàn)了孔洞修補(bǔ),生成精細(xì)模型,為以后研究的模擬矯正打下堅(jiān)實(shí)基礎(chǔ).全過程除少量人工干預(yù),基本實(shí)現(xiàn)自動化,傻瓜式、流水式的操作,使用戶無需過多學(xué)習(xí)專業(yè)知識就能完成下肢骨三維重建,操作步驟的簡易性使得軟件更容易推廣.
圖4 三維可視化界面
(2)人工關(guān)節(jié)三維模型構(gòu)建
人工關(guān)節(jié)模塊是系統(tǒng)最重要的兩個模塊之一,人工關(guān)節(jié)模塊主要用于人工關(guān)節(jié)置換等手術(shù)后復(fù)查,對人工關(guān)節(jié)和相鄰骨骼進(jìn)行三維重建,通過前端上傳壓縮文件,后臺接收解壓,調(diào)動人工關(guān)節(jié)重建程序,分別完成人工關(guān)節(jié)和骨骼的三維重建,如圖5所示,并在前端窗口顯示.該模塊實(shí)現(xiàn)了一鍵自動重建,用戶無需人工干預(yù).前端窗口可以顯示多個三維模型,各模型可以控制顯示或隱藏,在Three.js的支持下實(shí)現(xiàn)旋轉(zhuǎn)、放大、縮小等三維交互操作,便于用戶觀察細(xì)節(jié),分析手術(shù)情況.
圖5 人工關(guān)節(jié)界面
該模塊在術(shù)后復(fù)查或者多年以后人工關(guān)節(jié)磨損替換中,具有較高的作用.用戶能夠根據(jù)相關(guān)影像建立人工關(guān)節(jié)和下肢骨的三維模型,便于手術(shù)前計(jì)劃的制定和人工關(guān)節(jié)磨損情況的定期復(fù)查,使用戶更好的掌握病情及術(shù)后康復(fù)情況.
3.2.2 影像觀察與輔助診斷工具
對于牛羊養(yǎng)殖而言,只需要做好四方面的工作即可,其一是疫病防控,其二是圈舍修建,其三是草料,其四就是糞污處理。
(1)影像對比觀察
系統(tǒng)實(shí)現(xiàn)了雙視圖對比查看,通過分窗顯示功能,在不同的窗口顯示不同的影像,既可以是同一期不同位置的影像,也可以是不同時期拍攝的影像.通過雙視圖對比,我們可以清楚的發(fā)現(xiàn)畸形區(qū)域,不同時期的圖像對比也方便醫(yī)生追蹤術(shù)前畸形的變化情況和術(shù)后畸形的康復(fù)情況.
(2)DICOM 動態(tài)展示
實(shí)現(xiàn)DICOM 文件的動態(tài)展示.在cornerstone.js的支持下,客戶端上傳壓縮文件,調(diào)用后臺解壓處理程序完成解壓處理,指定加載列表,進(jìn)入DICOM 套圖可視化界面.通過手動或自動模式的播放,實(shí)現(xiàn)DICOM動態(tài)展示功能.便于醫(yī)生快速掌握下肢骨整體情況和快速定位畸形位置.
(3)輔助診斷工具
在cornerstoneTools.js的基礎(chǔ)上完成工具欄的建設(shè),實(shí)現(xiàn)測量工具、灰度變換、細(xì)節(jié)查看、精確定位和影像瀏覽5 個二維交互功能模塊,如圖6所示.
圖6 輔助診斷工具
1)測量工具
在診斷中,為了對畸形區(qū)域進(jìn)行定性和定量的表示.系統(tǒng)設(shè)計(jì)了角度測量、灰度測量、直線測量和面積測量4 種測量工具,其中面積測量分為:橢圓面積測量、長方形面積測量和自由測區(qū)測量以及相應(yīng)的清除、擴(kuò)展、保存、恢復(fù)上次保存等功能,如圖7所示.
圖7 二維交互界面
2)灰度變換
在診斷中,為了更好的觀察畸形部位和下肢骨組織,改善圖像畫質(zhì).設(shè)置鼠標(biāo)點(diǎn)擊事件,通過按住鼠標(biāo)上下拖動實(shí)現(xiàn)調(diào)整窗位/窗寬或進(jìn)行反色顯示.使圖像層次更加豐富,不同組織更容易分辨.
3)細(xì)節(jié)觀察
在診斷中,為了使醫(yī)生更加方便觀察畸形部位的細(xì)節(jié).通過調(diào)整Canvas 坐標(biāo)和圖像坐標(biāo)之間的變換矩陣實(shí)現(xiàn)放大、縮小、位移等功能.
4)精確定位
在診斷中,為了使醫(yī)生能夠快速定位顯示可疑切片.通過在主窗口左側(cè)批量顯示縮略圖,實(shí)現(xiàn)縮略圖點(diǎn)擊可視化的功能.醫(yī)生通過瀏覽縮略圖,實(shí)現(xiàn)診斷過程中的畸形精準(zhǔn)定位.
3.2.3 信息管理
信息管理模塊用于管理記錄病人的基本信息.包括:Patient Tag:患者姓名、出生日期、性別、身高體重等;Study Tag:檢查日期、檢查部位、檢查時年齡等;Seriesm Tag:圖像方位、層厚等;Image Tag:總行數(shù)、總列數(shù)、像素間距等信息,還包括儀器型號、所在單位等信息,還管理了DICOM 影像和三維模型存儲信息,可供醫(yī)生隨時在線查看病例資料,便于病情在線診斷與跟蹤.
系統(tǒng)以Pycharm2019為開發(fā)平臺進(jìn)行設(shè)計(jì),整體架構(gòu)為B/S 結(jié)構(gòu),客戶端采用Chrome 瀏覽器;Web 服務(wù)器采用Django 框架;數(shù)據(jù)庫使用MySQL;后臺程序采用Python 語言.以AJAX 通訊;數(shù)據(jù)通信采用JSON 格式.數(shù)據(jù)采用大小為512×512的患者下半身DICOM 影像.
測試機(jī)型為筆記本電腦,配置為CPU:酷睿i74510U處理器,內(nèi)存:4 GB,顯卡:英特爾HD Graphics Family.使用Win10 系統(tǒng)的IE 瀏覽器、Chrome 瀏覽器、Google瀏覽器和360 瀏覽器進(jìn)行測試.運(yùn)行結(jié)果表明4 種瀏覽器都能很好地顯示圖像,工具欄工具均能實(shí)現(xiàn),系統(tǒng)運(yùn)行速度也能滿足實(shí)際需要.具體運(yùn)行結(jié)果以Google瀏覽器為例說明.
系統(tǒng)主界面如圖8所示,圖8(a)左側(cè)為菜單目錄樹區(qū)域,中間窗口為DICOM 加載可視化,右下側(cè)為工具欄區(qū)域.圖8(b)為下肢骨三維重建后,返回結(jié)果三維可視化,模型成功剔除盆骨、腳骨,完成股骨、脛骨和腓骨的分離,生成的模型光滑無洞,細(xì)節(jié)處理較好,可以控制每個骨頭顯示或者隱藏,對于畸變識別非常有利.圖8(c)為人工關(guān)節(jié)重建后的人工關(guān)節(jié)可視化,可以通過按鈕控制人工關(guān)節(jié)和骨骼的顯示.圖8(d)為DICOM套圖批量可視化子窗口,窗口左側(cè)為縮略圖窗口,上方為工具欄,可實(shí)現(xiàn)多種交互操作.
圖8 主界面及各子界面
本系統(tǒng)基于下肢骨畸形手術(shù)的需要,開發(fā)了一種基于開源架構(gòu)的下肢骨畸形在線輔助診斷仿真系統(tǒng),用于幫助用戶尋找畸形.實(shí)驗(yàn)結(jié)果顯示,該系統(tǒng)可視化清晰、功能全面并且基本實(shí)現(xiàn)自動化、操作簡單無需較多的專業(yè)知識、基于B/S 架構(gòu)無需下載插件,能夠滿足早期軟件設(shè)計(jì)的需要.其實(shí)用價(jià)值較高,既能在前期從二維和三維方向輔助醫(yī)生快速的找到畸形問題,又能為后期人工關(guān)節(jié)置換等手術(shù)復(fù)查中提供確切資料,所存儲的病例信息也可以被用戶隨時查閱比較,便于掌握病情進(jìn)展?fàn)顩r.該系統(tǒng)具有很大的潛力,下一步將要研究如何在系統(tǒng)上實(shí)現(xiàn)畸形的自動識別與矯正.