基于Android平台下医学图像开窗显示软件的设计与实现毕业设计论文.docx

上传人:b****8 文档编号:10449951 上传时间:2023-02-11 格式:DOCX 页数:52 大小:896.44KB
下载 相关 举报
基于Android平台下医学图像开窗显示软件的设计与实现毕业设计论文.docx_第1页
第1页 / 共52页
基于Android平台下医学图像开窗显示软件的设计与实现毕业设计论文.docx_第2页
第2页 / 共52页
基于Android平台下医学图像开窗显示软件的设计与实现毕业设计论文.docx_第3页
第3页 / 共52页
基于Android平台下医学图像开窗显示软件的设计与实现毕业设计论文.docx_第4页
第4页 / 共52页
基于Android平台下医学图像开窗显示软件的设计与实现毕业设计论文.docx_第5页
第5页 / 共52页
点击查看更多>>
下载资源
资源描述

基于Android平台下医学图像开窗显示软件的设计与实现毕业设计论文.docx

《基于Android平台下医学图像开窗显示软件的设计与实现毕业设计论文.docx》由会员分享,可在线阅读,更多相关《基于Android平台下医学图像开窗显示软件的设计与实现毕业设计论文.docx(52页珍藏版)》请在冰豆网上搜索。

基于Android平台下医学图像开窗显示软件的设计与实现毕业设计论文.docx

基于Android平台下医学图像开窗显示软件的设计与实现毕业设计论文

 

内蒙古科技大学

本科生毕业设计说明书(毕业论文)

 

题目:

基于Android平台下医学图像开窗显示软件的设计与实现

基于android平台下医学图像开窗显示软件的设计与实现

摘要

随着人们生活水平的提高,科技迅速的发展,智能手机逐渐普及。

2007年Google推出了基于Linux的自由及开放源代码的Android操作系统,目前已成为智能手机的主流操作系统。

Android是第一个免费、开源、并且完全可定制的移动平台,该平台下的应用程序也越来越多,但是基于Android系统的医学图像处理软件并不多见。

DICOM是医学图像信息系统领域中的核心,它主要涉及医学影像的编码格式与网络通信协议,是构建放射学信息系统(RIS)和图像存档与通信系统(PACS)的国际标准之一。

DICOM也是设备无关的解决方案之一,实现信息资源共享的技术基础。

本设计使用Google开源项目中的解析包,实现了对医学图像文件的解析。

设计论文在介绍Java语言、Eclipse软件、Android操作系统以及医学图像相关内容的基础上,说明了整个设计过程。

为了充分利用移动平台的优势,方便医生随时诊疗,本设计要求实现基于Android平台下的DICOM格式的医学图像的读取和显示。

 

关键词:

Android平台;DICOM;医学图像显示

TheMedicalImageDisplaySoftwareDesignandImplementationBasedonAndroidOS

Abstract

Withtheimprovementofpeople'slivingstandards,rapiddevelopmentofscienceandtechnology,smartphoneshasbeenpopularized.In2007,Googlehaslaunchedafreeandopensourceoperatingsystem,whichisnamedAndroid.Ithasbecomethemainstreammobileoperatingsystem.Androidisthefullycustomizablemobileplatform,moreandmoreapplicationsappearedontheplatform,buttherearefewAppcanprocessmedicalimage.

DICOMisthecoreofthefieldofmedicalimageinformationsystem,whichmainlyrelatestothemedicalimagecodingschemeandnetworkcommunicationprotocol.Alsoit'soneoftheinternationalstandardstobuildaRadiologyInformationSystem(RIS),PictureArchivingandCommunicationSystem(PACS).OneofthesolutionsisindependentofDICOMequipment,technicalbasisforrealizinginformationresourcessharing.

ByusingthecodesofopensourceprojectsfromGoogle,theapplicationhasrealizedtheparsingofmedicalimagefiles.ThispaperintroducestheJavalanguage,Eclipse,Androidoperatingsystem,aswellasrelatedcontentonthebasisofmedicalimage.Italsoillustratestheentiredesignprocedure.TheApplicationfullyusestheadvantagesofmobileplatforms,andsimplifiesdiagnoseprocedure.Itsmainfunctionistoparsemedicalimagefilesanddisplaytheimages.

 

Keywords:

TheAndroidplatform;DICOM;MedicalImagedisplay

绪论

引言

在20世纪90年代初,随着通信技术、网络技术以及计算机技术的发展,图像处理和分析以及PACS(PictureArchivingandCommunicationSystem)在医学教学、远程医疗以及临床诊断中发挥着越来越重要的作用。

而DICOM(DigitalImagingandCommunicationsinMedicine,医学数字成像和传输)是PACS系统中应用的主要标准,它涉及到信息系统中最主要也是最困难的医学图像的成像和通信,可以直接应用在RIS(RadiologyInformationSystem,放射科信息系统)和PACS中[1]。

DICOM(DigitalImagingandCommunicationsinMedicine)是NEMA(美国制造商协会)和ACR(美国放射学会)联合制定的一种规定数字医学影像和相关信息的格式及其信息交换方法的国际标准,现已几乎成为世界各国都遵循的医学图像标准,是医院间以及国际间医学图像交流的基础。

Android是一款针对手机的全新开源软件工具包,它由Google和开发手机联盟(OpenHandsetAlliance)共同创建。

Android有望在数年内遍布于数百万部手机和其他移动设备中,从而成为应用程序开发人员的主要平台。

Android系统由于功能非常丰富,所以一直受广大开发爱好者的喜爱。

但是在Android平台下关于医学图像方面的软件却很少,现有的大多数图像处理软件都不能直接读取和显示dcm格式的医学图像文件。

所以在Android平台下编程实现DICOM格式的医学图像的读取和显示是非常有意义的。

本次毕业设计的主要任务是用Java语言结合eclipse软件,实现了Android平台下DICOM格式的医学图像的读取和显示。

医学图像简介

医学数字成像和传输是由ACR(AmericanCollegeofRadiology,美国放射学会)和NEMA(NationalElectricalManufacturersAssociation,国家电气制造商协会)共同制定的医学图像成像和传输的标准。

其目的是为在不同的医学影像设备间提供一个一致性的接口,以实现数字影像在各种医学影像设备间交换传输。

随着DICOM协议不断的发展完善,各医学影像设备制造商纷纷推出符合DICOM标准的医学影像设备,DICOM已成为医学影像的公认标准,目前版本为3.0。

DICOM3.0标准有15部分组成,其中第10部分“用于介质交换的存储介质和格式”给出DICOM文件格式[2]。

DICOM文件是指按照DICOM标准存储的医学文件。

DCM文件一般由DICOM文件头(FileMetaInformation)和DICOM数据集(DataSet)组成。

每个DCM文件包含了一个单独的服务对象对(Service-ObjectPair,SOP)实例(如图1)。

 

DICOMPart5Encoding

图1DCM文件结构

在DICOM文件中最基本的单元是数据元素,DICOM数据集就是由DICOM数据元素按照一定的顺序排列组成的。

标识符是一个2B无符号整数对,分别代表组号和元素号,DICOM所有的数据元素都可以用标签来惟一表示[3]。

数据类型(VR)是2B的字符串,指明了该数据元素中的数据是哪种类型。

不同的数据类型决定了数据的不同读取方式。

数据长度是一个2B或4B(取决于显示或隐示VR)的无符号整数,指明该数据元素的数据域中数据的长度。

数据域指明数据的具体数值,该字段的数据类型由数据元素的VR所明确定义。

DICOM的发展过程

20世纪70年代以来,计算机断层成像技术和其它数字成像技术发展极其迅速,很多厂商都研制了具有计算机的成像设备,而且它们制定了各自不同的图像格式。

随着计算机网络的普及和其在医学上的广泛应用,在不同厂商生产的设备之间交换图像和相关信息的需求日趋迫切,而缺乏统一的标准成为图像交换的主要障碍。

因此,ACR和NEMA在1983年组成一个联合委员会并发起制定一个公共的标准,其目的是:

  

(1)有助于开发和推广图像存档和传输系统(PACS),并能与其它医学信息系统联系。

  

(2)促进数字图像设备的网络化,而不论设备的开发商是谁。

  (3)建立有价值的诊断信息数据库,它能处理地理上分散的不同设备间的请求。

  1985年,该委员会发表了ACR-NEMA1.0标准(No.300-1985)。

1986年10月和1988年1月又公布了该标准的两个修订版。

1988年公布了ACR-NEMA2.0标准(No.300-1988)。

然而由于技术上不成熟,这些规范并没有被广泛采用。

但是这些努力吸引了国际上许多著名的医学影像设备制造商的关注及参与,终于在1996年,委员会发表了一套新的规范,正式命名为DICOM3.0。

此规范公布后立即得到众多的厂商及机构的采用。

在此之后,DICOM标准不断地吸纳各方反馈的有用信息,从不同的专业角度对规范在范畴和深度上进行扩充,1998年又推出了修订版本,目前仍然在不断的发展中。

  DICOM涵盖了数字图像信息构成和通信两个领域,内容极其烦琐、庞大,目前没有任何医学系统可以支持所有的DICOM服务,每一种设备都是只针对自己最需要的部分提供支持。

我们也根据核医学的需要,制定了自己的符合DICOM标准的图像文件格式。

其中核医学图像文件结构部分主要参阅了DICOM标准的PS3.3~PS3.6和PS3.10。

  PS3.3:

InformationObjectDefinitions(信息对象定义);

  PS3.4:

ServiceClassSpecifications(服务类规范);

  PS3.5:

DataStructureandEncoding(数据结构和编码规定);

  PS3.6:

DataDictionary(数据字典);

PS3.10:

MediaStorageandFileFormatforDataInterchange(便于数据交换的介质存储方式和文件格式)。

1.4DICOM图像的应用

毫无疑问,DICOM是医学图像信息系统领域中的核心,它涉及到信息系统中最主要也是最困难的医学图像的存储和通信,可直接应用在放射学信息系统(RIS)和图像存档与通信系统(PACS)中。

DICOM也是研究和开发具有网络连接功能,实现信息资源共享的新型医疗仪器的技术基础。

医疗仪器在朝着自动化、智能化发展的同时,也在向着具有通信能力的遥控遥测和信息远程获取的网络功能发展,医疗仪器既是医疗信息系统中的信息源,又是系统中的信息使用者,是信息系统中的一个主要环节,网络化的医疗仪器对医学信息系统的重要性是不言而喻的[4]。

在采用DICOM标准的信息网络系统中,所有DICOM设备之间都可以按照DICOM的网络上层协议进行互相连接和操作。

临床医生可以在办公室查看B超设备的图像和结果,可以在CT机上调用核磁共振图像进行图像的叠加融合,也可以通过网络调用存储在其他医院的图像结果。

无论是本院、本地还是相距很远的外地,DICOM设备都可以通过网络相互联系,交换信息。

由于提供了统一的存储格式和通信方式,普及DICOM标准,可以简化医疗信息系统设计,避免许多重复性的工作,加快信息系统的开发速度。

对于实现无纸化、无胶片化的医院和远程医疗系统的实施将会起极其重要的作用。

Android平台的简述

认识Android

Android一词的英文本义指“机器人”,它是Google公司于2007年11月宣布的基于Linux平台的开源手机操作系统,该平台由操作系统、用户界面和应用软件组成。

简单的理解,Android是基于Java并运行在Linux内核上的操作系统,这个操作系统是轻量级的,但是功能却很全面。

而且在这个系统上,Google公司已经内置了很多有用的软件,如打电话、发短信等。

该操作系统最初由AndyRubin开发,主要支持手机。

2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上[5]。

Android简介

该平台由操作系统、中间件、用户界面和应用软件组成。

它采用软件堆层的架构,主要分为三部分。

底层以Linux内核工作为基础,由C语言开发,只提供基本功能;中间层包括函数库Library和虚拟机VirtualMachine,由C++开发。

最上层是各种应用软件,包括短信程序,通话程序等,应用软件则由各个公司自行开发,以Java作为编写程序的一部分。

不存在任何以往阻碍移动产业创新的专有权障碍,是首个为移动终端打造的真正开放和完整的移动软件。

Google通过与软、硬件开发商、电信运营商、设备制造商等其他有关各方结成深层次的合作伙伴关系,希望借助建立标准化、开放式的移动电话软件平台,从而在移动产业内形成一个开放式的生态系统。

Android作为Google企业战略的重要组成部分,将进一步推进“随时随地为每个人提供信息”这一企业目标的实现。

全球为数众多的移动电话用户正在使用各种基于Android的电话[6]。

Android将补充,而不会替代谷歌长期以来奉行的移动发展战略:

通过与全球各地的手机制造商结成合作伙伴,开发既有用又有吸引力的移动服务,并推广这些产品。

Android的发展

安卓手机就是有Android这个操作系统的手机,在2007年11月5日开放手机联盟(OpenHandsetAlliance)成立之后,Android的发展加快了速度。

07年11月12日宣布发布了第一版AndroidSDK;08年的4月份举办了安卓开发竞赛,推动了安卓开发的应用速度;08年的8月份为Android平台手机提供软件分发和下载的Market正式上线,积累了大量的应用;08年9月22日,美国运营商T-MobileUSA在纽约正式发布第一款Google手机T-MobileG1。

该款手机为台湾宏达电制造,是世界上第一部使用Android操作系统的手机,支持WCDMA/HSPA网络,理论下载速率7.2Mbps,并支持Wi-Fi;次日,Android1.0R1SDK发布,标志着Android系统趋于稳定和成熟;同年的10月,Android被宣布开放源代码[7]。

Android基本框架

Android应用开发框架是ApplicationFramework,但其系统架构由5部分组成,分别是:

Applications、ApplicationFramework、Libraries、AndroidRuntime、LinuxKernel,如图2.1所示。

(1)Application

ApplicationAndroid同一个核心应用程序包一起发布,该应用程序包包括Email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。

所有的应用程序都是用Java编写的。

(2)ApplicationFrameWork

通过提供开放的开发平台,Android使开发者能够编制极其丰富和新颖的应用程序。

开发者可以自由地利用设备硬件优势、访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等等,很多很多。

开发者可以完全使用核心应用程序所使用的框架APIs。

应用程序的体系结构旨在简化组件的重用,任何应用程序都能发布他的功能且任何其他应用程序可以使用这些功能(需要服从框架执行的安全限制)。

这一机制允许用户替换组件,所有的应用程序其实是一组服务和系统,包括:

·视图(View):

View是丰富的、可扩展的视图集合,可用于构建一个应用程序。

包括包括列表、网格、文本框、按钮,甚至是内嵌的网页浏览器

·内容提供者(ContentProviders):

使应用程序能访问其他应用程序(如通讯录)的数据,或共享自己的数据

·资源管理器(ResourceManager):

提供访问非代码资源,如本地化字符串、图形和布局文件

·通知管理器(NotificationManager):

使所有的应用程序能够在状态栏显示自定义警告

·活动管理器(ActivityManager):

管理应用程序生命周期,提供通用的导航回退功能。

(3)Libraries

Android包括一个被Android系统中各种不同组件所使用的C/C++库集。

该库通过Android应用程序框架为开发者提供服务。

供Android系统的各个组件使用。

这些功能通过Android的应用程序框架(Applicationframework)暴露给开发者。

下面列出一些核心库:

·系统C库:

标准C系统库(libc)的BSD衍生,调整为基于嵌入式Linux设备;

·媒体库:

基于PacketVideo的OpenCORE,支持播放和录制许多流行的音频和视频格式,以及静态图像文件,包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG;

·SurfaceManager:

对显示子系统的管理,并且为多个应用程序提供2D和3D图层的无缝融合。

·LibWebCore:

一个最新的Web浏览器引擎用来支持Android浏览器和一个可嵌入的Web视图。

·SGL:

一个内置的2D图形引擎3D。

·FreeType:

位图(bitmap)和向量(vector)字体显示。

·SQLite:

一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。

图2.1Android基本结构

(4)AndroidRuntime

Android包括了一个核心库,该核心库提供了Java编程语言核心库的大多数功能。

每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。

Dalvik是针对于同时高效地运行多个VMs来实现的。

Dalvik虚拟机执行.dex的Dalvik可执行文件,该格式文件针对最小内存使用做了优化。

该虚拟机是基于寄存器的,所有的类都经由Java汇编器编译,然后通过SDK中的dx工具转化成.dex格式由虚拟机执行。

Dalvik虚拟机依赖于Linux的一些功能,比如线程机制和底层内存管理机制。

(5)LinuxKernel

Android的核心系统服务依赖于Linux2.6内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。

Linux内核也同时作为硬件和软件堆栈之间的硬件抽象层,它隐藏具体硬件细节而为上层提供统一的服务[8]。

Android系统的四大组件

在Android系统中,为我们提供了四大基本组件,每个组件是一个视图,但是有些是可见的,有些是不可见的视图,像Activity,ContentProvider是可见的视图,Service和BroadcastReceiver是不可见的,它们只在系统的后台运行。

下面分别介绍四大组件[9]:

(1)Activity(应用表示层)

在Android系统中基类Activity提供可视化的用户界面,一个Android应用通常由多个Activity组成,而且同一Android应用中的每个Activity是相互独立的。

程序启动后显示的第一幅画面是应用程序的第一个Activity(默认窗口),而后可以根据需要从这个Activity启动另一个新的Activity。

Activity利用View来实现应用中的GUI(图形用户界面),而用户直接通过GUI和应用程序做交互。

Activity窗口内的可见内容通过基类View提供。

使用Activity.setContentView()方法设置当前Activity中的View对象。

多个Activity组成了Activity栈(Stack),当前活动的Activity处于栈顶。

Activity有自己的生命周期,由Android系统来控制。

整个的生命周期,从onCreate(Bundle)开始到onDestroy()结束。

Activity在onCreate()设置所有的“全局”状态,在onDestory()释放所有的资源。

可见的生命周期从onStart()开始到onStop()结束。

在这段时间,可以看到Activity在屏幕上,尽管有可能不在前台,不能和用户交互。

onStart(),onStop()都可以被多次调用,因此Activity随时可以在可见和隐藏之间转换。

前台的生命周期,从onResume()开始到onPause()结束。

在这段时间里,该Activity处于所有Activity的最前面和用户进行交互。

Activity可以经常性地在Resumed和Paused状态之间切换。

Activity整个生命周期都定义在onCreate()、onStart()、onRestart()、onResume()、onFreeze()、onPause()、onStop()、onDestroy()接口方法中,所有方法都可以被重载。

所有的Activity都需要实现onCreate(Bundle)去初始化设置,大部分Activity需要实现onPause()去提交更改过的数据,当前大部分的Activity也需要实现onFreeze()接口,以便恢复在onCreate(Bundle)里面设置的状态。

图2.2显示了Activity的重要状态转换,矩形框表明Activity在状态转换之间的回调接口,可以重载实现以便执行相关代码,带有颜色的椭圆形表明Activity所处的状态。

(2)Service简介

基类Service没有可见的用户界面,但能够长时间的运行于后台,在应用程序进程的主进程中。

一个定义好的Service必须在AndroidManifest.xml配置文件注册,通过元素声明才能使用。

Service有自己的生命周期,我们可以调用startServic()启动一个Service或者bindService()方法来绑定一个存在的Service。

(3)BroadcastReceiver简介

基类BroadcastReceiver是用户接收广播通知的组件,它和事件处理机制类似,只不过事件处理机制是程序组件级别的(例如,某个按钮的单击事件),而广播事件处理机制是系统级别的。

到目前为止可以使用Intent来启动一个程序组件,还可以通过使用sendBroadcast()方法来发起一个系统级别的事件广播来传递消息。

同时可以在应用程序中实现BroadcastReceiver来监听和响应这些广播的Intent。

BroadcastReceiver是对发送出来的Broadcast进行过滤接收并响应的一类组件。

它自身并不实现图形用户界面,但是当它收到某个通知后,BroadcastReceiver可以启动Activity作为响应,或者通过Notifi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 管理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1