一种局部更新绘制心电图的方法、系统及装置与流程

文档序号:12609102阅读:216来源:国知局
一种局部更新绘制心电图的方法、系统及装置与流程

本发明涉及数据处理技术领域,尤其是涉及一种局部更新绘制心电图的方法、系统及装置。



背景技术:

心电工作站、心电图机作为心电检查的医疗诊断设备,采集病人的心电信号过程中,在选取稳定有效波形时,实时显示心电波形是基础的临床需求。在实现心电波形实时绘制时,扫屏方式的心电图绘制方法是一种较为常用的方法,在心电图机中,由于考虑到实时绘制图形需要主控需要较高的计算能力,一般不使用背景网格,而是使用纯色背景进行绘制和擦除,这样可以简化绘图逻辑,降低对主控性能要求。而心电工作站上为了方便绘图的实现,一般对每一帧均使用了全屏重绘,这样绘图方式对机器性能要求较高,会大量消耗cpu计算资源,而且会影响UI交互的响应速度。因此,实现较高性能绘图方式具有比较重要的意义。



技术实现要素:

本发明的目的在于克服上述技术不足,提出一种局部更新绘制心电图的方法、系统及装置,解决现有技术中绘图性能不够高的技术问题。

为达到上述技术目的,本发明的技术方案提供一种局部更新绘制心电 图的方法,其包括以下步骤:根据屏幕DC(Device Context,设备描述表)大小在内存中创建与屏幕DC具有相同宽高的背景DC和心电图DC;在所述背景DC中绘制心电背景;将心电背景粘贴到所述心电图DC和所述屏幕DC;在心电图DC中绘制一帧心电图时从缓存中获取对应通道的心电数据并将获取的各通道心电数据在心电图DC中绘制到相应的局部区域以局部更新心电图DC;将局部更新的心电图DC粘贴到屏幕DC。

优选地,在将局部更新的心电图DC粘贴到屏幕DC后还包括以下步骤:计算绘图线程休眠时间并根据计算的休眠时间对绘图线程进行休眠;在休眠结束后判断是否停止绘图并根据判断结果确定是否停止绘图。

优选地,在局部更新绘制心电图DC的步骤中包括以下步骤:从缓存中获取与通道相对应的多个心电数据组;根据上一帧心电图DC中各通道绘制的心电图的局部区域在心电图DC中所在的位置坐标将背景DC中相同位置坐标的背景区域对心电图DC中对应位置坐标区域进行擦除;将获取的多个心电数据组分别对应绘制到心电图DC中各通道已用背景区域擦除的局部区域;判断是否绘制完成所有通道心电图并在所有通道绘制完成后结束绘图。

优选地,在心电图DC中绘制各通道心电图的局部区域包括绘制区和分界区,在将各通道对应心电数据绘制到已用背景区域擦除的局部区域的步骤中,各通道对应的心电数据绘制到局部区域的绘制区以将心电图叠加绘制。

优选地,在计算休眠时间步骤中包括以下步骤:计算每一帧绘图的正常时间间隔normalSpace=perCount*1000/SamplingRate,其中perCount为每帧每通道绘制点数,SamplingRate为心电数据样本采样率;计算一帧 心电图绘制执行时间drawSpace=tick2-tick1,其中tick1为当前系统从启动开始到当前经历的毫秒数,tick2为在绘制一帧心电图结束后系统开始到当前经历的毫秒数;计算休眠时间sleepTime=normalSpace-drawSpace–sleepError;其中sleepError=sleepTime-(tick3-tick2),tick3为休眠时结束时系统的时间。

一种局部更新绘制心电图的系统,其包括一个初始创建模块、一个背景DC绘制模块、一个粘贴模块及一个局部更新绘制模块,所述初始创建模块用于根据所述屏幕DC大小在内存中创建与屏幕DC具有相同宽高的所述背景DC和所述心电图DC,所述背景DC绘制模块用于在所述背景DC中绘制心电背景,所述粘贴模块用于将心电背景粘贴到所述心电图DC和所述屏幕DC,所述局部更新绘制模块用于在心电图DC中绘制一帧心电图时从缓存中获取对应通道的心电数据并将获取的各通道心电数据在心电图DC中绘制到相应的局部区域以局部更新心电图DC,所述粘贴模块将局部更新的心电图DC粘贴到屏幕DC。

优选地,所述系统还包括休眠模块及判断模块,所述休眠模块用于在一帧心电图绘制完成后,计算绘图线程休眠时间,并根据计算的休眠时间对绘图线程进行休眠;所述判断模块用于在休眠结束后,判断是否停止绘图,如果不停止绘图,则继续绘制下一帧心电图。

优选地,心电图绘制模块包括:数据获取单元、擦除单元、绘制单元及判断单元,所述数据获取单元用于从缓存中获取与通道相对应的多个心电数据组;所述擦除单元用于根据上一帧心电图DC中各通道绘制的心电图的局部区域位置坐标利用背景DC中相同位置坐标的背景区域对心电图DC 中对应位置坐标区域进行擦除;所述绘制单元用于将获取的多个心电数据组分别对应绘制到心电图DC中各通道已用背景区域擦除的局部区域;所述判断单元用于判断是否绘制完成所有通道心电图,若是,则计算休眠时间,若否,则继续绘制当前帧各通道心电图。

优选地,休眠模块中休眠时间的计算为sleepTime=normalSpace-drawSpace–sleepError,其中,normalSpace为每一帧绘图的正常时间间隔,normalSpace=perCount*1000/SamplingRate,其中perCount为每帧每通道绘制点数,SamplingRate为心电数据样本采样率;drawSpace为一帧心电图绘制执行时间drawSpace=tick2-tick1,其中tick1为当前系统从启动开始到当前经历的毫秒数,tick2为在绘制一帧心电图结束后系统开始到当前经历的毫秒数;休眠时间误差sleepError=sleepTime-(tick3-tick2),tick3为休眠时结束时系统的时间。

一种心电采集装置,其包括上述任意一项所述的局部更新绘制心电图的系统。

与现有技术相比,本发明的种局部更新绘制心电图的系统根据屏幕DC大小在内存中创建相同宽高的背景DC和心电图DC,在背景DC中绘制心电背景,将心电背景粘贴到心电图DC和屏幕DC;然后从缓存中获取心电数据在心电图DC中绘制各通道的心电图绘制区域的局部区域来更新绘制一帧心电图后粘贴到屏幕DC,解决了心电图实时绘制过程中闪烁问题,且降低cpu计算资源占用率,较大提升绘图性能,后台绘图线程单独进行图形绘制避免了UI线程阻塞带来的图形显示、交互卡顿问题,;当一帧心电图绘制完成后,计算绘图线程休眠时间,绘图线程进行休眠从而实现根据队列长度 动态调整休眠时间,解决上位机同心电数据采集装置之间的时钟差异和传输延时、不稳定的问题,提升心电绘图的平滑性。

附图说明

图1是本发明提供的一种局部更新绘制心电图的方法流程图;

图2是图1的心电图更新绘制局部区域方法流程图;

图3是图1中在背景DC中绘制的心电背景网格示意图;

图4是在具有图3的心电背景的心电图DC中的心电图绘制示意图;

图5是本实施方式中绘制I通道的当前帧与下一帧的局部区域示意图;

图6是图5中在心电图DC中实现局部更新绘制的示意图;

图7是根据图6进行局部区域擦除时的背景DC中对应位置区域示意图;

图8是图1中计算休眠时间的流程图;

图9是本发明提供的一种局部更新绘制心电图的系统模块示意图。

附图中:1、局部更新绘制心电图的系统,10、初始创建模块,11、背景DC绘制模块,12、粘贴模块,13、心电图绘制模块,14、休眠模块,15、判断模块,131、数据获取单元,132、擦除单元,133、绘制单元,135、判断单元。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明提供一种局部更新绘制心电图的方法,其中,包括:

S1、根据屏幕DC(Device Context,设备描述表)大小在内存中创建与屏幕DC具有相同宽高的背景DC和心电图DC;

在步骤S1中,在内存中创建的背景DC和心电图DC作为心电图缓存,可以理解的是,屏幕DC的大小是指在屏幕上显示绘制的心电图形的区域大小。其中,与屏幕DC具有相同宽高的背景DC是指背景DC在宽度方向的像素点与屏幕DC在宽度方向像素点相同,背景DC在高度方向的像素点与屏幕DC在高度方向的像素点相同。

S2、在背景DC中绘制心电背景;

在绘制心电背景时,首先获取系统DPI(单位为像素/英寸,表示每英寸的像素),计算出该系统1厘米对应的像素点数为_unitPixLen,_unitPixLen=10*DPI/25.4(1英寸=2.54厘米=25.4毫米);然后根据背景DC大小计算出横向格数和纵向格数(每一格的宽、高为1厘米),横向格数xCount=(_width-2*borderMinWidth)/_unitPixLen,_width表示背景DC的宽度,单位为像素,borderMinWidth表示背景DC的最小边界宽度,单位为像素,xCount取整数值,纵向格数yCount=(_height-2*borderMinWidth)/_unitPixLen,_height表示背景DC的高度,单位为像素,borderMinWidth表示背景DC的最小边界宽度,单位为像素,yCount取整数值;再根据xCount和yCount计算绘图区域边框宽度,_borderWidthX=(_width-xCount*_unitPixLen)/2;_borderWidthY=(_height-yCount*_unitPixLen)/2,通过边框宽度可以获取绘图区域位置,并根据横向和纵向格数绘制纵向网格虚线和横向网格虚线以及横向和纵向的实 线网格,最后绘制出通道号到背景网格之中,整个心电背景绘制完成,如图3所示,本实施例绘制12通道的心电图,通道分别是:I、II、III、aVR、aVL、aVF、V1、V2、V3、V4、V5、V6,选取的显示模式为单列或多列,如1*12(1列12通道)、2*6(2列6通道)或3*4(3列4通道)等。

S3、将心电背景粘贴到心电图DC和屏幕DC;

在步骤S3中,在将心电背景粘贴到心电图DC与屏幕DC时,可以同时将背景DC分别粘贴到心电图DC和屏幕DC,也可先将背景DC先粘贴到心电图DC,再心电图DC粘贴到屏幕DC。本实施方式中,以2*6显示模式为例。

S4、在心电图DC中绘制一帧心电图时从缓存中获取对应通道的心电数据并将获取的各通道心电数据在心电图DC中绘制到相应的局部区域以局部更新心电图DC;本实施方式中,在心电图DC中绘制各通道心电图的局部区域包括绘制区和分界区。在将各通道从缓存中接收的心电数据绘制各通道绘图区域时将各通道对应的心电数据绘制到局部区域的绘制区以将心电图叠加绘制,所有通道局部区域更新绘制完毕即绘制完一帧心电图,其中每一通道的局部区域绘制完成后就将心电图DC对应的局部更新区域粘贴到屏幕DC,实现屏幕显示的心电图更新。其中,在步骤S4中包括以下步骤:

S41:从缓存中获取与通道相对应的多个心电数据组;

在步骤S41中,,每个心电数据组分别对应从各导联采集并存储在缓存中,可以理解的是,缓存是指心电采集系统从多个导联线采集的心电数据使用队列方式存储。绘制一帧心电图需从缓存中获取多个心电数据组来进行各通道对应的心电图绘制,各心电数据组分别对应绘制到各通道相应的局部区域。

S42:利用背景DC中与心电图DC中各通道绘制下一帧心电图的局部区域位置相同的区域对心电图DC进行相同位置区域的擦除;

如图4所示,以绘制I通道心电图为例进行说明,当前帧n绘制的I通道的局部区域为A,局部区域A包括绘图区A1和分界区A2,图中用虚线隔开以示意,此时分界区A2左边为实时更新绘制的心电图,分界区A2的右边为已绘制的心电图,在绘制下一帧n+1心电图时,根据上一帧n的局部区域A的位置坐标计算出下一帧I通道心电数据需绘制在心电图DC的局部区域AA位置坐标,如图5所示。可以理解的是,局部区域A与局部区域AA具有相同宽度及高度,如图6所示,局部区域AA包括绘图区AA1及分界区AA2,绘图区AA1及分界区AA2分别与绘图区A1和分界区A2具有相同的宽度及高度。

如图6所示,图6中各图为未显示背景网格的心电图DC且仅以I通道为例,见图(6b)及图7,根据局部区域AA的位置坐标对应到背景DC上的背景区域A11,如图(6c)所示,利用背景DC中的区域A11对心电图DC的局部区域AA进行擦除,也就是说,将背景区域A11粘贴到心电图DC中的局部区域AA中,仅将相应位置区域A11处粘贴到心电图DC,心电图DC其他区域心电图仍保留。可以理解的是,背景区域A11擦除的部分包括绘图区AA1及分界区AA2。

S43:将获取的多个心电数据组分别对应绘制到心电图DC中各通道已用背景区域擦除的局部区域;

见图(6d)所示,在局部区域AA被心电背景网格擦除后,I通道对应 获取的下一帧n+1心电数据根据局部区域AA的绘图区AA1的右边界位置坐标叠加绘n+1帧I通道的心电数据,此时分界区AA2相对于上一帧n的分界区A2逐步后移,该帧I通道的局部区域更新绘制完成。可以理解的是,绘制n+1帧的I通道心电图时只需将获取的心电数据对应绘制到局部区域AA中绘图区AA1而完成该帧I通道的绘制,I通道其他局部区域已绘制的心电图无需重绘。依次类推,所有通道的心电数据更新绘制到各通道相应局部区域的绘图区后,当前一帧的心电图在心电DC绘制完成,其中每一通道的局部区域绘制完成后就将局部更新的心电图DC粘贴到屏幕DC,完成屏幕DC的心电图更新。

S44:判断是否绘制完成所有通道心电图,若是,则进入步骤S5,若否,则重复步骤S41-S43直到当前帧各通道心电图绘制完成。

S5、计算绘图线程休眠时间并根据计算的休眠时间对绘图线程进行休眠;

在步骤S5中,请参阅图8,使用队列模型来缓冲采集的心电数据,并通过队列长度动态调整绘图线程休眠时间;绘图初始化时,先计算出每一帧绘图的正常时间间隔normalSpace,normalSpace=perCount*1000/SamplingRate,其中perCount为每帧每通道绘制点数,SamplingRate为心电数据样本采样率,初始化时休眠误差sleepError为0;进入绘图循环时,先记录下当前系统TickCount为tick1,即系统从启动开始到当前经历的毫秒数,在绘制一帧心电图结束后,记录下当前系统TickCount为tick2,一帧心电图绘制执行时间drawSpace=tick2-tick1;计算休眠时间,休眠时间为每一帧绘图的正常时间间隔减去一帧心电图绘制执行时间,再减去休 眠误差,即sleepTime=normalSpace-drawSpace–sleepError,其中,sleepError为上一帧的休眠误差;计算出的休眠时间需要根据当前心电数据缓存长度进行调整,可以理解的是,当缓存数据长度超过设定的最大延时缓存长度时,将休眠时间sleepTime缩短,缩短的时间大小依据实际需要自行设置,本实施方式中,一般依实际情况将休眠时间缩短为sleepTime/2或sleepTime/3。当缓存数据长度小于设定的最小缓存长度时,将休眠时间sleepTime延长,本实施方式中,一般依实际情况将休眠时间延长为3sleepTime/2或4sleepTime/3,这样根据上述计算的休眠时间进行休眠,即可动态的完成休眠时间的调整,保证在实际的绘图过程中呈现出的动画较为平滑;计休眠结束时系统的时间为tick3,sleepError=sleepTime-(tick3-tick2),sleepTime为绘制完一帧心电图后需要休眠的时间。另外缓存长度最大最小调整界限值可根据实际的时延要求、上位机和心电数据采集模块之间的通信方式进行适配。

S6、在休眠结束后判断是否停止绘图,若是,则停止绘图,若否,则继续绘制下一帧心电图。

可以理解的是,一般会因外界的操作指令或无法接收到心电数据而停止绘图。

请参阅图9,本发明还提供一种局部更新绘制心电图的系统1,其包括:

初始创建模块10:用于根据屏幕DC大小在内存中创建与屏幕DC具有相同宽高的背景DC和心电图DC;

背景DC绘制模块11:用于在背景DC中绘制心电背景;

粘贴模块12,其用于将心电背景粘贴到心电图DC和屏幕DC;

心电图绘制模块13:其用于在心电图DC中绘制一帧心电图时从缓存中获取对应通道的心电数据并将获取的各通道心电数据在心电图DC中绘制到相应的局部区域以局部更新心电图DC,也即在逐个绘制各通道绘制区域时将各通道绘图区域的局部区域更新绘制后依次粘贴到屏幕DC显示,所有的通道局部区域更新绘制完毕即绘制完一帧心电图DC的图像;

休眠模块14:其用于在一帧心电图绘制完成后,计算绘图线程休眠时间,并根据计算的休眠时间对绘图线程进行休眠;

判断模块15:用于在休眠结束后,判断是否停止绘图,如果不停止绘图,则继续绘制下一帧心电图。

本发明所述的局部更新绘制心电图的系统1,心电图绘制模块13包括:

数据获取单元131,其用于获取多个心电数据组;

擦除单元132:其用于根据上一帧心电图DC中各通道绘制的心电图的局部区域位置坐标利用背景DC中相同位置坐标的背景区域对心电图DC中对应位置坐标区域进行擦除;

绘制单元133:其用于将获取的多个心电数据组分别对应绘制到心电图DC中各通道已用背景区域擦除的局部区域;可以理解的是,每个通道的局部区域在心电图DC中绘制完成后将更新绘制的心电图DC通过粘贴模块12粘贴到屏幕DC以显示该通道更新后的心电图,依次类推,各通道局部区域更新绘制后依次粘贴到屏幕DC。

判断单元135:其用于判断是否绘制完成所有通道心电图,若是,则计算休眠时间,若否,则继续绘制当前帧各通道心电图。

本发明所述的局部更新绘制心电图的系统1,休眠模块14使用队列模。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1