Windows环境下的生物电信号的提取
作者:沈永林 蒋珂 陈文晖 梁毓厚
单位:清华大学 电机系 (北京 100084)
关键词:生物电信号;Windows;采集;滤波
北京生物医学工程990203 摘 要 本文对在Windows下采集生物电信号进行了讨论,针对不同的采集卡、不同的采样率,采用不同的方法,并且采用一种滤波算法,快速而有效地消除工频干扰和基线漂移,以确保噪声背景下弱信号的提取。
Acquisition of Biomedical Electronic Signal
on Window's Environment
Shen Yonglin, Jiang Ke, Chen Wenhui, Liang Yuhou
, 百拇医药
(Tsinghua University, Beijing 100084)
Abstract
The paper discusses the methods for acquisition of biomedical electronic signal on Windows' platform. Different method is accepted depending on different A/D cards with different sampling rate. A filter is led for erasing the disturbance of power and zero drift quickly and effectively.
Key words:Biomedical electronic signal; Windows; Acquisition; Filter
, 百拇医药
0 前 言
人体的物生电信号多属于强噪声背景下的低频的弱信号。由于人体多种生物电信号和各种噪声的交织,以及测量系统本身的影响,使得人体生物电信号的测量成了难度较高的技术。
现在,人体生物电信号的提取和处理技术已经被广泛地接受。在DOS环境下,利用中断或查询程序实现生物电信号的提取,对进行开发研制的技术人员来说,只是编制一个规范的例行程序,并不复杂。
功能强大的Windows系统的出台,很快占领了微机操作系统的市场。越来越多的开发研制人员转向Windows环境下进行开发。由于Windows系统完全接管了计算机内各种软件、硬件资源的管理,不允许程序员越过Windows系统直接使用硬件资源。这样用户在Windows系统实时使用自制的硬件,就很棘手。这使不少用户在Windows系统下使用硬件望而却步。
这里,结合我们的科研开发,谈谈在Windows环境下提取生物电信号的有关问题。
, 百拇医药
1 普通A/D卡的信号采集
普通A/D卡,本身没有处理器,一般也没有定时器。它的采样及采样率的控制由计算机来执行。不同的采样率,可以分别采用不同的方法来实现。
1.1 Windows提供的定时器函数
Windows提供的定时器函数SetTimer,它能够设置一个定时器,按照设定的频率,重复产生定时器消息WM-TIMER。程序每接到此消息便可转入采样服务程序进行采样。
该定时器周期设置最小为55ms,利用它进行采样,其最高采样率为18.2Hz。另外,由于消息按队列处理,定时器消息的实时性显然不严格。因此,定时器函数适用于低采样率,且实时性要求不严格的情况。
1.2 PC系统定时器
, http://www.100md.com Windows应用程序应该通过Windows系统提供的设备驱动程序来管理和使用I/O设备,不然,无法保证程序正常工作。在《未公开的Windows核心技术》中提到,Windows提供了设备驱动程序SYSTEM.DRV来管理8253的异步时钟[1]。与其有关的函数主要有:
①CreateSystemTimer 用于设置中断周期和中断回调函数,其功能类似于DOS下定时器编程时计数器初值的设定和中断向量表的修改。
②KillSystemTimer 取消定时器工作,其功能类似DOS编程的恢复现场。
通过SYSTEM.DRV驱动程序,系统时钟采用定时中断方式,犹如DOS环境下的INT 8定时器中断,避开了Windows的消息队列处理方式,从而解决了实时问题。但是,系统时钟的定时频率只有18.2Hz,太低。若要提高采样频率,可以直接对定时器I/O口编程,修改8253计数器初值,这样就可以改变定时器中断频率。这种办法是可行的。我们利用它进行采样,达到了预期的目的。
, 百拇医药
但这种越过Windows系统直接操作定时器的做法并非总是可行的。在较低的中断频率下,系统完全能够正常工作,但若继续提高中断频率,系统工作就会发生异常,以致破坏Windows内核,导致系统崩溃。
1.3 实时钟中断
PC/AT机以上机型及其兼容机上,都设立了实时钟,由专用电路产生年、月、日、时、分、秒等的时钟信息,也产生定时中断请求,送到中断控制器8259A中,Windows通过多媒体应用程序接口(MultiMedia API)来管理实时钟电路。其中主要函数有:
①timeSetEvent 它设置一个定时器回调事件和定时频率,一旦事件被激活,回调函数将按设定的定时频率周期性地被调用。
②timeKillEvent 它清除已设定的定时器,即恢复现场。
, http://www.100md.com Windows提供的多媒体定时器,通过中断方式管理实时钟电路,缺省状态下最高中断频率可达1kHz。利用实时钟中断作为采样中断,定时准确,定时频率高,而且系统运行安全可靠。
2 单片机控制的A/D卡的信号采集
信号采集时,显示器屏幕上需要同时显示采集的信号的波形,以监视信号,确保高质量的采集数据。当由于某种因素造成信号异常时,可以舍弃已采集的数据,重新采集,避免因数据质量差而形成的无效采集。
在单任务运行的DOS环境中,采集与显示并行工作并不困难。但在Windows多任务环境下,实时采集数据、显示采集数据的曲线以及同时运行多任务之间,存在一定的矛盾。当采样率较高时,CPU来不及同时处理采集、显示及其它任务,实时就成了问题。为了减轻CPU的负担,并保证信号采集的实时性,可以采用多处理器方案,A/D卡由单片机控制,其他任务由CPU完成。这样可以较好地解决多任务环境下,采集、显示和多任务运行的矛盾。
, http://www.100md.com
主机和从机通常这样分工:主机向单片机发送命令来控制单片机启动、终止信号采集和数据传输。单片机通过定时器启动A/D转换,读取数据,当采得的数据需要传送时,向主机发出中断请求。主机在中断处理程序中,完成从单片机接受数据,存入数据缓冲区。
具体编程时,可以采用C语言内嵌汇编语言程序来实现,中断调用通过DOS及Windows未公开的中断INT 31H及函数来实现。
3 信号的预处理
生物电信号采集过程中,不可避免地混杂各种干扰,其中主要是工频干扰和基线漂移。除了在硬件电路中设置模拟滤波器及抑制漂移电路外,还通过软件,即利用计算机技术和数字信号处理方法,对采得的信号进行预处理来滤除干扰,以便对信号正确地进行分析。
滤除工频干扰和基线漂移一般使用线性相位的数字滤波器[2]。滤除频率极低的基线漂移时,此法的计算点数相当多,实时性差。使用简单整系数IIR线性相位滤波器可以显著地减少计算量,用一般台式机便可实现。由于滤除基线漂移需要运算大量的点,ALSTE提出利用频谱重复特性减少运算点数的一种方法,但是用FIR滤波器的运算点数还是比较多[3]。
, http://www.100md.com
在心电信号的预处理中,我们综合了几种方案的优点,采用了一种可同时滤除心电中基线漂移和交流干扰的简单算法,有效地滤除工频干扰和基线漂移,运算量少,处理速度快,很实用。该滤波器的频域表达式为:
该滤波器还有一个特点:不论系统采样率如何,只要是50Hz的整数倍,则滤波器每输出一点计算量相同,表达式不变,仅改变采样率与50Hz的比率,计算量也很小。因此,该滤波器具有一定的通用性。
为滤除高频干扰,采用如下IIR整系数数字低通滤波器,其截止频率为100Hz:
4 实 例
我们自行设计制作了单片机控制的A/D采集卡,在Windows环境下,对多种生物电信号进行采集,结果令人满意。图1是标准十二导信号同步采集的窗口。
图1 同步采集十二号信号的采样窗口
参考文献
1 Schulman A. 全正译.未公开的Windows核心技术.清华大学出版社,1993
2 赵捷,华枚.一种滤除ECG基线漂移和交流干扰的简单算法.中国医疗器械杂志,1991,15(5):262
3 宗孔德,胡广书.数字信号处理.清华大学出版社,1998
(1998-07-10收稿), 百拇医药
单位:清华大学 电机系 (北京 100084)
关键词:生物电信号;Windows;采集;滤波
北京生物医学工程990203 摘 要 本文对在Windows下采集生物电信号进行了讨论,针对不同的采集卡、不同的采样率,采用不同的方法,并且采用一种滤波算法,快速而有效地消除工频干扰和基线漂移,以确保噪声背景下弱信号的提取。
Acquisition of Biomedical Electronic Signal
on Window's Environment
Shen Yonglin, Jiang Ke, Chen Wenhui, Liang Yuhou
, 百拇医药
(Tsinghua University, Beijing 100084)
Abstract
The paper discusses the methods for acquisition of biomedical electronic signal on Windows' platform. Different method is accepted depending on different A/D cards with different sampling rate. A filter is led for erasing the disturbance of power and zero drift quickly and effectively.
Key words:Biomedical electronic signal; Windows; Acquisition; Filter
, 百拇医药
0 前 言
人体的物生电信号多属于强噪声背景下的低频的弱信号。由于人体多种生物电信号和各种噪声的交织,以及测量系统本身的影响,使得人体生物电信号的测量成了难度较高的技术。
现在,人体生物电信号的提取和处理技术已经被广泛地接受。在DOS环境下,利用中断或查询程序实现生物电信号的提取,对进行开发研制的技术人员来说,只是编制一个规范的例行程序,并不复杂。
功能强大的Windows系统的出台,很快占领了微机操作系统的市场。越来越多的开发研制人员转向Windows环境下进行开发。由于Windows系统完全接管了计算机内各种软件、硬件资源的管理,不允许程序员越过Windows系统直接使用硬件资源。这样用户在Windows系统实时使用自制的硬件,就很棘手。这使不少用户在Windows系统下使用硬件望而却步。
这里,结合我们的科研开发,谈谈在Windows环境下提取生物电信号的有关问题。
, 百拇医药
1 普通A/D卡的信号采集
普通A/D卡,本身没有处理器,一般也没有定时器。它的采样及采样率的控制由计算机来执行。不同的采样率,可以分别采用不同的方法来实现。
1.1 Windows提供的定时器函数
Windows提供的定时器函数SetTimer,它能够设置一个定时器,按照设定的频率,重复产生定时器消息WM-TIMER。程序每接到此消息便可转入采样服务程序进行采样。
该定时器周期设置最小为55ms,利用它进行采样,其最高采样率为18.2Hz。另外,由于消息按队列处理,定时器消息的实时性显然不严格。因此,定时器函数适用于低采样率,且实时性要求不严格的情况。
1.2 PC系统定时器
, http://www.100md.com Windows应用程序应该通过Windows系统提供的设备驱动程序来管理和使用I/O设备,不然,无法保证程序正常工作。在《未公开的Windows核心技术》中提到,Windows提供了设备驱动程序SYSTEM.DRV来管理8253的异步时钟[1]。与其有关的函数主要有:
①CreateSystemTimer 用于设置中断周期和中断回调函数,其功能类似于DOS下定时器编程时计数器初值的设定和中断向量表的修改。
②KillSystemTimer 取消定时器工作,其功能类似DOS编程的恢复现场。
通过SYSTEM.DRV驱动程序,系统时钟采用定时中断方式,犹如DOS环境下的INT 8定时器中断,避开了Windows的消息队列处理方式,从而解决了实时问题。但是,系统时钟的定时频率只有18.2Hz,太低。若要提高采样频率,可以直接对定时器I/O口编程,修改8253计数器初值,这样就可以改变定时器中断频率。这种办法是可行的。我们利用它进行采样,达到了预期的目的。
, 百拇医药
但这种越过Windows系统直接操作定时器的做法并非总是可行的。在较低的中断频率下,系统完全能够正常工作,但若继续提高中断频率,系统工作就会发生异常,以致破坏Windows内核,导致系统崩溃。
1.3 实时钟中断
PC/AT机以上机型及其兼容机上,都设立了实时钟,由专用电路产生年、月、日、时、分、秒等的时钟信息,也产生定时中断请求,送到中断控制器8259A中,Windows通过多媒体应用程序接口(MultiMedia API)来管理实时钟电路。其中主要函数有:
①timeSetEvent 它设置一个定时器回调事件和定时频率,一旦事件被激活,回调函数将按设定的定时频率周期性地被调用。
②timeKillEvent 它清除已设定的定时器,即恢复现场。
, http://www.100md.com Windows提供的多媒体定时器,通过中断方式管理实时钟电路,缺省状态下最高中断频率可达1kHz。利用实时钟中断作为采样中断,定时准确,定时频率高,而且系统运行安全可靠。
2 单片机控制的A/D卡的信号采集
信号采集时,显示器屏幕上需要同时显示采集的信号的波形,以监视信号,确保高质量的采集数据。当由于某种因素造成信号异常时,可以舍弃已采集的数据,重新采集,避免因数据质量差而形成的无效采集。
在单任务运行的DOS环境中,采集与显示并行工作并不困难。但在Windows多任务环境下,实时采集数据、显示采集数据的曲线以及同时运行多任务之间,存在一定的矛盾。当采样率较高时,CPU来不及同时处理采集、显示及其它任务,实时就成了问题。为了减轻CPU的负担,并保证信号采集的实时性,可以采用多处理器方案,A/D卡由单片机控制,其他任务由CPU完成。这样可以较好地解决多任务环境下,采集、显示和多任务运行的矛盾。
, http://www.100md.com
主机和从机通常这样分工:主机向单片机发送命令来控制单片机启动、终止信号采集和数据传输。单片机通过定时器启动A/D转换,读取数据,当采得的数据需要传送时,向主机发出中断请求。主机在中断处理程序中,完成从单片机接受数据,存入数据缓冲区。
具体编程时,可以采用C语言内嵌汇编语言程序来实现,中断调用通过DOS及Windows未公开的中断INT 31H及函数来实现。
3 信号的预处理
生物电信号采集过程中,不可避免地混杂各种干扰,其中主要是工频干扰和基线漂移。除了在硬件电路中设置模拟滤波器及抑制漂移电路外,还通过软件,即利用计算机技术和数字信号处理方法,对采得的信号进行预处理来滤除干扰,以便对信号正确地进行分析。
滤除工频干扰和基线漂移一般使用线性相位的数字滤波器[2]。滤除频率极低的基线漂移时,此法的计算点数相当多,实时性差。使用简单整系数IIR线性相位滤波器可以显著地减少计算量,用一般台式机便可实现。由于滤除基线漂移需要运算大量的点,ALSTE提出利用频谱重复特性减少运算点数的一种方法,但是用FIR滤波器的运算点数还是比较多[3]。
, http://www.100md.com
在心电信号的预处理中,我们综合了几种方案的优点,采用了一种可同时滤除心电中基线漂移和交流干扰的简单算法,有效地滤除工频干扰和基线漂移,运算量少,处理速度快,很实用。该滤波器的频域表达式为:
该滤波器还有一个特点:不论系统采样率如何,只要是50Hz的整数倍,则滤波器每输出一点计算量相同,表达式不变,仅改变采样率与50Hz的比率,计算量也很小。因此,该滤波器具有一定的通用性。
为滤除高频干扰,采用如下IIR整系数数字低通滤波器,其截止频率为100Hz:
4 实 例
我们自行设计制作了单片机控制的A/D采集卡,在Windows环境下,对多种生物电信号进行采集,结果令人满意。图1是标准十二导信号同步采集的窗口。
图1 同步采集十二号信号的采样窗口
参考文献
1 Schulman A. 全正译.未公开的Windows核心技术.清华大学出版社,1993
2 赵捷,华枚.一种滤除ECG基线漂移和交流干扰的简单算法.中国医疗器械杂志,1991,15(5):262
3 宗孔德,胡广书.数字信号处理.清华大学出版社,1998
(1998-07-10收稿), 百拇医药