孫超,孟慶民,王力,姚吉進,宗寶良,郭永新,焦青 山東第一醫(yī)科大學(山東省醫(yī)學科學院)醫(yī)學信息工程學院,泰安市,706 泰安市中心醫(yī)院介入放射科,泰安市,7000 山東第一醫(yī)科大學(山東省醫(yī)學科學院)放射學院,泰安市,706
數字減影血管造影技術(Digital Subtraction Angiography, DSA)是常規(guī)血管造影術與電子計算機圖像處理技術相結合的產物,是冠狀動脈疾病診斷的金標準[1],在頭頸部及中樞神經系統(tǒng)疾病、心臟大血管疾病、腫瘤和外周血管疾病的診斷與治療中都發(fā)揮著重要作用,有助于患者病情的及時控制。
在臨床與科研實踐中,DSA檢查會積累大量數據,包括患者個人信息、實驗室檢查以及影像學信息。一般情況下,這些信息均分散地保存在計算機中,在信息的存儲及檢索等方面,會存在一些問題,如圖像存儲介質所占的空間不斷增加,各種不同檢查信息分別存儲,不便于數據的存放和查找,同時傳統(tǒng)圖像存儲和管理只在本院進行,難以進行異地會診等[2]?;谂R床及科研實踐的實際需求,該研究構建了一個DSA信息管理與圖像分析系統(tǒng),可實現患者多種檢查信息的分類管理及DSA圖像信息的處理,并可實現多地域信息的共享,有效地彌補了傳統(tǒng)醫(yī)學影像系統(tǒng)的不足。
該研究在Windows 環(huán)境下,以Eclipse 作為開發(fā)工具,以MySQL為數據庫開發(fā)平臺,Tomcat 網絡信息服務作為應用服務器,以Java作為開發(fā)語言,并利用Java內部嵌入Matlab代碼將其強大的計算能力融入到系統(tǒng)當中,構建了一個DSA信息管理及圖像分析系統(tǒng),該文對系統(tǒng)結構及建立過程進行詳細介紹。
該系統(tǒng)基于Browser/Server(瀏覽器/服務器模式)[3],分為四大模塊,即信息管理、圖像處理與分析、高級檢索及臨床數據管理(圖1)。信息管理部分實現DSA的DICOM文件的上傳、刪除及查看;圖像處理與分析部分實現對DSA視頻圖像的亮度與對比度調節(jié)、直方圖均衡化、色彩變換、測量以及圖像的邊緣檢測與分割等操作;高級檢索部分實現對數據庫信息的單項及多項查詢;臨床數據管理部分實現患者臨床檢查信息的存儲、刪除及修改等操作。
圖1 系統(tǒng)框架圖Fig.1 System framework
信息管理模塊可實現患者基本信息及X線機參數信息的上傳、刪除及查看(圖2)。患者基本信息包括姓名、年齡、性別及出生日期等;造影X線機參數信息包括體位、劑量、電壓、曝光時間及光柵角度等。
圖2 信息管理Fig.2 Information management
實現上傳功能時,首先利用JavaScript獲取文件路徑,使用ajax上傳到Web服務器;然后將Matlab中的dicominfo函數導出為jar包,并導入至Eclipse,通過Java語言調用dicominfo函數讀取DICOM文件信息;最后借助SQL語句將DICOM文件信息存儲至MySQL數據庫。刪除及查看文件時,通過ajax將選定的文件名信息傳送到后臺,借助SQL語句進行刪除及查詢操作,并刷新前端數據。
在進行圖像處理與分析時,首先選取獲取視頻信息(圖3)。用戶直接拖拽視頻文件到視頻播放區(qū)域,即可實現上傳文件到WEB服務器,點擊獲取視頻信息按鈕即可獲取視頻文件的幀數、幀高度、幀寬度及時長等信息。拖拽視頻上傳功能的實現是通過JavaScript的事件監(jiān)聽函數ondragover與ondragleave捕獲視頻文件,并阻止瀏覽器彈出新的標簽頁,再利用ondrop函數調用ajax上傳函數將文件傳送到后臺[4-5]。在后臺利用Java語言將視頻文件上傳到WEB服務器中的upload文件夾。獲取視頻信息時,通過ajax將文件路徑信息傳遞給后臺,后臺調用Matlab生成的jar包讀取指定路徑的視頻文件信息,并將信息返回至前端。
圖3 獲取視頻信息Fig.3 Video information obtaining
系統(tǒng)在實現DSA原始圖像(圖4(a))的直方圖均衡化(圖4(b))時,將Matlab中的histeq函數封裝為一個自定義函數,其輸入參數為原圖像及變換后圖像的保存路徑,第三方jar包在Eclipse上調用該自定義函數。系統(tǒng)利用JavaScript在前端直接實現對圖像的亮度調節(jié)(圖4(c))與對比度調節(jié)(圖4(d))。亮度調節(jié)是利用線性運算的方法,將每一個像素加上一個增強系數,使圖像整體變亮或變暗。在實現對比度調節(jié)時,首先提取圖像中每個RGB像素值,然后利用Crgb=RGB/255將像素值范圍縮小為0~1,最后利用公式 [(Crgb-0.5)×contrast+0.5]×255計算出改變對比度后每一點新的像素值。
圖像邊緣檢測(圖4(e))可大幅度減少數據量并保留圖像的結構屬性。系統(tǒng)采用Sobel邊緣檢測算法,該算法比較簡單,實際應用效率高于canny邊緣檢測算法[6]。邊緣提取分為濾波、增強和檢測三個步驟,使用Matlab語言編寫各主要功能函數。首先使用fspecial函數和imfilter函數對圖像進行高斯濾波,然后采用中心為5的8鄰域拉普拉斯算子和圖像卷積達到銳化圖像的目的,最后調用edge(I,Sobel)函數進行邊緣檢測。
圖4 圖像處理與分析Fig.4 Image process and analysis
圖像分割是將圖像中的血管與背景進行分割。該系統(tǒng)采用基于閾值的分割方法[7],首先使用fspecial('gaussian', HSIZE, sigma1)函數分別生成像素矩陣A和B。生成矩陣A的函數中HSIZE參數值較大(1 000),因此濾波后圖像接近于原圖像的背景,生成矩陣B的函數中HSIZE參數值較小(10),起到去噪的作用,兩個矩陣相減即可將血管從背景中分割出來(圖4(f))。
系統(tǒng)可對圖像進行長度與面積的測量(圖5)。測量長度時,首先使用canvas.onmousemove函數對Canvas畫板對象設置鼠標監(jiān)聽事件,獲取起點坐標(x1,y1)和終點坐標(x2,y2),然后使用stroke函數在兩點間繪制直線,利用公式求出兩點間距。面積測量包括任意形狀、矩形和圓形面積測量,首先在Canvas畫板上設置監(jiān)聽事件,繪制圖形后將畫板保存為img對象,對圖像內部的連通區(qū)域進行掃描,統(tǒng)計連通區(qū)域內部像素個數,得到的結果與特定比例的乘積即為區(qū)域面積。
高級檢索模塊(圖6)可供用戶查詢數據庫內的所有信息,包括單項查詢和多項查詢。默認檢索方式是按照文件名進行檢索,在主界面輸入要查詢的文件名,點擊搜索按鈕即可進行檢索。高級搜索條件包括姓名、文件名、年齡區(qū)間、體位區(qū)間及病變位置等。
圖5 圖像測量Fig.5 Image measurement
在MySql數據庫中,通過SELECT語句完成檢索查詢操作,為了優(yōu)化數據庫的性能,本系統(tǒng)采用C3P0數據庫連接池負責分配、管理和釋放數據庫連接[5]。使用SELECT * FROM WHERE語句查詢滿足條件的字段信息,WHERE后輸入邏輯運算符AND進行多項查詢,輸入關鍵字BETWEEN AND進行范圍查詢,輸入的信息由前端通過ajax傳遞到后臺。在前端界面仍應用緩沖池技術,將查詢條件信息保存在Cookie域中,這樣即使刷新系統(tǒng),輸入的信息也不會丟失。
圖6 高級檢索Fig.6 Advanced search
為了防范醫(yī)療風險,保障手術安全,在進行血管造影手術前,需要對患者進行常規(guī)檢查,包括血常規(guī)、尿常規(guī)、腎功能及超聲檢查等。該系統(tǒng)將患者的臨床檢查數據按檢查類型保存在數據庫中,用戶可按照單項查詢或多項查詢的方式對信息進行檢索。系統(tǒng)還可統(tǒng)計數據庫中各個年齡段患者的人數并以柱狀圖的形式顯示。
在主界面(圖7),用戶通過點擊菜單欄的檢查類型和NEXT按鈕,滑動切換不同的填寫模塊?;瑒有Ч遣捎胏ss中的animate方法改變模塊的位置來實現。當用戶填寫完所有信息后,點擊提交按鈕,系統(tǒng)將信息以json格式提交到WEB服務器,在后臺利用java語言接收數據,然后執(zhí)行INSERT INTO 語句將信息保存至數據庫。用戶點擊查詢按鈕,選擇查詢條件,系統(tǒng)執(zhí)行SELECT * FROM WHERE 語句來查詢指定信息,并將信息返回到用戶界面。系統(tǒng)使用JavaScript導入可視化包echarts.js,對查詢到的各個年齡段信息進行統(tǒng)計分析,并制作柱狀圖顯示。
圖7 臨床數據管理Fig.7 Clinical data management
隨著信息技術迅速發(fā)展,互聯網已成為集信息采集、處理、傳播、開發(fā)與利用等多種功能于一體的平臺。該系統(tǒng)采用的Browser/Server(瀏覽器/服務器模式)結構簡化了客戶端電腦載荷,減輕了系統(tǒng)維護與升級的成本和工作量,其最大的優(yōu)點是可以跨平臺操作而無需安裝任何專門軟件,可實現客戶端零維護[8]。系統(tǒng)采用的MySQL關系數據庫是目前運行速度最快的SQL語言數據庫,大大提高了系統(tǒng)的運行效率[9]。
該系統(tǒng)采用JavaScript、ImageJ和Matlab三種方式結合進行圖像處理,JavaScript可減少網絡數據傳輸,便于操縱HTML對象,可提高系統(tǒng)的運行效率[10],適用于簡單的圖像處理;ImageJ是一種開源的圖像處理利器,程序小,運行快,借助其中的工具包可進行復雜的圖像處理[11];Matlab具有高性能數據運算與可視化的優(yōu)勢,適用于算法復雜度高的圖像處理[12]。該系統(tǒng)整合了上述三種方法的優(yōu)勢,針對不同的圖像處理操作需求采用合適的語言,不僅增強了圖像處理效果,而且提高了系統(tǒng)的運行效率。
該系統(tǒng)可進行圖像的邊緣檢測與分割,是感興趣血管部分提取的基礎,后續(xù)可進行DSA圖像中血管骨架及血管中心線的提取,以實現對冠狀動脈血管夾角與直徑的測量,對于判斷某段血管是否病變,病變程度及病變位置具有重要意義。
該研究依據臨床與科研實際需求,運用模塊化的開發(fā)思想,基于Java Web開發(fā)了DSA信息管理與圖像分析系統(tǒng),實現了對圖像數據的高效管理與分析。該系統(tǒng)可供一線臨床科研人員回顧及分析DSA相關數據,也可作為教學工具為學生展示DSA檢查原理及圖像信息,界面簡約友好,易于操作,具有一定的實用價值。