首页 常规心电图像格式化输出程序设计毕业论文

常规心电图像格式化输出程序设计毕业论文

举报
开通vip

常规心电图像格式化输出程序设计毕业论文摘要论文主要探讨常规心电图像格式化输出程序的设计和开发。完成了对常规心电图像格式化输出程序的需求分析,总体架构的设计。基于.net平台设计实现了系统原型的开发,并且测试。论文从需求分析到整体架构设计,以及模块的实现和最终的测试,并按照软件开发的全过程,重点论述了常规心电图像格式化输出程序的实现。文中对图像处理等核心模块的设计思想和开发过程,进行详细的分析论述,并且对最终的参数设置程序的开发进行了简单的论述。本文以通过对心电图像输出程序的开发为实例,论述了程序设计开发的基本设计模式。论文最后论述了该系统在医院信息化、...

常规心电图像格式化输出程序设计毕业论文
摘要论文主要探讨常规心电图像格式化输出程序的设计和开发。完成了对常规心电图像格式化输出程序的需求 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 ,总体架构的设计。基于.net平台设计实现了系统原型的开发,并且测试。论文从需求分析到整体架构设计,以及模块的实现和最终的测试,并按照软件开发的全过程,重点论述了常规心电图像格式化输出程序的实现。文中对图像处理等核心模块的设计思想和开发过程,进行详细的分析论述,并且对最终的参数设置程序的开发进行了简单的论述。本文以通过对心电图像输出程序的开发为实例,论述了程序设计开发的基本设计模式。论文最后论述了该系统在医院信息化、数字化过程中的深远意义和应用前景,以及对本次设计任务作了全面细致的总结。关键词:心电图,动态链接库,面向对象,模式-视图-控制器,插值 ABSTRACTThesisfocusondesignanddevelopmentprocessofconventionalECGoutputformattingandcompletedthedemandanalysisproceduresandtheoverallstructureofthedesignofconventionalECGoutputformatting.DesignandachievetheprototypesystemdevelopmentandtestingBasedonthe.netplatform.Thesisfromdemandanalysistotheoverallstructuredesign,achieveofmodulesandtestatlastinthesoftwaredevelopmentprocess,focusingontheconventionalECGoutputformattingproceduresaswell.Thetextaboutcoremodulesofimageprocessingdesignanddevelopmentprocesshavedetailedanalysisanddiscussandthefinalprogramforsettingparametersalsohasasimpleintroduce.BasedontheECGoutputformattingasapracticalcase,discussthebasicdesignpatternsandproceduresofthedesignanddevelopmentofprograms.Finally,thethesisdiscussestheapplicationofinformationsystemsinhospitalsanddigitalprocessoffar-reachingsignificanceandprospects,andthedesignofthiscomprehensiveanddetailedsummary.Keywords:ECG,DLL,Object-Oriented,Model-View-Controller,Interpolation 目录摘要 IABSTRACT II第1章绪论 11.1引言 11.2相关技术 11.2.1面向对象程序设计方法 21.2.2DLL技术 31.2.3XML技术 41.3设计任务 5第2章系统需求 62.1引言 62.2用户需求 62.3功能需求 72.4可行性分析 82.4.1系统开发技术 82.4.2资源利用 82.5系统配置 92.6系统综合要求 92.7本章小结 10第3章系统构建 113.1引言 113.2概要设计 113.2.1系统介绍 113.2.2系统流程图 113.2.3需求模块划分 123.2.4数据输入流图 133.2.5参数设置流图 143.2.6输出流图 153.3详细设计 163.3.1主要类图 163.3.2MVC模式 173.3.3静态指针 183.4编写代码 183.5上层程序 193.6构建综述 213.7本章小结 21第4章图像处理 224.1引言 224.2图像预处理 224.2.1图像处理流程图 234.2.2平滑滤波算法 234.3图像输出处理 244.3.1插值公式 254.3.2插值优化 274.3.3实例对比 284.4本章小结 29第5章总结 30致谢 31参考文献 32 第1章绪论1.1引言心电图是目前在临床应用中极为普遍的心脏疾病诊断方法之一。常规十二导心电图是最传统、最经典的心电图记录方式。通过十二导心电图,医生可以对心脏的电活动有一个全面的了解,并通过对P波、QRS波群、S-T段、T波的形态和幅度的识别,诊断心脏的各种疾病。多导联心电同步记录技术,可同时在多个通道给出同一心动周期的心电图信号,可同步整体观察及测量多个导联同一心动周期的波形,提高了参数测量的准确性,避免了单导测量的误差,对心律失常、期前收缩、预激综合症的分型定位诊断提供了条件,并为建立心电图基本参数的 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 化提供手段。在医院临床诊断中,ECG(electrocardiogram,心电图)信号通常被记录在格子纸上,这样效率低下且容易出错。因此,若能将数据转换成标准数据并存储进计算机必定能大大提高临床诊断的效率。软件友好的用户视图界面,大大方便了医疗人员与计算机交互[1]。临床试验表明,计算机心电诊断系统确实能够一定程度上提高临床诊断效率,并且为大型协同诊断工作提供必要的硬件支持[2]。心电图在心脏疾病的临床诊断中具有重要价值,能为心脏疾病的正确分析、诊断、治疗和监护提供客观指标[3]。它不但广泛应用于心血管疾病的常规检查,而且还应用于对运动员、航空航天飞行人员等特殊专业人员的体质检测和临床医学研究上,具有十分重要的社会价值和经济价值,在现代医学中得到了十分广泛的应用。当前心电信号的处理仍然是生物医学工程领域重大研究课题之一[4]。通过测试应用,本文研制的常规心电图像格式化输出程序完全达到医用心电诊断系统的各项指标,并且操作简单,具有广阔应用前景。1.2相关技术 从软件业的发展历程来看,程序设计方法经历了多次变革,从最初的功能分解法,到结构化的程序设计方法,再到至今仍在广泛使用的面向对象程序设计方法,人们对程序设计方法的选择取决于软件设计方法对应用软件的适应性。1.2.1面向对象程序设计方法 在计算机软件领域,每当一种程序设计方法不能适应应用软件发展需要时,人们总会找到一种新的程序设计方法来解决这种“软件危机”。可以说,面向对象程序设计方法就是在这样的情况下发展起来的。结构化程序设计方法着眼于局部的程序结构,难以用发展的眼光指导应用程序的设计;面向对象程序设计方法能够从问题本身来把握应用系统的整体设计,并且有效地把应用发展过程中易变部分与稳定部分隔开。面向对象程序设计方法与面向对象分析、面向对象实现紧密结合起来,构成了软件生存周期的主体。从软件生存周期的全过程来看,重用性是一个很重要的特性,也是软件产业发展的基础,但提供什么样的重用机制或者在哪个层次上提供重用,对于软件发展有不同的意义,因此我们可以把重用性作为衡量程序设计方法的一个重要指标。很长一段时间内,软件重用仅限于程序代码的重用,但是这仅仅是一种较低层次的重用,由于对代码理解的困难、标准的不一致以及传统程序设计语言本身对重用的支持力度不足等方面的原因,软件重用率并不高。随着软件工程技术的发展,人们认识到软件生命周期并不局限于代码编写和测试,而是一个从需求分析、设计到实现、测试、运行、维护的全过程。理论和实践都表明,在软件生命周期中,需求、设计阶段是软件开发活动的关键。因此,软件重用的概念也随之扩展到对软件开发过程中各阶段产品和文档的重用,其中最重要的是对需求和设计的重用。在现实世界和作为其映射的软件系统中,“过程”和“操作”是多变和不稳定的,而“对象”和“数据结构”是相对稳定的,因此以过程为中心来设计开发软件系统的结果就是软件的可重用性较差;而以对象或者数据结构为中心来设计开发的软件系统的可重用性就比较好。面向对象程序设计方法强调把问题域的概念直接映射到对象以及对象之间的接口[5],这种方式比较符合人们通常的思维方法,从而减少了传统开发方法从问题域到分析阶段再到设计和实现阶段的偏差.面向对象方法使得在客观世界以及作为其映射的软件系统中,实体的结构相对稳定。面向对象方法把属性和服务封装在对象中,当外部功能发生变化时,这种封装可以保持对象结构的相对稳定,使得改动仅局限于一个对象的内部,减少了因改动而引起的系统波动效应.因此,面向对象方法开发的软件具有易扩充、修改和维护的特点。差不多每一种面向对象程序设计方法都使用统一的模型来表达每个阶段的结果,包括分析、设计、编码实现等阶段,因此,从整个软件生存周期来看,后一阶段可以直接重用前一阶段的工作成果,弥补了传统软件开发方式从数据流图到模块结构图转化的鸿沟,既避免了重复劳动,又消除了转换过程带来的误差。面向对象方法具有的继承性和封装性也支持软件重用,并易于扩充,能较好地适应复杂大型系统不断发展变化的要求。但是,面向对象设计方法也不是十全十美。首先面向对象程序设计方法在处理大型软件系统时,它的粒度粗细难以有效控制。其次,现实世界中的许多问题领域包括影响多个对象的全局性处理,可以由若干个并行或者串行执行的步骤组成。这种全局处理的概念不从属于任何单一对象,与面向对象的思想不统一,并且缺乏有效的表示方法。另外一点,虽然面向对象程序设计方法强调重用性,但实际重用的效果并不理想。1.2.2DLL技术DLL(DynamicLinkLibraries动态链接库),提供了一种共享数据和代码的方便途径,由于多个应用程序可以共享同一个DLL中的函数,因此使用DLL可以显著的节省磁盘空间。尤其对于Windows应用程序,有很多操作都是标准化的,如果使用传统的静态链接方式,每一个需要完成这些操作的应用程序都必须在自己的执行文件中包括相同的代码,这不但使应用程序必须加载的时间变得更长,也浪费了磁盘空间。多个应用程序还可以同时共享DLL在内存中的同一份拷贝,这就有效地节省了应用程序所占用的内存资源,避免了频繁的内存交换,从而提高了应用程序的执行效率。由于DLL是独立于可执行文件的,因此,如果需要向DLL中增加新的函数或是增强现有函数的功能,只要原有函数的参数和返回值等属性不变,那么所有使用该DLL的应用程序都不需要重新编译。DLL除了包括函数的执行代码以外,还可以包括诸如图标、位图、字符串和对话框之类的资源,因此可以把应用程序所使用的资源独立出来做成DLL。对于一些常用的资源,把其做到DLL中后,就可以为多个应用程序所共享。使用DLL还可以方便地建立支持多语种的应用程序。我们可以把多语种应用程序中所使用的语种相关的函数做到DLL中,只要不同语种的应用程序所调用的函数都具有相同的接口,就可以通过简单的更换DLL来实现多语种支持。1.2.3XML技术XML技术特点和优势:XML(eXtensibleMarkupLanguage,可扩展的标记语言)是由W3C组织于1998年发布的一种标准。它有如下三个重要特点: XML是一种结构化的语言:XML以一种开放的自我描述方式定义了数据结构,在描述数据 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 的同时能突出对结构的描述,从而体现出数据之间的关系。 XML是可扩展的:从本质上来讲,XML是一种元语言(MetaLanguage),即可以定义其它语言的语言,也就是说,这种语言能够根据需要进行扩展,以满足特定情况的需求,这意味着在创建XML文档时,不会局限于一套预先定义的标签,可以为特定应用程序创建所需要的任何标签,同时,XML标准提供了一套与这些细节相关的规则,来规定诸如如何创建标签、XML文档如何结构化等问题。 XML保持数据存储与数据显示相分离XML文档中的数据存储,对于数据的显示没有任何约束,文档中仅仅包含结构化的数据,而不关心其逻辑结构的定义和如何进行显示。如果数据使用XML 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 存储,就可以确保对数据的显示已经没有任何限制。XML采用标记的文本方式记录数据信息,对于计算机和用户来说都具有很强的可读性。XML具有可扩展性、灵活性、平台无关性等诸多特点,它的出现,使得计算机之间的数据交换变得简单。目前,XML在数据和信息管理、数据交换、Web应用、电子商务等诸多领域有着重要用途,如图1-1所示。图1-1XML的用途由于XML的灵活性和平台无关性,特别是永久可读性,它能够在医学诊断系统研究发展中起到重要的作用,因此研究XML在医学领域中的应用也已经越来越得到人们的关注,国内外已经有医疗研究机构对XML在医学诊断系统的应用进行探索、研究和实验。1.3设计任务 常规心电图像格式化输出程序设计是一项庞大复杂的工程。它不仅要涉及数学、医学、图形学等方面的理论知识,还要用到软件工程、编程技术、等方面的应用知识[6]。要开发出一个成熟稳定、操作方便、功能完善的系统,需要投入大量的人力物力,经过较长的开发周期,才能完成。本次设计任务主要包括以下内容:1. 应用面向对象的思想对常规心电图像格式化输出程序进行分析、设计。2. 利用VisualC++开发环境的MFC框架开发常规心电图像格式化输出程序的DLL原型,主要完成工作如下: 解析心电数据源文件及提取波形和相关信息。 心电信号波形图像处理的研究,包括信号的预处理,滤波优化算法的实现。3. 利用VisualBasic.Net开发上层程序,主要功能为设置各项心电参数以及输出选项,同时测试DLL跨语言通用性。 第2章系统需求2.1引言 需求的定义包括从用户角度(系统的外部行为),以及从开发者角度(一些内部特性)来阐述需求。在软件工程中,所有的风险承担者都感兴趣的就是需求分析阶段。这些风险承担者包括客户、用户、业务以及需求分析员(负责收集客户需求并编写文档,以及负责客户与开发机构之间联系沟通的人)、开发人员、测试人员、用户文档编写者、项目管理者和客户管理者。这部分工作若处理得好,能开发出很出色的产品,同时会使客户感到满意,开发者也倍感满足、充实。若处理不好,则会导致误解、挫折、障碍以及潜在质量和业务价值上的威胁。因为需求分析奠定了软件工程和项目管理的基础,所以所有风险承担者最好是采用有效的需求分析过程。2.2用户需求 常规心电图像格式化输出程序作为医院数字信息化的一个子系统,主要用于完成心电格式化输出任务。医生可以通过计算机输出一系列不同的诊断动作图片,以提高其效率。根据医生平时诊断习惯以及必要诊断过程进行分析,如图2-1所示:图2-1诊断分析 显示病人信息:包括姓名、性别、年龄、病史、曾经用药等诊断中必要的信息。以文本格式在输出图片中显示,方便医生查阅。 单一波形显示:作为心电诊断系统的核心功能,该功能提供多种波形输出方式(3*2模式、12*1模式、6*1模式、全波形显示等)。医生可以通过设置切换输出查看各种波形,包况四肢、胸部波形,节奏波形等。 比较波形显示:一种波形显示方式,提供同一病人在不同时间段的波形比较,方便诊断。 图像参数设定:提供用户对图像显示的一些接口操作。用户可以控制图像处理几种方式,以及根据个人习惯定义各个显示波形的颜色,以提高用户诊断过程的效率。 显示切换:提供用户对图像切换的一些接口操作。用户可以对波形的显示方式,以及对感度、频率、速度等一些心电参数进行设置。2.3功能需求 提供一个DLL即Windows动态链接库的解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 。向上层提供接口。根据用户需求可将功能需求概括如下: ECG数据处理:ECG数据是一种标准的心电数据格式,它包括波形信息和病人检查信息。本功能包括ECG文件解析和读取以及XML文件的解析。其中XML文件的格式如图2-2所示,主要用于打开指定序列文件。 图像处理:解析二进制的波形序列文件以后,需要经过一定的优化然后将其在屏幕上显示,以达到最佳的显示效果。图像处理过程包括:去噪、平滑、滤波。图像显示是将整理得到的合理采样点序列在指定区域以像素为单位打点,形成心电波形输出。 参数设定:系统提供图像参数设定的应用程序,用户可以通过该程序设定一系列的输出参数。本文设计的是一个简化的软件原型,涉及的功能有限,如:打印、编辑功能都没有添加进本次设计。本节的功能需求可作为下文模块划分的依据。2.4可行性分析2.4.1系统开发技术 常规心电图像格式化输出程序开发运用了二维图像处理技术、Windows编程技术,面向对象的模块化开发技术等,为此使用的软件开发平台除WindowsXP(日文版)外,还采用了VisualStudio.Net集成开发平台。 本系统是一系统标准化、系列化以及可移植性、扩展性决定了系统研究开发的可持续性,系统的升级换代是新设备、新理论、新技术、新需求的必然结果。系统处于原型阶段,提供给用户的是心电诊断中最基本的功能,是开发综合诊断系统的最基本的前期工作。因此,原型阶段,是根据系统需求提出的具体实施目标,参照开发DLL的经验,在短时间内设计出初步的总体结构方案并且实施、调试。2.4.2资源利用 可重用性是基于好的设计的一个主要目标。功能需求中提及的XML文件解析工具有已经编译好的动态链接库:XMLParse.dll,导入使用即可。 心电图形是简单的二维波形图像,经过科学家长期研究实践,有一整套完备、成熟的图像处理算法。因此,本次设计中的图像处理部分只需要对已有的算法进行编码实现即可。当然,为了显示优化的考虑,对平滑算法需要做一些特定的修改,以满足波形图像的显示要求。2.5系统配置1)硬件环境 CPU PentiumⅢ或Celeron800以上 RAM 256M以上 硬盘 10G以上2)软件环境 操作系统 WindowsXPservicepack2 开发环境VisualStudil.net2003,C++语言,VB.net[7~9]2.6系统综合要求 准确显示波形对于重现输出的波形图像要求没有任何偏差和失真,否则影响诊断,后果不堪设想,所以准确显示波形是衡量本系统最为关键的性能指标。任何后期优化处理都是以真实无失真地显示原始波形为前提。 系列化、扩展性强本文在前面一直提及一个协同诊断的概念,因为未来的医院信息化过程中各类诊断辅助软件将会越来完善,开发综合的大型诊断软件系统是大势所趋,那么,在此之前开发功能完备的单一诊断模块(以不同的表现形式存在包括:动态链接库等)是为今后的工作做积淀。在单一模块的开发中,需要充分考虑到今后的需求为此提前最好一定的功能积累。 稳定可靠、可控性强:系统稳定也是医用软件最基本的要素之一,本系统应该充分考虑到计算机系统各种异常,做好必要、完备的异常处理,保证任何状况下,该系统运行通畅无误。 可移植性强:本系统作为一个DLL,系统的上层程序可以用多种语言实现(VB、C#、Java等),以及上层程序可以进行多控件联合操作,那么需要充分考虑本系统的接口通用性,以及数据结构设置合理,并合理节约控件运行过程中对操作系统的资源占用量。系统组件化使各模块之间的可以通用和互换,有利于节省研制费用,缩短研制周期,还有利于后期维护、升级。2.7本章小结 本章对常规心电图像格式化程序的需求分别从用户,功能方面进行了分析,并对本系统的设计环境和要求做了进一步的阐述。 第3章系统构建3.1引言在软件开发过程中,主架构设计是承接于需求分析的。主架构是保证面向对象的软件项目成功的一个至关重要的要素,它的主要作用是让开发团队汇聚思想,化解各人需求的冲突,从而保持软件开发的一致性。尤其是基于模块的软件系统,各模块的设计人员对于模块将派上用场的整体环境的基本假设和想象如果不能统一,就非常难以将之组装成为一个完美的整体,由此我们可以知道,主架构的稳定和灵活是保证软件项目成功的关键。 所谓的主架构是指将各模块元素以某种理想的合作模式组织起来,以达成系统的基本功能和限制。所以主架构的叙述必须说明各模块的特性;以什么方式结合在一起,共同支持系统的功能;并说明有关的条件或限制。3.2概要设计3.2.1系统介绍常规心电图像格式化输出程序是从文件中解析并得到心电图的采样点数据——RawData数据,再根据这些采样点绘制出心电波形,但是此时绘出的波形图像失真比较严重,因为由体表电极(胸导联或肢导联)检测到的ECG心电信号常有不同的干扰,为了得到不失真的原始心电信号,在诊断分析前要进行必要的预处理,包括低通(LowPass),去噪(DeleteNoise),平滑(Smooth),等一些特殊处理,同时心电数据又有规格的区别,一般常规心电图都为十二导联,这样经过滤波和规格的调整,再把绘制出的波形转换成位图格式,这里的输出部分所采用的是ImageOutput模块。该模块主要负责位图的格式转换和大小缩放,根据用户的选择格式化输出心电图像。3.2.2系统流程图 如图3-1是本系统的流程图:图3-1系统流程图3.2.3需求模块划分图3-2EcgtoImage.dll模块示意图外层模块(ECGtoImage.dll):如图3-2,该模块是本系统的外层模块,负责与上层应用程序的交互,它的功能是转换ECG/MFER文件成图像文件(包括BMP,JPEG,PNG),然后输出到指定文件路径。ECGtoImage.dll还包含其它一系列组件进行运作(见图3-3),可以把它理解为统一对外的接口层。图3-3EcgToImage.dll与其它组件 控制模块(ECGDIB.dll):该模块是控制模块,负责调度其它模块运作。 处理模块(ECGProcess.dll):该模块是主处理模块,包括ECG文件的读取解析,参数的设置,以及绘制波形等主要操作。 输出模块(ImageOutput.dll):该模块是输出模块,负责图片格式的转换和输出。 下面按照系统流程,把该系统设计分成三个主要部分,分别为数据输入流,参数设置流,输出流。3.2.4数据输入流图 如图3-4即为数据输入流的序列图,本系统是参照MVC模式设计(详见3.3.2节),由控制层(CECGController)去控制模型层(CECGModule),模型层再调用数据类(ECGData)的一些操作对文件进行解析。 图3-4读入数据流(Dataflow)3.2.5参数设置流图 其实在数据输入解析之前,要先进行参数设置,同样,由控制层(CECGController)去控制模型层(CECGModule),再由模型层调用参数类(CECGParameter)对参数进行设置。该系统所涉及到的参数有许多,例如心电波形的颜色(Color),感度(Sense),速度(Speed)等等,但参数的设置流程基本一致,因此在图3-5中只列出其中一种参数。图3-5设置参数流(Parameterflow)3.2.6输出流图 参数设置以及数据输入解析流程完成之后,ECG数据以及各项参数都已设入系统,接下去便是控制处理输出流了,如图3-6,包括:读取参数,绘图模块(CDrawMethod)绘制背景网格,绘制波形,然后交给输出模块(CECGImage)去做图片格式转换及缩放处理,并存为图片。 至此,整个系统流程已经结束。图3-6输出流(Outputflow)3.3详细设计3.3.1主要类图如图3-7,是本系统各主要模块构成及相互关系类图,其中CECGController,CECGOutputParent,CRestViewOutput等主控模块放于ECGDIB.dll中,而图中其余模块都放于ECGProcess.dll中,主要负责数据的处理,而3.2.3节中提到的ImageOutput.dll相对独立,并没有添加进类图,而是用CECGImage类对ImageOutput.dll中的导出类CImageObject做了一层封装,主系统的交互全都通过了CECGImage类。这样设计的好处在于,由于ImageOutput.dll模块提供了一系列图像转换及缩放等操作,它几乎是一个完整的图像处理模块,也可以为其它需要图像转换等功能的系统所用,它的接口并不是专门为本系统设计,因此,CECGImage类过滤了一些ImageOutput.dll模块多余的接口,它作为一个本系统的间接图像输出接口,更好的整合了系统模块。 图3-7ClassView类图3.3.2MVC模式 MVC模式是"Model-View-Controller"的缩写,中文翻译为"模式-视图-控制器"。MVC应用程序总是由这三个部分组成。 本系统借鉴MVC模式进行设计,把原本复杂的一系列操作,如波形参数设置,数据读取解析,以及绘制波形等进行拆分 如类图3-7,ECGController即Controller,控制ECGModule即Model的运作,以及管理ECGOutputParent即View,由于本系统着重于输出图片,并没有提供在屏幕上输出图像,因此MVC中的View部分即指ECGOutputParent这部分类结构。 波形的参数都经由ECGController,及ECGModule设置或取得,并存储在ECGParameter中,而数据的解析也是由ECGModule进行,并把当前数据读入DataList中,有了相应的数据和参数设置,就可以绘制波形了,DrawMethod就是设计用来绘制波形的,其中有各种绘制波形的方法,包括一些提高波形精度的滤波算法,绘画期间所用到的数据取自ECGParameter以及DataList,总之,一切有关于波形绘制的工作都由它完成。不难看出,以上的所有操作都是由ECGController引起,因此如何设计好该模块以达到各模块间良好的运作成了关键。3.3.3静态指针 如3.3.1节所述,对操作都进行拆分后,虽然从宏观角度可以发现层次分明,由此拆分出的各模块也分工明确,但是,一旦开始编码,就会出现对象实例多份的问题,以参数类ECGParameter为例,它不仅在ECGModule中要使用来设置参数,同时在DrawMethod中也需要用到该对象,并且应该是同一份数据,这就意味着自始至终都应该只存一份ECGParameter对象实例就可以了,否则会造成数据冗余(参照数据库中的同名概念),对软件后期的维护尤其不利。 为了各模块都使用同一份对象实例,本系统在设计时便引入了类成员静态指针的方法,该成员指针指向该类,在该类被构造的时候,它就应该被赋值并指向该类当前实例,外部可以由另外一个静态成员函数间接取得该指针,从而用其所指的实例进行操作。 同时,为了保证这些类只被构造唯一一个实例,就由ECGController去创造这些对象的实例,因为ECGController只有一份,所以该方法可以有效的实现MVC,并且减少数据冗余的产生,减轻了代码量,更提高了程序的执行效率。3.4编写代码首先,运用测试驱动开发的思想,根据详细设计阶段定制的各个类以及其函数设计出单元测试用例。如图3-8,该图为测试用例在CppUnit中形成的树状结构:图3-8树状测试用例图(Testcasetreeview)只是有了测试用例当然不行,必须还要有实现代码。有了测试用例的好处就在于可以根据它逐步完成各模块功能,以后如果对某个模块有改动,也只需要运行一遍测试用例,就知道改动是否成功或对其它模块是否有影响,一目了然。 因此,当你通过了所有测试用例时,也就意味着该阶段的工作已经完成了。3.5上层程序 由于该系统本身为一个DLL,无法单独运行,但是其提供了接口,可供上层调用。 上层程序由VB.net完成,共有两个应用程序,分别是:1. 参数编辑设置程序(ECGToImageEditor)。2. 主程序上层演示程序(ECGToImageDemo)。ECGToImageEditor是有关于ECGToImage进行图片输出的各项参数设置的程序,如图3-9:图3-9ParameterSetting程序界面图ECGToImageDemo是本系统DLL的一个实现程序,该程序接受五个参数,分别是ECG文件路径,三个XML文件路径,和一个输出文件路径,而其中第三个XML文件,如图3-10,即SettingFileName该项就是由ECGToImageEditor编辑并生成的包括各项参数设置的XML文件。该应用程序同时也支持命令行参数设置,从而使用户可以不用在界面中设置各路径参数,使用命令行就可以实现自动化输出了。图3-10EcgToImage.dllDemo程序界面图3.6构建综述 高质量的设计具有很多常见的特征,而有时这些目标之间有时会相互抵触,但这也正式设计中的挑战所在——如何在一系列相互竞争的目标之中做出一套最好的折中方案。最小的复杂度,易于维护,减少耦合,可重用性,可移植性,层次性等等,这些都是设计范畴内的特征[10],软件的首要技术使命就是管理复杂度,应该首选以简单性作为努力目标的设计方案,在对本系统进行构建时,也是从多角度综合了多种特性,在层次性和可重用性,以及复杂度等特性上进行取舍,从而设计出一套适合于本系统的方案。3.7本章小结 本章是常规心电图像格式化输出程序设计的构建阶段,该系统的构建阶段包括概要分析,详细分析,以及代码的编写和功能测试,该阶段同需求分析一样,是软件工程中不可或缺的阶段,至此,本系统已基本上按照了软件工程的流程进行了设计与开发。 第4章图像处理4.1引言常规心电图像格式化输出程序是从文件中解析并得到心电图的采样点数据,经过解析的数据可以得到图像序列文件,其中详细记录了每一个采样点的具体位置,系统通过图像处理以后可以将其描绘在内存位图中,但是此时绘出的波形图像失真比较严重,因为由体表电极(胸导联或肢导联)检测到的ECG心电信号常有不同的干扰,为了得到不失真的原始心电信号,在诊断分析前要进行必要的预处理,包括低通(LowPass)滤波,去噪(DeleteNoise),平滑(Smooth),等一些特殊处理。结合第3章的系统设计模块,图像预处理被封装在ECGProcess.dll模块内,图像的转换和输出处理则封装在ImageOutput.dll模块内。该部分涉及到的图像处理知识主要有:位图文件格式,图像的平滑算法,图像的滤波算法,以及插值算法等[11]。本章将基于以上这些算法的理论基础,并结合本系统自身的特点,进行图像算法的研究与设计,最终通过编码实现。4.2图像预处理 本节将对图像预处理部分作简要的分析和设计。 针对心电波形的特殊性,其波峰波谷间隔较大,使用普通的图像处理方法,图像容易出现锯齿失真,影响观察效果,因此,考虑针对心电波形波峰波谷间隔较大的特点设计新的算法,以弥补波形图像锯齿失真的不足。本节将简要叙述该算法的实现以及最终的显示的效果。4.2.1图像处理流程图图4-1图像预处理4.2.2平滑滤波算法 锯齿失真产生的原因:当两个采样点垂直距离过大时,系统在打点描绘波形的时候产生锯齿失真,如图4-2所示,图中的方格宽度代表一个像素点宽度。图4-2锯齿失真 解决方法当两个采样点垂直距离过大时,系统在打点描绘波形时,经过适当计算后,在点与点连接区域设置一段颜色过度区,该区域的各个像素点依次从波形描绘颜色向背景颜色渐变以达到平滑的效果。最终结果如图4-3所示:图4-3平滑滤波处理4.3图像输出处理 图像预处理是发生于绘制波形阶段,而本节将要叙述的是ImageOutput.dll模块所做的工作——图片格式转换和缩放输出。其中,由于波形是先在内存位图中绘出,因此需要根据用户的要求把位图转换成JPEG,PNG,BMP等格式,并且实现用户所要求大小的缩放处理。格式转换主要用到了开源的JPEG,PNG编解码库(jpeg.lib,png.lib),以及与其相关的压缩库(zlib.lib),所以本节主要分析和研究图像的插值缩放。4.3.1插值公式 插值公式根据图像质量和运算速度可以分为好多种,在这里仅介绍在ImageOutput.dll模块中所使用的双线性和立方插值公式。 双线性插值:  对于一个目的像素,设置坐标通过反向变换得到的浮点坐标为(i+u,j+v),其中i、j均为非负整数,u、v为[0,1)区间的浮点数,则这个像素得值f(i+u,j+v)可由原图像中坐标为(i,j)、(i+1,j)、(i,j+1)、(i+1,j+1)所对应的周围四个像素的值决定,即:(4-1)其中f(i,j)表示源图像(i,j)处的的像素值,以此类推。这就是双线性内插值法。双线性内插值法计算量大,但缩放后图像质量高,不会出现像素值不连续的的情况。由于双线性插值具有低通滤波器的性质,使高频分量受损,所以可能会使图像轮廓在一定程度上变得模糊。 立方插值:该方法能够克服以上算法的不足,计算精度高,但计算量大,由于需要考虑一个浮点坐标(i+u,j+v)周围的16个邻点,目的像素值f(i+u,j+v)可由如下插值公式得到:(4-2)其中[A],[B],[C]矩阵:(4-3)(4-4)(4-5)S(x)是对Sin(x*Pi)/x的逼近(Pi是圆周率——π)S(x)其实也就是一个滤波器,由于它的不同,形成的公式也就不同,现在用得比较多的有以下几种:普通立方插值公式(TheGeneralcubic):(4-6)B-样条函数逼近公式(TheB-splinecubic):(4-7)TheCatmull-Romcubic:(4-8)Mit-Net双参数公式(TheMitchell-Netravalicubic):(4-9)公式4-9所示的Mit-Net双参数公式实现放大效果较其它公式清晰,一般国际上公认的取B和C的值分别为(1/3,1/3)比较好[12]。另外公式4-6是最普通的立方插值公式,当a取0.5和1时,一个比较平滑,一个比较锐利,分别适用于放大和缩小图片。4.3.2插值优化 插值算法最核心的部分就是插值公式,因为对于目标位图上的每个点都要用到公式来计算,特别是立方插值中每个都要计算四次(详见4.3.1节),所以算法复杂度是O(w*h)(w和h分别是位图的宽度和高度),不难计算出一般的800*600像素的位图数量级就已经达到了106,所以基于插值公式的优化还是很有必要的。 于是我运用了模板元(TemplateMetaprogramming)编程技术来对程序进行优化。模板元是建立在模板的基础上的,在C++编译期间执行,它们能将工作从运行时转移到编译时。一个结果就是通常在运行时才能被察觉的错误能够在编译期间被发现。另一个结果是C++程序使得TMP的使用在以下每一个方面都能更有效率:更小的可执行代码,更短的运行时间,更少的内存需求。(然而,将工作从运行时转移到编译时的一个结果就是编译过程变得更长。使用TMP的程序可能比它们的non-TMP对等物占用长得多的编译时间。) 我把每个公式独立成一个个函数模板,而模板参数除了类型外,就是一个常数,也就是在4.2.1一节中提到公式中的a,B,或者C这些常数,这样做的好处是在编译期就已经计算了公式的一部分,减少了运行时的计算量。 另外我把用户选择的“插值公式”也以模板参数的形式传入各个模板函数,这样的好处在于避免了If-Else的选择结构,因为在编译期就已经根据用户的选择生成了相应的“插值公式”函数,从而也使可执行代码更小更稳定了。 下面如图4-4是整个插值算法模块的程序流程图:其中根据位图是24位真彩色图还是1,4,8位图进行了区分,因为当该位图没有调色板时,位图的像素颜色值是直接存放的,所以用内存寻址操作可以达到更快的速度,而当其有调色板时,就只能得到索引值,然后再去调色板里找对应的颜色值,需要用到的步骤较多而且与前者有明显区别,因此这里划分为两部分进行处理:图4.4插值算法流程4.3.3实例对比图4-5,4-6分别是原图,原图经过二次线性插值放大10倍后和原图经过立方插值放大10倍后的图:图4-5原图 图4-6二次线性插值与立方插值效果比较图从图4.6,可见立方插值的效果相对于二次线性插值来说还是比较明显的。4.4本章小结 本章对常规心电图像格式化输出程序设计过程中的图像处理部分进行了详细的介绍,并对算法设计做了分析和比较。 第5章总结随着数字化医院建设的重点逐渐转向医疗数字化,面向纯粹医疗活动的各类医疗信息系统及其集成研究变得越来越重要。以区域医疗为特色的数字化医院。随着各类区域性医疗网络、远程医疗以及社区医疗的发展,数字化医院将超越实际的地域限制,通过各种医疗机构的网络互连以及信息交换,实现全社会范围的医疗数字化。这是数字化医院发展的中长期目标。整个数字化医院通过集成所有这些在核心层次和科室层次上的各类信息系统,再进一步与负责医院管理和财务的HIS系统互连,可以实现医院所有业务的全数字化。并通过开放性的接口使得不同医疗机构之间实现数字化连接成为可能,为区域医疗网络的建立打下基础。现代医疗为了配合数字化医院建设,系统的日益庞大和复杂对软件系统的开放性、灵活性、快速反应能力和重用性提出了更高的要求,面向对象技术及其基础上的发展起来的重用技术为上述问题提供了很好的解决方案。从软件生存周期的全过程来看,重用性是一个很重要的特性,重用性也是现代软件产业发展的基础。本文完成的工作:1) 概括了面向对象技术的发展现状,2) 阐述了基于DLL的软件开发技术。3) 提出并且实现了常规心电图像格式化输出程序的主架构设计方案。该架构实现的DLL具有良好的可重用性和可移植性。 致谢本论文是在我的导师的亲切关怀和悉心指导下完成的。他们严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。从课题的选择到项目的最终完成,都始终给予我细心的指导和不懈的支持。在此谨向他们致以诚挚的谢意和崇高的敬意。感谢我的父母家人在生活上和精神上给我的鼓励和支持,使我有信心克服一切困难,顺利完成论文工作。在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的同事、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意! 参考文献[1] JianTaoWang,DineshP.Mital.AMicrocomputer-basedPrototypeforECGPaperRecordConversion[J].JournalofNetworkandComputerApplications1996,(19):295–307[2] MarkPotse,LinnenbankA.C., GrimbergenC.A.SoftwareDesignforAnalysisofMultichannelIntracardialandBodySurfaceElectrocardiograms[J].ComputerMethodsandProgramsinBiomedicine.2002,(69):225–236[3] AkihiroTakeuchi,IkedaN., NaraY.,etal.AWindowsBasedApplicationforStudyingCardiacArrhythmias[J].ComputerMethodsandProgramsinBiomedicine.1998,(55):199–206[4] 王世彩,高振太.计算机在测心电图方面的应用[J].升阳工业大学学报.1995,17(2)[5] 张海藩.软件工程导论[M].北京:清华大学出版社,2000[6] 姚振东.心电图信号处理程序的设计[J].微型电脑应用.2000,16(11)[7] 侯捷.深入浅出MFC[M].第二版.湖北:华中科技大学出版社,2001[8] [美]DavidJ.Kruglinski著.VisualC++技术内幕[M].潘爱民,王国印译.第四版.北京:清华大学出版社,1999[9] [美]StanleyB.Lippman,JoseeLajoie著.C++Primer[M].潘爱民,张丽译.第三版.北京:中国电力出版社,2002[10] [美]SteveMcConnell著.代码大全[M].金戈,汤凌,陈硕,张菲译,裘宗燕审校.第二版.北京:电子工业出版社,2006[11] 何斌,马天予,王运坚等著.VisualC++数字图像处理[M].第二版.北京:人民邮电出版社,2002[12] DonP.Mitchell,ArunN.Netravali.ReconstructionFiltersinComputer-graphics[J]ComputerGraphics1988,(22):221-228
本文档为【常规心电图像格式化输出程序设计毕业论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥12.0 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
满天星0822
暂无简介~
格式:doc
大小:2MB
软件:Word
页数:0
分类:工学
上传时间:2018-06-09
浏览量:7