糖尿病溃疡足压力测量软件平台设计与分析_第1页
糖尿病溃疡足压力测量软件平台设计与分析_第2页
糖尿病溃疡足压力测量软件平台设计与分析_第3页
糖尿病溃疡足压力测量软件平台设计与分析_第4页
糖尿病溃疡足压力测量软件平台设计与分析_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ABSTRACT糖尿病溃疡足压力测量软件平台设计与分析摘 要由于生活水平的提高,越来越多的人患有糖尿病。随着病情的发展,在这些患者当中,有的会并发足部溃疡,严重的情况下会发展到需要截肢手术治疗1。糖尿病足会破坏人的循环系统和神经系统,造成人痛觉的丧失,从而导致足部压力分布的改变2, 3。足部压力异常与足底溃疡的发生率具有显著的相关性,适合于高压力、足畸形的鞋袜可以显著降低溃疡发生发展和溃疡的复发1, 3-5。因此,开发出一套可以反应足部压力分布的系统,用于检测患者压力的改变,能为足部产品的设计提供重要依据。本文参考国外足底压力分布测量产品 RSscan 的软件平台 footscan6,自主开发

2、了一套软件系统,包含数据显示、病人信息的存储、图像信息的存储等功能,还创造性地将语音识别的经典算法 Danymic Time Warping(DTW)应用到系统中,用于自动分辨出由于测量方式不当产生的异常测量图片,替代传统人工剔除的烦琐操作,也为筛选图片提供了更加科学的依据。最后还将上海六医院提供的一批800 多例的病人数据,从性别、年龄、体重等方面进行了统计分析。本文开发的系统针对溃疡足足底压力的测量设计,具有操作简单,实用性强的特点,为足底压力分布课题的继续研究打下了基础。关键字关键字:糖尿病溃疡足,足底压力分布,压力显示,DTWABSTRACTABSTRACTWith the impro

3、vement of living standards, especially with todays insulin and inappropriate diet, many people has diabetes, which affected peoples normal life. The diabetic foot will occur results in infection,amputation or even death by damaging peopless blood flow and nerves1.The loss of feeling will results in

4、a loss of feedback to control the foot perssure distribution1-2 It is proposed that high foot pressure concentration can be avoided by using some foot product3.So it is practical to develop a system to show the distribution of foot pressure, providing the basis for designing the foot product prevent

5、ing high pressure.Reference to the software platform FOOTSCAN of foreign product RSscan4, this system includs pressure display, patients basic and pressure information storing. Especially, We uesd the DTW algorithm widely used in speech recogniztion to classfiy some adnormal measurements.This method

6、 shows great conviences to replace the tedious manul operation and also provides a more specific standard to exclude some inappropriate measurements.This system for foot ulcers plantar pressure measurements has friendly user interface and important practical value. It lays a foundation for the futur

7、e work of the research in this field.Keywords: diabetic foot, ulcers, plantar pressure distribution, pressure shows, DTW目录I目 录第一章第一章 前言前言 .11.1 研究背景 .11.1.1. 糖尿病溃疡足形成原因 .11.1.2. 糖尿病溃疡与足底压力 .21.1.3. 足底压力分布测量技术种类 .31.1.4. 足底压力分布测量的国内外研究进展 .31.2 项目的提出及研究意义 .41.3 本文主要工作 .5第二章第二章 足底压力测量平台软件设计足底压力测量平台软件设计

8、 .6 62.1 软件系统框架设计 .62.2 数据的产生 .72.3 足底压力分布的可视化实现 .82.3.1. RGB 显示.92.3.2. 配色方案 .102.3.3. 足底扫描数据 RGB 显示 .112.4 数据库设计 .132.4.1. 开发环境 .132.4.2. 结构设计 .142.4.3. 关系模型 .152.4.4. ADO 数据模型 .172.4.5. 使用 ADO 搭建数据库系统 .182.4.6. 图像文件的存储 .20第三章第三章 基于动态时间规划算法的自动剔除异常图片的方法基于动态时间规划算法的自动剔除异常图片的方法 .243.1 动态时间规划(DTW)的基本原理

9、 .243.2 算法领域的相关工作 .253.2.1 预处理 .263.2.2 特征提取 .28目录II3.2.3 模板匹配 .293.2.4 方法和实验 .313.3 结果与讨论 .333.3.1. DTW 距离结果.333.3.2. 聚类结果 .343.4 动态链接库加载算法到平台 .35第四章第四章 真实病人压力数据的统计分析真实病人压力数据的统计分析 .374.1 统计参数 .374.2 VBA 编程.384.3 各因素对足底压力分布的影响 .384.3.1. 左右足对照 .394.3.2. 性别 .404.3.3. 年龄分析 .424.3.4. 体重分析 .464.3.5. 病情分析

10、 .47第五章 结果与展望 .485.1 本文主要完成的工作 .485.2 本文主要的创新点 .485.3 不足与展望 .49参考文献 .51致谢 .54攻读硕士期间取得的成果 .55电子科技大学硕士学位论文0第一章 前言1.1 研究背景自 20 世纪 80 年代以来,各国糖尿病患者患病数量在极具地增加,据设在澳大利亚墨尔本的国际糖尿病研究所在 2003 年的研究报告,估计全球已诊断糖尿病人数达到 1.94 亿,预测到 2025 年将达 3.33 亿,增加 72%,这就意味着全球6.3%的人患有糖尿病1,而糖尿病足病是糖尿病严重的并发症,大约 1/6 的糖尿病患者患有足溃疡2,严重的情况下会发

11、展到需要截肢手术治疗的程度,不仅给病人带来了很大的身体伤害,也给社会造成了很大的经济负担7, 8。1.1.1. 糖尿病溃疡足形成原因一种或多种的危险因素结合在一起会引发足溃疡,就其最主要的诱发原因主要有以下两个:1周围神经病变糖尿病周围神经病变(DPN)是导致糖尿病足(DF)发生的最常见的危险因素,即糖尿病最常见的致病原因。外周神经会作用于人的肌肉、感觉神经系统,导致患者对痛觉和振动、压力、触觉的感觉的消失1-3,这是引起足溃疡的重要因素。由于这些感觉的消失,患者就会对损伤的刺激或者外伤的感觉迟钝或者全然不知,而周围神经病变同时会影响到运动和自主神经,导致足部肌肉萎缩,从而使跖骨弯曲畸形进而导

12、致步态异常,引起压力分布的改变和局部压力的增加。由于保护性感觉消失,即便有外伤也感受不到,足部不该承受压力的地方长时间受到高压,又会使得溃疡发展加重。溃疡往往就是由于这些外在的因素作用于失去感觉的不敏感足而引起1, 9-11。2糖尿病周围血管病变周围血管病变(PVD) ,通常情况下与轻微的外伤和损伤的刺激有关,这会导致缺血性溃疡发生。而周围血管病变和神经病变通常会同时在一个患者身上出第一章 前言1现,这就更易使皮肤血流减少1, 11。由于大血管病变,如果此时皮肤表面又存在压力时,血管的闭塞就更易发生。闭塞性微血管病变未必是足溃疡发生的直接原因,但如果一有外伤、脓毒性血栓的发生或感染引起的轻微的

13、水肿都可能导致已有的病变的末端动脉闭塞9, 12, 13,进而引起趾部感染,一旦溃疡发生感染,造成感染足,截肢的危险就大大增加。1.1.2. 糖尿病溃疡与足底压力正常人的足底压力主要分布在第一趾,第二跖骨头和足跟区域,其他部位不会承担体重的压力10。而糖尿病患者随着病情的发展,足底压力的分布会逐渐改变,一些原本没有受过压力的部位开始承受体重,此时如果长期穿着不合适的鞋袜,压力会对这些区域反复刺激,导致足底毛细血管闭塞,局部的血液循环也会遭到破坏,进而导致鸡眼,破溃的出现,甚至出现不可收拾的局面。由此可见,压力的异常与足部溃疡的发生有显著的相关性14-17。糖尿病并发周围神经病变者,前足压力增加

14、,前后足足底压力比值(F/R)增高的现象仅出现在有严重周围神经病变者中,随着神经病变的程度增加,压力的分布越不平衡18。一旦溃疡发生,如果溃疡上的机械力负荷得不到解除,即使血液供应充足,也无法治愈。国内外出现了许多与压力相关的糖尿病溃疡足的防治研究,针对足部的高压部位采取应对措施,如减压鞋垫、保护鞋等产品的研制15, 19-25,可以达到缓解溃疡部分压力的作用。足部减压产品的设计需要以足底压力的分布为依据,这就需要压力测量系统的帮助。压力测量系统能反应出接触面的压力测量值的大小,提供压力分布的细节。通过压力分布的反应,可以及时地监测到病人足底的高压区域,进而就可以针对这些区域做保护措施,防止溃

15、疡的继续发展和恶化。早在上个世纪末,足底压力分布的测量技术26的重要应用价值就得到了人们的重视被研究和应用。传感器技术和计算机技术的飞速发展更加推动了足底压力测量在多个领域的研究和应用,人们对它的研究也不断深化,出现了多种产品。市面上对压力测量的系统的种类也多种多样。按照测量传感器的种类可以分为电阻式、电容式、压电式。从测量装置上可以将传感器直接放在测量平台上,也可以置于鞋内,做成鞋状15, 27, 28。电子科技大学硕士学位论文21.1.3. 足底压力分布测量技术种类足底压力测量的发展主要经历了足印技术、足底压力扫描技术、力板、测力台技术、压力鞋与鞋垫技术等阶段29。脚印法是利用石膏、泥、橡

16、胶或泡沫等易产生形变的特点制成表面光滑的垫子,根据人足在上面行走留下的足印和痕迹,可以对足底的压力及分布做出定性的分析和判断。这种方法简单易行,结果直观,缺点是无法反应出具体的压力值,可靠性不高,实用性不强,现在已不再使用。足底扫描仪则是基于光学原理,将光源安置在玻璃的两端,玻璃上放置橡胶弹性垫,当足踏上弹性垫的时候,光会在玻璃内全反射,受压的弹性垫即可在玻璃上产生一个清晰的足印象,由于压力和影像的光强度正比,这样就可以根据光强度定性地分析足底压力及分布。此方法可以实时检测足底压力的分布,具有空间分辨率较高的特点,但和脚印法一样,都只能做定性分析,足底压力的大小只能根据图像的深浅变化作大致的判

17、断。随着换能器和传感器的发展,力板与测力台、压力鞋和鞋垫也发展了起来。力板与测力台可以准确地测得足或鞋底接触部位的压力,但对“足-鞋界面”的受力情况的评定却显得力不从心,这是因为力板与测力台的面积较小,通常只能测量人体在站立时或者一个单步行进中的压力参数。压力鞋与鞋垫则克服了这个缺点,将传感器的利用率提高,将压阻材料或压电晶体材料的微型力传感器嵌入到鞋或鞋垫内,由于鞋或鞋垫与足底帖服,就能实时测量多步行进过程中“足-鞋界面”压力的连续参数,并进行实时监测和反馈。1.1.4. 足底压力分布测量的国内外研究进展尽管足底压力分布测量技术起源很早,但是真正对于压力进行研究还是开始于 20 世纪 50

18、年代。国外对此领域的研究已经相对成熟,市场上有形形色色的产品诞生,主要代表技术有:比利时 RSscan 公司的鞋垫式测试系统,德国 Novel公司的 Emed 测力板系统和 Pedar 测力鞋垫系统、美国 Tekscan 公司的 F-Scan 测力鞋垫系统,瑞士的 Kistler 测力台。美国 Tescan 系统可以对接触面进行静态和动态测量,以二维、三维图像的形式实时显示足部压力分布的轮廓以及数据,并且配有的存储功能可以方便用户随时查看测力信息。德国 Novel 公司足底压力分布测量系统能准确测量并显示其表面承受的压力,也是以静态和动态两种方式显第一章 前言3示,并配有多元化的分析软件,便于

19、医生或者患者对压力数据进行全面详细地分析。比利时的 RSscan 公司的平板测力系统可用于赤足或者穿鞋时不同运动状态的分析,并配备了各种兼顾医疗和研究的软件,它的鞋垫式测量系统也可以用于多种特殊的场合,如站立,走路,跑步,滑雪等。国内的足底压力分布测量技术的研究就滞后了很多,从上个世纪 80 年代起,随着人们对于步态研究的日益重视,足底压力分布测量技术得到了迅速和广泛的应用,也取得了一些成果。但目前国内仍然处于研发阶段,市面上的产品都是代理的国外的产品,如北京三捷经贸公司代理德国 Novel 系统,北京奥泰格公司代理美国 Tekscan 测量系统。1.2 项目的提出及研究意义随着生活水平的提高

20、,越来越多的人患有糖尿病,而作为其并发症的糖尿病溃疡足,不仅给病人带来身体的伤害,同时也带来了很大的经济负担1。尤其是截肢会导致住院和康复时间的延长,家庭和社会负担也需要增加。在糖尿病的低位远端截肢中,85%是由足溃疡开始的。仅在美国,每年就有超过 80000 糖尿病患者下肢截肢。所以对于足溃疡有预防和护理作用的足部产品需求显得十分迫切。足底压力增高可用于预测糖尿病足溃疡,是足溃疡发生的独立危险因素,国外对足底的高压也进行了多方面的深层次的研究,足部产品的设计需要以足底压力的分布为依据,尤其是对高压部位的关注,因此开发一个能监测足底压力分布的系统具有极高的实用意义。国内的研究起步较晚,国外的产

21、品价格十分高昂,致使很少有医院配有压力分布监测的系统,这就给溃疡足的检测发生以及监测其发展程度带来了麻烦。因此研发一套具有自主知识产权的压力分布测量系统,对于提高我国此项技术,弥补这方面的不足,具有重要的理论和实用意义。基于以上分析,本文提出了设计一套足底压力分布的实时显示系统,结合国外产品的优点,同时满足自己的需求,对足底压力进行实时动态与静态显示,能给溃疡足足部产品的设计带来帮助。电子科技大学硕士学位论文41.3 本文主要工作本课题的的主要内容有:1系统参考国外产品 RSScan 的软件平台 footscan,设计 7948 个采集点,采用图像直观的方式显示足底过大的受力区域。2搭建糖尿病

22、足病人数据库,有序地存储病例信息和压力数据。在图像数据库的基础上开发应用文件,实现对数据库中信息的录入,修改和查询。3针对实际测量中的情况,会出现由于测量失误而造成的异常测量数据,通常在测量过程中会人工剔除这些异常数据。本文提出一种自动分类剔除该种数据的方法,替代传统的人工剔除的烦琐操作,同时为测量过程中筛选保留数据提供一个更加科学的标准。4对上海六医院提供的 800 多例的病人数据进行统计分析,探讨糖尿病患者的足底压力分布特点,以及从年龄、性别、病情方面对病人进行分类,挖掘出有用信息,为该课题的后续研究和建立足底压力异常的矫正系统打下基础。第二章 足底压力测量平台软件设计5第二章 足底压力测

23、量平台软件设计压力分布的显示主要在 PC 机上实现,本章从用户需求的角度出发,设计了压力显示的方式和数据库的结构,并针对每一个功能模块的实现进行具体的介绍。2.1 软件系统框架设计为了满足软件所需的数据的真实性和多样性,本文软件采用的数据是利用matlab 依据真实足底压力的分布规律产生的,具体包括每个通道的压力数据和整个扫描过程中的动态数据。再利用程序将这些模拟数据读入到系统内存中,提供给软件运行时的操作。整个压力测量软件设计主要分为两个部分:数据显示部分和信息存储部分。显示的数据主要有两种来源:一种是实时的压力数据,用于观察当前测量的压力分布;另一种是从数据库中得到的数据,用于对已有的数据

24、进行统计分析。数据库部分包括对病人基本信息的存储,包括病人的联系方式,以及基本生理参数的记录,压力数据的存储。在数据存取部分,我们会利用算法对数据做一个筛选,去掉一些效果不好的数据,从而提高存取数据的质量。整个系统主要框架由图 2-1 所示:数据显示数据存储数据输入糖尿病溃疡足压力测量平台软件结构图 2-1 软件框架设计电子科技大学硕士学位论文62.2 数据的产生为了观察软件的实现效果,数据是必不可少的元素。我们根据足部压力产生的规律,同时参照 FootScan 的传感器分布结构,利用 matlab 产生了 7948 个采样点的压力数据。首先需要模拟每个传感器采集到的压力数据,将每个传感器作为

25、一个通道,如图 2-2 所示,通道(x,y)表示横坐标为 x,纵坐标为 y 的传感器,通过设定 x 和y 就可以设置任意一个传感器采集到的压力数据。图中显示了通道为(15,10)的传感器采集到的压力数据。图 2-2 Matlab 下每个采样通道数据模拟每一次各个传感器的采样形成一个图层,将行进过程中所有采样整合起来就是一次完整的测量过程。通过每一个图层的产生函数,可以得到某一个时刻所有传感器采集到的数据。图 2-3 就显示了第 19 个采样时刻得到的数据。第二章 足底压力测量平台软件设计7图 2-3 Matlab 下每次采样数据模拟将所有时刻的数据整合到一起就是一次完整的测量过程,如图 2-4

26、 所示:图 2-4 Matlab 下完整测量过程数据模拟2.3 足底压力分布的可视化实现本系统涉及到数据库操作和图形显示等需要采用高效的编程开发工具进行开发,当今世界上流行很多优秀的编程语言,例如 Delphi,Visual Basic,Visual C+等。各种编程语言有不同特点,鉴于 Visual C+编写工程具有高效性和灵活性的特点,电子科技大学硕士学位论文8本系统采用该种语言进行编写。2.3.1. RGB 显示为了能在脚部区域上显示出压力的差异,需要用不同颜色块的方式表示出压力的大小。这里需要对压力进行配色,不同的压力值用不同的颜色来呈现,并且能够反应出压力的变化情况。而要使得配色更加

27、合理和符合现实情况需要对颜色做一个深入的了解。2.1.1.1 颜色的视觉特性以及颜色的基本定义由于人眼中的椎体和杆体细胞分别执行不同的视觉功能,因而能够产生明视觉和暗视觉。同时,人眼对不同波长的可见光的感知程度是各不相同的。在不同的光谱位置,同样功率的辐射表现为不同的明暗程度。对于不同波长的单色光而言,要产生相同的视觉响应,所需的辐射通量是各不相同的。在明视觉条件下,人眼最明暗的光的波长为=555nm。实验表明,可见光波长范围内的单色光和适当比例的多色光混合能产生大部分自然界中人眼能辨别的颜色。事实上,在视场中,有许多心理因素会对视觉系统对当前景色的主观判断产生影响。这些因素主要分为以下三种3

28、0:1色彩对比效应当不同的颜色位于相邻区域时,视觉系统感知的色彩会发生变化。若在一块白色背景下放置一张白纸,如果用眼睛注视白纸中心几分钟,白纸上会出现绿色。这种现象就是在色彩对比中产生的,通常来说,每种颜色都会在其周围诱导出补色。2明暗对比效应当在相邻区域中观察两种对比非常强烈的颜色时,视觉系统感知的亮度会发生偏移。如在白色背景下的灰色纸片看上去发黑,而在黑色背景下同一个灰色纸片则会显得发亮。这种现象称为明暗对比效应。3颜色适应效应当人眼受到强刺激作用时,会使感受到的颜色饱和度产生变化。若对某一颜色适应后再观察其他颜色,后者会发生变化,带有原观察色补色的成分。因而,从心理生理学角度,颜色可由色

29、彩,明度和饱和度决定,其中色彩饱和度是单色光中掺入白光多少的度量。第二章 足底压力测量平台软件设计92.1.1.2 RGB 颜色模型在实际生活中,纯的单色光很难找到的,通常我们所感知到的颜色都是混合色。从生理学的角度看,由于眼睛中含有三种不同类型的椎体细胞,因此对任意三种颜色进行适当混合就可以产生白光条件。但前提是这三种颜色中任意两种的组合都不能产生第三种颜色。这三种颜色称为三原色30, 31。RGB 颜色模型的三原色定义为红色、绿色、蓝色。RGB 颜色模型能贴近真实地绘制出图形,在 CRT 监视器和图形刷新设备中广泛地使用。该模型是采用笛卡尔直角坐标系来定义颜色空间,三个坐标轴分别对应合成颜

30、色的红色、绿色、蓝色三分量。在该空间中,任一点所代表的颜色可由从坐标原点到该点的向量来表示。其中坐标原点代表黑色。若取单位向量分别表示红色、绿色、蓝色三原色,则 RGB 模型的可见颜色子空间构成了一单位正方体,其纯黑色定义为(0,0,0),纯白色定义为(1,1,1)。2.3.2. 配色方案为了将压力值用颜色深浅表示出来,需要将压力转换为对应的色彩。在 RGB色彩空间,图像深度与色彩的映射关系主要有真彩色、伪彩色和调配色。这里因为压力数据是针对有限量的传感器,压力的范围也比较小,而我们只关心压力异常高的部位,所以伪彩色就可以满足我们的要求,所以主要应用伪彩色的配色方案。为了尽可能地让颜色反应出压

31、力的大小,并且符合我们视觉习惯,配色的时候特别注意了颜色的过渡。本系统将图像等级划分为 256,如果用灰度影像来表示,则 0 为黑色,255 为白色。由于前面提到的人眼具有补色等心理因素,会把距离较近的几个点合为一种色彩。如果我们用红、绿、黄的顺序来反应压力由大到小,这样如果当红色和绿色的点离的很近的时候,就会有一条黄色的颜色带出现,就会在视觉上产生错觉。所以,在颜色搭配上,我们选用适应人眼对色彩分辨特性的棕、红、橙、黄、绿、天蓝、蓝、深蓝色的顺序来表示压力值从大到小,背景和压力值为 0 点的压力为白色。压力数据范围主要分布在 0-300,而 300 是属于异常的高压,一般人的压力不会达到这么

32、大的数值,观察已有的测量数据主要集中 0-120 ,一般足部2/N cm压力集中在 0-70 的范围内,如果超过 70 ,就属于高压部分,需要引2/N cm2/N cm起关注,这部分我们用棕色来表示,为了仔细观察这些点的压力值,当鼠标移动电子科技大学硕士学位论文10到这些点的上方单击,就可以出现对应的压力值,便于分析。而 0-70 范围内的压力为了区分各个区域的压力渐变情况,我们按照每2/N cm10作了一个颜色的区分,RGB 配色如下:2/N cm0-10:从深蓝色过渡到蓝色,RGB 值从(0,0,128)过渡到(0,0,255);2/N cm10-20:从蓝色过渡到浅蓝色,RGB 值为(0

33、,0,255)到(0,255,255);2/N cm20-30:从浅蓝色过渡到浅绿色,RGB 值为(0,255,255)到2/N cm(0,255,128);30-40:从浅绿色过渡到绿色,RGB 值为(0,255,128)到(0,255,0);2/N cm40-50:从绿色过渡到黄色,RGB 值为(0,255,0)到(255,255,0);2/N cm50-60:从黄色过渡到橙色,RGB 值为(255,255,0)到(255,128,0);2/N cm60-70:从橙色过渡到红色,RGB 值为(255,128,0)到(255,0,0);2/N cm70以上的区域:从红色过渡到棕色,RGB 值

34、为(255,0,0)到2/N cm(128,0,0);2.3.3. 足底扫描数据 RGB 显示在颜色搭配完成之后,就将压力值与颜色对应起来,利用颜色深浅来区别压力的大小,鼠标移动到颜色块上,会出现具体的压力值,这样就方便定性判断和定量判断压力分布情况。测量平台完成一次扫描后,将各个传感器的每次采样值做叠加平均,就得到扫描的静态图像,用于观察压力的分布以及各个区域的压力水平。界面中会分别呈现出左右脚的压力分布,软件为每位病人保存左右脚各 5组数据,可以人为地选择测量效果较好的图片进行保存,如图 2-5 所示:第二章 足底压力测量平台软件设计11图 2-5 左右足压力分布图为了反映扫描中足部的压力

35、变化,还需要将整个扫描过程图形化。软件中的动态扫描(图 2-2)就是将各个时间的采样描绘出来,体现各个时刻压力的变化。为了能够观察到任意扫描时刻的静态图,软件设计了抓取图片的功能,通过输入时间,就可以抓取该时刻的图片。为了进一步满足我们观察最大压力值的需要,这里特别地将一次扫描操作完成之后,各个传感器在扫描过程中最大的采样值绘制出来,如图 2-6 所示。图 2-6 各个采样点的最大采样值图像电子科技大学硕士学位论文12需要将采集信号实时地显示出来,如果直接在屏幕上动态绘画的话,会出现闪烁现象,为了客服这个问题,采用的是先在内存绘图,然后拷贝到屏幕,从而实现动态绘图不闪烁。这相当于用两块画布,首

36、先设置兼容区域,这就相当于屏幕后边的画布,一般为当前绘图窗口的大小,再创建兼容 DC,就是在内存的绘图设备,还需建立兼容的位图,把位图选入兼容 DC 就可以画图了,每次画图前先用白色画刷现刷新这个兼容 DC,这就相当于刷新原来的背景。接着完成绘图的操作,画完再将兼容 DC 的图拷贝到屏幕上来,就实现了图像的去抖动。CRect RectCompatible; /设置兼容区域,一般为当前窗口大小CDC DCCompatible; /建立兼容 DC,即后面那块画布CBitmap BitmapCompatible; /建立兼容位图,要想在兼容 DC 上画图,必须给它一副图DCCompatible.Se

37、lectObject(&BitmapCompatible);/把位图选到兼容 DC 中,这样才可以开始画最后用 BitBlt 函数把兼容 DC 的内容拷贝到 pDC,完成前后交替,这样就图形显示就不会抖动。dc.BitBlt(RectCompatible.left,RectCompatible.top,RectCompatible.Width(),RectCompatible.Height(),&DCCompatible,RectCompatible.left,RectCompatible.top,SRCCOPY);2.4 数据库设计数据库是压力平台系统的重要组成部分,在这一部

38、分整理出了数据库的需求以后,再根据功能模块设计出数据模式,最后再对每一个模式进行具体实现。本系统是为足底压力分布测量平台设计的软件管理平台,所以选用了单机模式,即数据存储、用户检索和数据维护在一台工作站上运行,这样给数据库系统带来更强的可操作性。2.4.1. 开发环境当前流行的数据库有 MySQL,Oracle。Oracle 主要针对大型数据库,对内存的要求更高,MySQL 针对中小型数据库,并且开源,是一个快速的、多线程、多任务和健壮的 SQL 数据库服务器。针对 MySQL 易用性的特点,我们的数据选第二章 足底压力测量平台软件设计13用 MySQL 作为开发工具。2.4.2. 结构设计

39、1需求分析构建一个针对临床应用的软件系统,需要从应用环境出发来考虑需求。本系统是面向具体病人信息的管理以及医生临床诊断应用,针对以上需求列出系统的基本技术要求:采用人机对话方式,设计友好美观的界面,能使用户方便、快捷、准备地查询到信息,同时考虑数据存储的安全性。实现病例信息的录入、修改、查询、删除,方便管理信息。从应用背景角度考虑,设计存储的信息种类。如压力信息的存储,病人检测信息的存储,医生的诊断信息等。考虑数据的保密性,做好登录权限的设置。2功能构架图糖尿病足底压力综合平台数据库系统是一个典型的医学应用的开发程序,是为数据库管理员对足底压力的数据库提供操作的界面程序,由信息查询、信息录用、

40、图像显示、诊断结果等模块组成,如图 2-7 所示,系统的功能模块如下所述:1)信息录用模块实现对新增病人信息的记录,添加到数据库,包括年龄、性别、身高、体重等的基本信息的记录。2)信息查询模块病人信息查询和诊断信息查询,实现患者基本信息和病历信息的记载,为追踪病情以及辅助诊断提供可靠信息。3)数据显示模块这是从数据库中调用已有的数据来显示,用于在离线情况下,观测和分析已有病人数据的足底压力分布情况。4)病理信息模块由于糖尿病溃疡足是神经血管病变产生,因此为了给诊断者提供更加全面的信息,系统中添加了病理参数的记录,包括糖尿病病程、足病程、参数的检验等信息。电子科技大学硕士学位论文14病人姓名年龄

41、性别体重脚尺寸邮箱病史成像时间成像医师扫描3扫描2扫描1图像糖尿病病程溃疡足病程ABIVPT症状病理参数检测图 2-7 数据库结构设计2.4.3. 关系模型关系模型是用表的集合形式来表示数据和数据间的关系。它建立在严格的数学理论基础上,概念清晰简单,用同一的结构来反应出实体集和实体之间的关系。关系数据库的基本数据结构称作表,即关系,每一个关系是由一张命名的二维表来表示,表的每一行称为一条记录,一个表中可以有多个列,每列具有唯一的列名。用户利用(Query)来查询数据库中的数据。按照 E-R 图向关系模式的转换规则将其转化为关系模式,并按照数据库设计的第三范式设计对关系模式进行规范化处理,得到如

42、下模式:病人关系模式:病人信息表(病人编号(主码) ,姓名,性别,年龄,住址,体重,脚尺寸,电子邮件) ;图像关系模式:图像信息表(图像编号,病人编号(外键) ,图像,成像医生,成像时间) ;诊断关系模式:诊断信息表(诊断编号,病人编号(外码) ,诊断医生姓名,疾病描述,VPT 值,ABI 值,诊断时间) ;第二章 足底压力测量平台软件设计15表 2-1 病人信息表字段名数据类型长度是否主键是否允许为空描述Patient_idInteger20是否病人编号Patient_namevarchar40否否病人姓名Patient_gendervarchar20否否性别Patient_ageInteg

43、er20否否年龄Patient_addressvarchar80否否家庭住址Patient_footsizeInteger20否否脚尺寸大小Patient_weightInteger20否否体重Patient_heightInteger20否否身高Patient_emailvarchar60否否电子邮件表 2-2 图像信息表字段名数据类型长度是否主键是否允许为空描述Patient_idInteger20是否图像编号Patient_nameInteger40否否病人编号Patient_genderImage20否否图像信息Patient_agevarchar20否否成像医师Patient_add

44、ressDatetime80否否成像时间表 2-3 诊断信息表字段名数据类型长度是否主键是否允许为空描述Patient_idInteger20是否诊断编号Patient_nameInteger40否否病人编号Doctor_gendervarchar20否否诊断医生Diagnosis_levelInteger20否否诊断分级Diagnosis_detailvarchar80否否诊断描述Patient_DF_yearInteger40否否糖尿病病程Patient_DFU_dayInteger40否否足病程时间Patient_VPTvarchar40否否VPT 值Patient_ABIvarchar

45、40否否ABI 值电子科技大学硕士学位论文16表 2-4 用户信息表字段名数据类型长度是否主键是否允许为空描述user_idvarchar20是否用户名user_nameInteger40否否用户姓名user_passwordvarchar20否否用户级别user_permissionvarchar20否否用户权限2.4.4. ADO 数据模型Visual C+ 为我们提供了丰富的数据访问技术,如ADO,ODBC,DAO,RAO 等。其中 ADO 是最新的访问技术,它是使用起来更加简单,而又更加灵活的对象模型。对于新工程,应该使用 ADO 作为数据访问接口。ADO 提供执行以下操作的方式31。

46、1创建数据源;2连接到数据源;3制定访问数据源的命令,同时可带变量参数或优化执行。通常涉及 ADO的 command 对象。4执行命令,例如一个 SELECT 脚本。5如果这个命令使数据按表中行的形式返回(如 SELECT 命令) ,则将这些行存储在易于检查,操作或者修改的缓存中。6适当的情况下,可以将缓存行的更改内容写回数据库中,更新数据源。7提供常规方法检查错误(错误通常由建立连接或执行命令造成) ,涉及ADO 的 Error 对象。为了实现上述功能,ADO 编程模型提供了以下主要元素:连接:通过“连接”可以从应用程序中访问数据源。对象模型使用Connection 对象完成连接功能。连接时

47、必须指定出被连接到的数据源名称,以及连接所使用的用户名和密码等信息。命令:可以通过已经建立的连接发出命令,对数据源进行指定的操作。一般情况下,数据源中添加、修改或者删除数据都是通过命令的方式来完成的,也可以检索分类出满足指定条件的数据。在对象模型中用 Command 对象来体现命令第二章 足底压力测量平台软件设计17的概念。参数:在执行命令时可以指定参数,参数可以在命令发布之前进行更改。例如,可以重复发出同样的数据检索命令,但是每一次指定的检索条件不同。对象模型中用 Parameter 对象来体现参数的概念。记录集:查询命令可以将查询结果存储在本地,这些数据以“行” (记录)为单位,返回数据的

48、集合被称为记录集。对象模型将记录集体现为 Recordset 对象。字段:一个记录集行包含一个或多个字段。如果将记录集看作二维网格,字段排列起来构成列。每一字段(列)都分别包含有名称、数据类型和值的属性,值中包含了数据源中的真实数据。错误:错误可能在应用程序中随时发生,通常是由于无法建立连接、执行命令或对某种状态的对象进行操作所引起的。属性:每个 ADO 对象都有一组唯一的“属性”来描述或控制对象的行为。属性有内置和动态两种类型。内置属性是 ADO 对象的一部分并且随时可用。动态属性则由特别的数据提供者添加到 ADO 对象的属性集合中,仅在提供者被使用时才能存在。2.4.5. 使用 ADO 搭

49、建数据库系统1导入 ADO 库文件在默认情况下,Visual C+不支持 ADO 对象,因此,我们在程序中需要手动添加 ADO 对象,需要使用#import 命令将 ADO 库文件导入到工程中,具体实现代码如下:#importC:ProgramFilesCommonFilesSystemadomsado15.dllno_namespace rename(EOF,adoEOF)支持 ADO 编程的库文件是 msado15.dll,它的默认保存路径为C:ProgramFilesCommonFilesSystemado。参数 no_namespace 表示不使用 ADO的名字空间,为了避免出现常量命

50、名的冲突,这里将 EOF 更名为 adoEOF,将BOF 更名为 adoBOF.2连接数据库首先要创建一个 Connection 对象,通过它建立到数据库的连接,通常需要在头文件中定义一个 Connection 对象,代码如下:电子科技大学硕士学位论文18Public:ConnectionPtr m_pConnection; /添加一个指向 Connection 对象的指针创建 Connection 对象的方法如下:m_pConnection.CreateInstance(“ADODB.Connection”);创建 Connection 对象后,还需要设置具体的属性,连接到指定的数据库。st

51、rConnect 设置连接字符串,指定用于建立连接数据源的信息。可以直接设置数据源的提供者和数据库文件的方法表示连接字符串,代码如下:strConnect=Provider=MSDASQL.1;Persist Security Info= False; Data Source=mydata;Database=plantar;uid=root;pwd=root;3访问数据库RecordSet 对象表示来自基本表或命令执行结果的记录全集。使用 ADO 时,通过 Recordset 对象可以对几乎所有数据进行操作,所有 Recordset 对象均使用记录(行)和字段(列)进行构造。m_pRecord

52、set.CreateInstance(_uuidof(Recordset);创建一个 m_pRecordset,strSql=select * from patients;m_pRecordset-Open(_variant_t(strSql),m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);上边的代码完成了读取表 patients 的记录到 m_pRecordset 中。4查询数据库系统中需要用到查询操作,接收到用户的输入,构造正确的 SQL 命令,然后传给记录集对象的 Open 函数。_Re

53、cordSetPtr pQueryRecordset; /创建查询记录集对象CString strSQL=”,temp=;strSQL=select * from patients where ;temp.Format(Patient_name =%s,m_name); / m_name 为绑定控件的变量,用于接收用户的输入strSQL+=temp1;pQueryRecordset.Open(_variant_t(strSQL),m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);图 2-8 为数据

54、库搭建界面:分为三个部分,条件查询模块,病人信息模块,第二章 足底压力测量平台软件设计19扫描信息模块。查询模块设置了几个查询条件:按照病人 ID 查找、病人姓名查找、家庭住址查找、生日查找,可以利用几个条件同时查找,也可以单条件查找。病人信息就包含了病人姓名、年龄、联系方式,以及病例参数等信息;通过点击病人信息就会出现对应病人的足底压力的扫描信息,这些扫描的信息就可以链接到对应的图像显示的部分。图 2-8 数据库界面截图2.4.6. 图像文件的存储数据库的存储技术是数据库首要技术之一,如何有效地存储各类数据,也成为了数据库技术研究的一个关键问题。在存储这种图形或者文档类型的数据时,可以选择通

55、过一个应用程序来存储导向该文档的文件系统路径信息,例如:“f:image/picture.jpg” ,将这些信息存放在 varchar 数据列中,而把实际的文档保留到文件系统;另一种方法是将实际图像直接放到一个二进制或图像类型的数据电子科技大学硕士学位论文20列里。如果只将文件的路径保存在数据库中,这样就把文件存放在磁盘上减少了数据库的大小,降低了存储空间的需求,但是这也给实际应用带来了很大的不便,在维护数据库的同时还得维护这些存储路径信息。因此这里我们选用把数据作为一个记录的一个字段保存在数据中,这样减少了很多安全隐患32。这种较大二进制对象如图形、长文本、多媒体等数据称为 BLOB(Bin

56、ary Large Object),在存储方式上与普通的数据类型有所不同。ADO 中提供了对这些 BLOB 的支持:GetChunk 和 AppendChunk 函数,通过它们可以像读写文件一样把数据内容写入数据库。2.4.6.1. SAFEARRAY 数据类型对 BLOB 进行操作时,需要用到 SAFEARRAY 结构。这是一种结构化数据类型,包含了对数据的访问信息。实际上 SAFEARRAY 就是将通常的数组增加一个描述符,说明其维数、长度、边界及元素类型。Win32 定义的 SAFEARRAY如下:typedef struct tagSAFEARRAY unsigned short cD

57、ims; unsigned short fFeatures; unsigned long cbElements; unsigned long cLocks; void * pvData; SAFEARRAYBOUND rgsabound1;真正的数据存放在 pvData 里边,成员描述如下: cDims:定义数组的维数;fFeatures 用来描述数组如何分配和如何被释放的标志;cbElements:定义数组元素的大小;cLocks:是一个计数器,用来跟踪该数组被锁定的次数;pvData:指向数据缓冲的指针,这是真正数据的所在;rgsabound:描述数组每维的数组结构;rgsabound 成

58、员是一个 SAFEARRAYBOUND 结构的数组,每个元素代表SAFEARRAY 的一个维。第二章 足底压力测量平台软件设计21typedef struct tagSAFEARRAYBOUNDunsigned long cElements;unsigned long lLbound; SAFEARRAYBOUND; 2.4.6.2. 实现步骤这里我们根据传感器的排列结构和采集数据的方式,为了操作方便,将数据按照位置顺序存为一维数组,这样就定义 rgsabound 为只有一个元素的数组,即SAFEARRAYBOUND rgsabound1;使用 SAFEARRAY 变量的步骤如下:1定义一个变

59、量:VARIANT varMyChunk;SAFEARRAY *psa;SAFEARRAYBOUND rgsabound1;2创建 SafeArray 描述符:数组下标从 0 开始,这样就有 rgsabound0.lLbound=0; len 定义数组元素的个数。rgsabound0.lLbound=0;rgsabound0.cElements=nBytes;psa=SafeArrayCreate(VT_UI1,1,len);3写入和读取数据放置数据到 SAFEARRAY,使用 SafeArrayPutElement 函数实现向数组中放置数据;HRESULT SafeArrayPutEleme

60、nt( SAFEARRAY FAR* psa, long FAR* rgIndices, void FAR* pv );psa 指向创建的 SAFEARRAY,rgIndices 为数组元素的下标,pv 指向需要写入的数组指针。利用 for 循环逐个读入需要放入的数据,放置完成后,还需要将数据封装到 VARIANT 内,因为 SAFEARRAY 不能直接使用。需要读取 SAFEARRAY 中的数据时,使用 SafeArrayGetElement 函数。定义电子科技大学硕士学位论文22一个 buf 区域,用 for 循环将元素逐个写到 buf 缓冲区,之后就可以对数据进行一系列的绘图操作了。第三章 基于动态时间

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论