• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Android的醫(yī)學影像處理軟件的設計和實現(xiàn)

      2015-09-09 09:48:53徐奇周萬春郭峰劉棟梁
      電腦知識與技術(shù) 2015年16期
      關鍵詞:圖像處理

      徐奇 周萬春 郭峰 劉棟梁

      摘要:針對移動醫(yī)療概念在醫(yī)療機構(gòu)的逐漸普及,在智能終端特別是Android設備上調(diào)閱和分析醫(yī)學影像成為迫切需求的情況,提出基于Android的醫(yī)學影像處理軟件項目。選擇DICOM標準的開源實現(xiàn)之一DCMTK庫作為基礎,并使用Qt平臺進行開發(fā)。結(jié)果,根據(jù)臨床PACS軟件的實際需求,初步實現(xiàn)了醫(yī)學影像的數(shù)據(jù)通信、搜索顯示、圖像編輯等基本功能。

      關鍵詞:安卓應用 ;Qt平臺;圖像處理;MVC框架

      中圖分類號:TN929 文獻標識碼:A 文章編號:1009-3044(2015)03-0209-03

      The Design and Implementation of Medical Image Processing Software Base on Android System

      XU Qi, ZHOU Wan-chun, GUO Feng, LIU Dong-liang

      (WenZheng College Of Soochow University ,Suzhou215104 , China)

      Abstract: Since the concepts of mobile medical increasing popularity in medical institutions , it has become an urgent demand that review and analysis of medical images in the intelligent terminal especially Android device . In view of this situation , the medical image processing software base on android system project has been raised . Select the DCMTK library as a basis , which is the implementation of DICOM standard.In addition , the software is developed by Qt platform . As a result , according to the actual demand of PACS software,it has realized basic functions of medical image , such as data communication , search and display , image processing and so on.

      Key words: Android applications; Qt platform; image processing; model view controller

      圖像存儲與傳輸系統(tǒng)是基于醫(yī)學數(shù)字成像及通信標準(Digital Imaging and Communication in Medicine ,簡稱DICOM)。DICOM3.0標準使得不同廠商生產(chǎn)的醫(yī)學設備拍攝的醫(yī)學影像進行統(tǒng)一的存檔和傳輸成為現(xiàn)實。PACS系統(tǒng)就是把醫(yī)院影像科日常產(chǎn)生的各種醫(yī)學影像通過DICOM3.0標準以數(shù)字方式保存起來,當需要的時候在一定的授權(quán)下能夠很快的調(diào)回使用,同時增加一些輔助診斷管理功能。為了適應現(xiàn)代移動應用的發(fā)展趨勢,開發(fā)移動平臺上的PACS軟件,已經(jīng)成為當前必要的工作了。醫(yī)生、病人和醫(yī)科大學學生都非常希望能在移動設備上進行醫(yī)學影像的顯示以及處理,從而達到提高工作學習效率,方便病人看病的目的。但是,移動應用與個人電腦上的軟件不同,沒有強大的CPU和巨大的內(nèi)存支持,在讀取大量數(shù)據(jù)的DICOM圖片時內(nèi)存不足,需要進行特別的優(yōu)化??紤]到手機ARM芯片處理效率低,許多浮點數(shù)的運算算法在手機上難以實現(xiàn)、許多數(shù)據(jù)庫的排序以及緩存機制都需要修改至適應移動平臺等等的問題需要解決,特別是軟件本身的架構(gòu)設計與實現(xiàn)也需要重新考慮。本文主要介紹了基于Android的醫(yī)學影像處理軟件的設計和其中三個模塊的實現(xiàn),將分為三個部分:環(huán)境介紹、軟件結(jié)構(gòu)和模塊介紹,重點在詳細闡述軟件結(jié)構(gòu)的設計,能讓讀者迅速理解設計思路以及部分模塊的實現(xiàn)方法,提供設計思路[1-2]。

      1 開發(fā)環(huán)境簡介

      開發(fā)移動設備的應用時,強大的移植性是非常有利的優(yōu)勢,因此使用Qt平臺作為開發(fā)工具,Qt平臺強大的代碼復用性能夠使C++代碼應用到不同的系統(tǒng)上,而選擇Android系統(tǒng)是因為Android系統(tǒng)作為開源的操作系統(tǒng),具有最高的市場占用率,且開發(fā)文檔比較完整,遇到問題能夠及時解決,開發(fā)成本較低。

      Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動設備,如智能手機和平板電腦,由Google公司和開放手機聯(lián)盟領導及開發(fā)。第一部Android智能手機發(fā)布于2008年10月。至此,Android迅速逐漸擴展到平板電腦及其他領域上,如電視、數(shù)碼相機、游戲機等。 Android系統(tǒng)的市場占有率已經(jīng)達到了驚人的78.1%

      Qt是面向?qū)ο蟮腸++開發(fā)框架,使用元對象編譯器(Meta Object Compiler, moc),易于擴展,允許組件編程。2014年4月,Qt實現(xiàn)了對于iOS的完全支持,新增WinRT、Beautifier等插件,廢棄了Python接口的GDB調(diào)試支持,集成了基于Clang的C/C++代碼模塊,并對Android支持做出了調(diào)整,至此實現(xiàn)了全面支持iOS、Android、WinPhone平臺的全面支持。

      2 軟件結(jié)構(gòu)

      2.1 軟件需求分析

      針對Android系統(tǒng),此次開發(fā)使用的基礎版本為Android 2.3,并且向上兼容。針對軟件功能方面,分為三個部分:數(shù)據(jù)庫通信、界面顯示和圖片處理。數(shù)據(jù)庫通信方面,Android端的軟件需要實現(xiàn)和服務器的通信功能,能登錄服務器,將服務器上的DICOM格式的影像文件按照安全協(xié)議有選擇地下載到本地,并檢查文件完整性和安全性。界面顯示方面,軟件能夠讀取本地DICOM文件[3-4],以列表的形式實現(xiàn)從選擇病人的一次Study(檢查序列)定位到該次Study下的所有影像,然后通過選擇一個影像序列展示該影像序列下的第一幅DICOM圖片。最后在圖像處理方面,需要完成常規(guī)PACS客戶端軟件的基礎功能,包括旋轉(zhuǎn)、平移、窗寬窗位的調(diào)整、多幀影像的播放等功能,要求能使用手指簡單快速的完成所有功能的使用[5]。

      2.2 軟件結(jié)構(gòu)設計

      對于軟件需求,筆者與團隊成員采用Qt的MVC模型來實現(xiàn),實現(xiàn)的方式為QML和C++混合編程模式,QML語言負責界面的顯示,而C++語言負責邏輯處理,其中邏輯部分使用Qt自帶的類庫、以及龐大的CTK庫下DCMTK類庫。為了實現(xiàn)軟件的需求,我們設計如下軟件結(jié)構(gòu):

      圖1 UI的代碼設計

      我們將界面分為三個部分,StudyUI(檢查序列界面)、SeriesUI(影像序列界面)、ImageViewer(圖像編輯器)。此外每一個界面對應著相應的C++邏輯代碼,以及數(shù)據(jù)model代碼。[6]StudyUI負責顯示每一條study記錄,邏輯代碼部分對應著遠程數(shù)據(jù)庫通信模塊、能完成本地數(shù)據(jù)庫與服務器比對,增刪查改等任務。SeriesUI對應著本地數(shù)據(jù)庫查詢模塊。ImageVewer對應著復雜的圖像處理模塊,包括DICOM格式圖片的讀入模塊、窗寬窗位調(diào)整模塊、圖像縮放、旋轉(zhuǎn)、平移、翻轉(zhuǎn)模塊、 病人信息顯示模塊、影像標記模塊、病人前后左右信息計算模塊、多幀播放模塊、觸摸事件模塊、圖像標記模塊等等。

      3 軟件模塊的實現(xiàn)

      3.1 觸摸模塊的設計與實現(xiàn)

      手勢控制一向是移動應用吸引眼球的特色功能,相對于個人電腦端復雜的操作,手勢控制顯得更加的簡單高效。針對本款軟件的多種圖像處理模塊,我們對相關操作進行了手勢簡化。本軟件復用了個人電腦端軟件鼠標事件的C++代碼,考慮到Android端和個人電腦端觸摸屏的使用,需要在設計中加入觸摸模塊以改善用戶在觸摸屏方面的體驗。對于觸摸屏的觸摸控制QT平臺已經(jīng)有相關代碼的封裝,使用QTouchEvent已經(jīng)可以完成觸摸事件的接收和處理。代碼結(jié)構(gòu)設計如下圖:

      圖2 觸摸事件流程

      TouchEvent與MouseEvent并列,共用圖像處理模塊的邏輯代碼,在觸摸設備上TouchEvent響應觸摸,連上鼠標操作由MouseEvent響應。經(jīng)過測試,在Android手機上手勢控制體驗良好,優(yōu)化過的圖像處理代碼,能配合手勢控制順暢運行。

      3.2 病人前后左右信息計算模塊的設計與實現(xiàn)

      病人前后左右信息的顯示對于醫(yī)生和患者觀看影像信息顯得極其重要,此模塊的設計需要學習些許的醫(yī)學知識以及計算機圖形學知識。[7]查閱DICOM標準我們可以發(fā)現(xiàn)這樣一個字段Image Orientation(0020,0037)表示的是圖像第一行和第一列相對于病人的方向。而在DICOM坐標系是根據(jù)病人的方向來確定的,其中X軸正向指向病人的左側(cè),Y軸正向指向病人的背部,Z軸正向指向病人的頭部。在醫(yī)學影像處理軟件中,最常見的是將導入系統(tǒng)的MRI/CT序列以三視圖的形式進行呈現(xiàn),分別為軸狀平面(Transverse/Axisplane)、冠狀平面(Coronal/Frontal plane)和矢狀平面(Sagittal plane)。以下圖顯示的是這三個方位對應的切面方位,以及在成像過程中對應的坐標系。

      圖3 成像坐標系

      首先需要在窗口的top,bottom,left,right中間找到四個單位向量,(0,1,0),(0,-1,0),(-1,0,0),(1,0,0),將其對應的窗口坐標點轉(zhuǎn)化為世界坐標系的點,求出與(0,0,0)所對應的世界坐標原點的四個向量并且歸一化,作為下述ComputeOrientaton函數(shù)的參數(shù)傳進去,即可得到當前圖像在世界坐標系下的方位。使用以下算法,能計算出DICOM圖片中拍攝內(nèi)容的方向,實現(xiàn)了PACS軟件的重要功能之一。代碼如下:

      ImageOrientationLayer::ComputeOrientation(Vector3D vector)

      {

      char *orientation=new char[4];

      char *optr = orientation;

      *optr='\0';

      char orientationX = vector.getX() < 0 ? 'R' : 'L';

      char orientationY = vector.getY() < 0 ? 'A' : 'P';

      char orientationZ = vector.getZ() < 0 ? 'F' : 'H';

      double absX = fabs(vector.getX());

      double absY = fabs(vector.getY());

      double absZ = fabs(vector.getZ());

      int i;

      for (i=0; i<3; ++i) {

      if (absX>.0001 && absX>absY && absX>absZ)

      {

      *optr++=orientationX;

      absX=0;

      }

      else if (absY>.0001 && absY>absX &&

      absY>absZ)

      {

      *optr++=orientationY;

      absY=0;

      }

      else if (absZ>.0001 && absZ>absX &&

      absZ>absY)

      {

      *optr++=orientationZ;

      absZ=0;

      }

      else break;

      *optr='\0';

      }

      return orientation;

      }

      3.3 多幀圖像播放模塊的設計與實現(xiàn)

      對于DICOM文件的圖像格式進行一下簡單的介紹:DICOM 標準的的文件通常由一個DICOM文件頭部和一個DICOM數(shù)據(jù)集合組成。DICOM文件頭部 ( DICM File Meta Information) 是用來標記數(shù)據(jù)集信息的字段。文件導言是文件頭部的最先出現(xiàn)的字段, 而且由128個兩位16進制字節(jié)組成的, 緊接著的是DICOM文件標記前綴 , 這是字段長度為4個字節(jié)的一個字符串,它的內(nèi)容為“DICM”, 可根據(jù)這個字段的值來判斷當前使用的文件格式是否符合DICOM標準。[8]文件頭部還包含著其它的文件信息,這些信息有著很重要的作用, 像傳輸文件的數(shù)據(jù)格式等等。參考以上格式,對于多幀圖像的文件數(shù)據(jù)流(以JPG格式為例)文件內(nèi)容如下:

      (7FE0, 0010) + ‘OB+ (0000) + (FFFF, FFFF) 解釋:最后4個字節(jié)全是F,表明是未知長度

      (FFFE, E000) + (xxxx, xxxx) + (FrameNum*4)

      (FFFE, E000) + (xxxx, xxxx) 解釋:(xxxx,xxxx)是第一幀圖像大小

      ………… 第一幀圖像數(shù)據(jù)區(qū)

      (FFFE, E000) + (xxxx, xxxx) 解釋:(xxxx,xxxx)是第二幀圖像大小

      ………… 第二幀圖像數(shù)據(jù)區(qū)

      …………

      以此類推……

      (FFFE, E000) + (xxxx, xxxx) 解釋:(xxxx,xxxx)是最后一幀圖像大小

      ………… 最后一幀圖像數(shù)據(jù)區(qū)

      (FFFE, E0DD) + (0000, 0000) 解釋:圖像結(jié)束

      針對DICOM文件數(shù)據(jù)讀取的設計,為了能讀取各種醫(yī)學影像格式如CT 、M R等。我們設計了一套算法,能正常導出我們所需的像素值,原理如圖4所示。

      圖4 醫(yī)學影像讀取流程

      在Load Pixel 這一步會進行復雜的類型判斷,包括圖像是否壓縮、使用何種壓縮格式、是否為彩色等等,之后通過DICOMTK庫提供的接口讀取像素信息轉(zhuǎn)換為QPixelMap輸出,添加進度條控件,使用Qt的多線程機制控制圖片的播放、暫停、加速、減速。

      4 小結(jié)

      醫(yī)院是一個社會經(jīng)濟實體,PACS系統(tǒng)是現(xiàn)代醫(yī)院的重要標志之一,是數(shù)字化醫(yī)院的核心業(yè)務軟件,它的順利運行將為電子病歷、醫(yī)療區(qū)域化、社會保險網(wǎng)絡化打下堅實基礎。本文介紹了在Android系統(tǒng)上設計和實現(xiàn)PACS系統(tǒng)的醫(yī)學影像處理軟件,詳細闡述了該軟件的設計方式以及三個功能模塊的實現(xiàn)。本文的工作可以為后續(xù)類似開發(fā)提供參考。

      致謝:感謝指導老師紀其進副教授的悉心指導,感謝項目組其他成員的通力合作!

      參考文獻 ;

      [1] 張帆, 李曉陵, 王豐, 等. 基于PACS平臺PBL結(jié)合CBL教育模式在醫(yī)學影像學教學中的應用[J]. 黑龍江教育: 理論與實踐, 2015(3): 60-61.

      [2] 蔣偉浩, 鐘征祥, 王志剛, 等. 公共平臺型PACS建設的關鍵問題研究[J]. 中國醫(yī)院, 2013(9): 72-75.

      [3] 張起榮, 趙芳云, 顧嘉楠, 等. 基于小型醫(yī)院放射科的PACS模板設計[J]. 科學之友, 2013(12): 156-157.

      [4] 王虹, 劉景文, 李學斯, 等. 基于iOS設備的移動PACS應用開發(fā)[J]. 中國數(shù)字醫(yī)學, 2014(1): 50-51,55.

      [5] 謝明偉, 胡輝軍, 許健敏, 等. PACS/RIS臨床應用中常見問題及解決方法[J]. 中國醫(yī)療設備, 2013(12): 96-98.

      [6] 薛藝紅, 楊素玉, 李蕊, 等. 基于安卓的移動護理信息系統(tǒng)開發(fā)與應用[J]. 中國數(shù)字醫(yī)學, 2014(4): 64-65.

      [7] 李鵬, 段云燕, 趙宏波, 等. PACS系統(tǒng)在醫(yī)學影像見習課中的應用[J]. 科技視界, 2015(5): 147,154.

      [8] 何俊詩, 梁鵬, 羅英華, 等. 基于語義的醫(yī)學圖像檢索系統(tǒng)在PACS系統(tǒng)中的設計與實現(xiàn)分析[J]. 臨床醫(yī)學工程, 2013(7): 781-782.

      猜你喜歡
      圖像處理
      海戰(zhàn)場偵察圖像處理技術(shù)圖譜及應用展望
      基于ARM嵌入式的關于圖像處理的交通信號燈識別
      電子制作(2019年15期)2019-08-27 01:12:12
      基于圖像處理的機器人精確抓取的設計與實現(xiàn)
      機器學習在圖像處理中的應用
      電子制作(2018年18期)2018-11-14 01:48:20
      Bayesian-MCMC算法在計算機圖像處理中的實踐
      電子測試(2018年6期)2018-05-09 07:32:01
      改進壓縮感知算法的圖像處理仿真研究
      電子測試(2017年11期)2017-12-15 08:57:08
      模糊圖像處理,刑事偵查利器
      圖像處理技術(shù)的實戰(zhàn)應用
      遙感圖像處理軟件在文物高光譜數(shù)據(jù)分析中的應用
      基于圖像處理的定位器坡度計算
      電氣化鐵道(2016年4期)2016-04-16 05:59:46
      万源市| 永靖县| 杂多县| 尼玛县| 皮山县| 巴南区| 社旗县| 泽库县| 武宁县| 介休市| 南宫市| 班戈县| 宣威市| 江油市| 土默特右旗| 卢湾区| 科技| 昆明市| 南溪县| 普兰县| 潼南县| 岱山县| 庆安县| 元江| 三门县| 峨眉山市| 元阳县| 周口市| 新郑市| 银川市| 三亚市| 平湖市| 西畴县| 台江县| 斗六市| 桃江县| 抚宁县| 黑河市| 绍兴县| 航空| 宝鸡市|