referring now to the drawings , fig1 shows a defibrillator 10 . the defibrillator delivers an electrical impulse to a patient via cables 12 and paddles ( not shown ). the defibrillator 10 has a switch 14 for selecting the amount of energy to be delivered to the patient . switches for initiating the discharge are typically located on the paddles . the defibrillator 10 has a display 16 for showing the patient &# 39 ; s heart waveform , enabling the operator to diagnose the patient &# 39 ; s condition . gain switches 18a , 18b enable the operator to increase or decrease the vertical size of the heart waveform on the display 16 . a heart rate display 20 shows the patient &# 39 ; s current heart rate . the defibrillator 10 also has a strip recorder 22 for printing ecg waveforms in permanent form on paper strips 24 . referring now to fig2 the defibrillator 10 provides the ecg signals received by the paddles and transmitted on the cables 12 to an analog to digital ( a / d ) converter 30 . alternatively , the ecg signals may come from a standard patient lead set acquire by separate electrodes . the output of the a / d converter is provided to a digital signal processor 32 which filters the digital ecg signals and provides them to a central processing unit 34 . the central processing unit 34 displays an ecg representation of the ecg data on the ecg display 16 and displays the patient &# 39 ; s heart rate on the heart rate display 20 . the central processing unit also controls the defibrillator electronics 36 . the central processing unit 34 also accepts input from the user switches 38 , including the energy selection switch 14 , the discharge switches ( not shown ) and the gain switches 18a and 18b . the digital signal processor 32 performs many functions on the digitized ecg signals , including low - pass and high - pass filtering , slope detection , activity detection , peak detection , and attenuation . basic to the present invention is the digital signal processor &# 39 ; s function of providing a high - pass variable - corner - frequency filter . the basic building block of a real - time variable ecg high - pass filter is a single - pole digital filter . the output y [ 0 ] at time t = 0 of a digital high - pass filter is equal to its input x [ 0 ] at the same time less an accumulated amount w [ 0 ] which tracks the dc offset . the accumulated amount w [ 0 ] is equal to the accumulated amount at the previous time w [- 1 ] plus some fraction &# 34 ; a &# 34 ; of the previous difference between the accumulated amount and the input . that is , the fraction , or coefficient , &# 34 ; a &# 34 ; determines the frequency response or time constant τ of the filter according to the equation : ## equ1 ## where f s is the sampling frequency . for example , if fs = 1000 hz , and a = 1 / 1000 , then the time constant t would be 1 second and the 3 db frequency f c ( in hertz ) of the filter would be ## equ2 ## by dynamically changing coefficient &# 34 ; a &# 34 ;, the responsiveness of the filter can be changed . a single - pole low - pass digital filter is very similar to the high - pass filter just described . its output is the accumulated amount w [ 0 ], rather than y [ 0 ]. referring now to fig3 a detailed block diagram of a real - time variable ecg high - pass filter can be seen . sampled ecg data is provided to a 40 hz low - pass filter 50 , a 150 hz low - pass filter 76 , and a slope detector 66 . in an exemplary version of the invention , the ecg data is sampled once each millisecond at 16 - bit resolution . the 150 hz low - pass filter 76 and the slope detector 66 will be discussed in more detail below . the 40 hz filter defines the upper end of the passband for the monitor data output and is a multiple term finite - impulse - response ( fir ) digital filter . the output of the 40 hz low - pass filter 50 is provided to two variable high - pass filters 52 and 54 connected in series . the output of the second variable high pass filter 54 is provided to the operator on the display 16 . both of the variable high - pass filters are single - pole high - pass digital filters and operate as described above , varying their respective corner frequencies according to a supplied coefficient &# 34 ; a .&# 34 ; the manner in which the coefficient &# 34 ; a &# 34 ; is determined will be discussed below . although a single variable high - pass filter provides many benefits , it fails to solve a common problem faced by defibrillators . immediately after a defibrillation discharge , the skin - electrode interface acquires a potential which is exponentially dissipated , taking about 5 to 10 seconds . for the sake of discussion , assume a linear decay of this voltage . the output of a single - pole high - pass filter approximates the derivative of its input . the derivative of a ramp is a slowly decaying value ; thus the output of a single - pole high - pass filter receiving a linearly dissipating voltage is a slowly decaying dc value . thus , for 5 to 10 seconds after a defibrillation discharge , the patient &# 39 ; s ecg waveform is superimposed upon a steady dc value . for high decay rates , the ecg waveform will be off - screen . this dc value is typically substantial enough to negate the benefit of the variable high - pass filter . by providing two single - pole high - pass filters , the second filter will receive the dc output of the first and be able to eliminate the dc offset . the coefficient &# 34 ; a &# 34 ; supplied to the two variable high - pass filters 52 and 54 is varied according to the dc offset output by the first variable high - pass filter 52 . a higher dc offset results in a higher coefficient &# 34 ; a &# 34 ;, increasing the corner frequency of the high - pass filters 52 and 54 , allowing them to more quickly respond to the dc offset . as the dc offset decreases to zero , coefficient &# 34 ; a &# 34 ; can also effectively decrease to near zero , providing a highly accurate filter for stable ecg data signals . however , only the output of the first high - pass filter 52 is used . to prevent the output of the second high - pass filter 54 from being away from the baseline when the output of the first high - pass filter 52 allows &# 34 ; a &# 34 ; to be reduced , the corner frequency of the second variable high - pass filter 54 is set to twice that of the first high - pass filter 52 . this allows the output of the second high - pass filter to decay faster and thus be closer to the baseline than the output of the first high - pass filter 52 . the output of the first variable high - pass filter 52 is supplied to a 0 . 25 hz low - pass filter 56 , which provides an output essentially equal to the dc offset from the first variable high - pass filter 52 . this filter is a single - pole low - pass digital filter as described above . the absolute value 58 of the output from block 56 is supplied to a peak detector 60 having a delay . the peak detect allows the coefficient &# 34 ; a &# 34 ; to rise rapidly , and thus respond to large dc offsets quickly . if the coefficient &# 34 ; a &# 34 ; were allowed to decrease as rapidly as the dc offset from the first variable high - pass filter 52 , then as the dc offset neared zero , &# 34 ; a &# 34 ; would also near zero , effectively prolonging the ultimate elimination of the last bit of dc offset . thus , the decay after a delay prohibits the coefficient &# 34 ; a &# 34 ; from decreasing until after the dc offset has reached zero . the peak detector 60 uses two storage registers : &# 34 ; peak &# 34 ; and &# 34 ; decay .&# 34 ; &# 34 ; peak &# 34 ; stores a value representing the current peak in input values . &# 34 ; decay &# 34 ; stores a value less than one which gets multiplied by the value in &# 34 ; peak ,&# 34 ; resulting in the output of the peak detector . the value in &# 34 ; decay &# 34 ; is decreased periodically to slowly decrease the output . the output of the peak detector 60 is scaled such that , if it were passed directly to the first variable high - pass filter 52 as coefficient &# 34 ; a &# 34 ;, a one milli - volt output from the 0 . 25 low - pass filter 56 would result in a corner frequency of 0 . 25 hz . referring now to fig4 every five milliseconds , the peak detector 60 gets 100 the next absolute value 58 of the low pass filter 56 . if 102 the value is 3 . 1 percent greater than the peak detector &# 39 ; s current output , then the value is stored 104 in the &# 34 ; peak &# 34 ; register and the value 0 . 97 is stored 106 in the &# 34 ; decay &# 34 ; register . the output is then equal to the product of the values stored in the &# 34 ; peak &# 34 ; and &# 34 ; decay &# 34 ; registers 110 . however , if 102 the value is not 3 . 1 percent greater than the peak detector &# 39 ; s current output , then the value in the &# 34 ; decay &# 34 ; register is updated 108 according to the following equation . as the value in the &# 34 ; decay &# 34 ; register decreases , its rate of decrease becomes greater . equation 6 can be solved for decay ( n ) yielding : thus , the value stored in the &# 34 ; decay &# 34 ; register , assuming no new peak is detected in block 102 , will decay as shown in the following table . table 1______________________________________n seconds &# 34 ; decay &# 34 ; register______________________________________268 1 . 34 0 . 90422 2 . 11 0 . 80512 2 . 56 0 . 70626 3 . 13 0 . 50716 3 . 58 0 . 25780 3 . 90 0 . 00______________________________________ referring again to fig3 the output of the peak detector 60 is provided to a variable attenuator 62 , which for the present will be described as passing the output of the peak detector 60 on to the clipper 64 . the description of the variable attenuator 62 will be augmented below . the clipper 64 provides as its output the greater of ( 1 ) the output of the variable attenuator 62 , and ( 2 ) a coefficient &# 34 ; a &# 34 ; corresponding to a corner frequency of 0 . 025 hz for the first variable high - pass filter 52 . thus , the minimum corner frequency for the first variable high - pass filter 52 is 0 . 025 hz and for the second variable high - pass filter 54 is 0 . 050 hz . the coefficient &# 34 ; a &# 34 ; to the first and second variable high - pass filters 52 , 54 can also be varied by the &# 34 ; activity &# 34 ; of the input ecg data signal . a digital triangular convolution filter operates on the input ecg data and provides as an output a &# 34 ; slope &# 34 ; z which corresponds to the average slope of the last 40 ms of ecg data . for this reason , the digital triangular convolution filter is termed herein as a &# 34 ; slope detector &# 34 ; 66 . when the ecg signal has high activity , such as during the qrs complex , the output of the slope detector will be elevated . when the ecg signal is essentially flat , the output of the slope detector will be zero . the slope detector &# 39 ; s coefficients are selected such that its output slope is the average slope of the last 40 ms of the ecg data . an exemplary equation used by the slope detector 66 on ecg data sampled at 5 ms intervals is given in the following equation . an activity detector 68 receives the slope z from the slope detector 66 and provides as an output a signal which is the average of the absolute values of the last four slopes . ## equ3 ## the output of the slope detector 68 cannot be used directly because its output can drop near zero when the slope of the input ecg signal changes signs . this will occur at the peak of each r wave . other equations for an activity detector can be used . the requirements are that the activity y [ 0 ] remain high for periods of increased activity in the ecg data . a threshold detector 70 low - pass filters the output of the activity detector 68 with a corner frequency of 0 . 1 hz . thus , the output of the threshold detector is the near - dc component of the slope of the input ecg data , and serves as a threshold for altering the coefficient &# 34 ; a .&# 34 ; the threshold detector is a single - pole low - pass digital filter with a corner frequency of 0 . 1 hz , implemented as described above . block 72 takes the ratio of threshold to activity , and supplies it to a clipper 74 . if the ratio is greater than one , then the activity is less than the threshold , and no modification of &# 34 ; a &# 34 ; will occur as a result of the ecg activity . however , if the ratio is less than one , then the activity is greater than the threshold and the ecg signal is in a period of increased activity . thus , the passband of the variable high - pass filters 52 , 54 should be decreased to decrease the qrs signal &# 39 ; s effect on the filter &# 39 ; s accumulated amounts w . the variable attenuator takes the output of the peak detector 60 and multiplies it by the output of the clipper 74 . above , to keep the discussion of varying the coefficient &# 34 ; a &# 34 ; based on the dc offset of the filters 52 and 54 simple , the variable attenuator was described as passing the output of the peak detector 60 directly to the clipper 64 . during periods of low ecg activity , the output of clipper 74 will be one , and the simplified description is correct . however , during times of high ecg activity , that is , the output of clipper 74 is less than one , the output of the variable attenuator will be decreased by the ratio of threshold to activity as provided by block 72 . this has the effect of decreasing the coefficient &# 34 ; a &# 34 ; supplied to the first and second variable high - pass filters 52 and 54 during times of increased ecg activity . the 150 hz low - pass filter 76 mentioned above defines the upper end of the passband for the diagnostic data output and is a multiple term finite - impulse - response ( fir ) digital filter . the output of the 150 hz low - pass filter 76 is provided to a third and fourth variable high - pass filters 78 and 80 connected in series . the diagnostic output of the fourth variable high - pass filter 80 is provided to the user . thus , their primary purpose is to maintain the ecg signal with the lowest possible corner frequency of high - pass filtering . the third and fourth variable high - pass filters 78 , 80 are single - pole high - pass digital filters and operate as described above . they both operate with the same corner frequency , unlike the first and second variable high - pass filters 52 and 54 discussed above in reference to the monitor data output . the output of the 150 hz low - pass filter is also provided to a 2 hz single - pole high - pass digital filter 82 . the 2 hz corner frequency is set so that the filter &# 39 ; s output contains virtually no baseline wander . the output of the 2 hz high - pass filter 82 is subtracted 84 , 86 from the outputs of the third and fourth variable high - pass filters 78 , 80 . the resulting differences are bandpass filters having passbands between 2 hz and the corner frequencies of the third and fourth variable high - pass filters 78 , 80 . the maximum of the absolute values of the two differences is provided to block 90 by block 88 . block 90 scales the output of block 88 to the gain of the ecg display 16 ( fig1 ). it does this by dividing the output of block 88 by the voltage which represents the extreme edge of the output device , such as the paper edge 24 of the strip recorder 22 , and squaring the result . the output of block 90 is provided to a peak detector 91 . the peak detector provides an output to the third and fourth variable high - pass filters 78 , 80 through a second variable attenuator 92 and clipper 94 . referring now to fig5 the peak detector 91 uses a storage register &# 34 ; peak &# 34 ; for storing peak values detected in the output of block 90 . as a first step , the peak detector 91 gets 150 the output of block 90 . that output is scaled 152 such that an output of unity from block 90 would result in a corner frequency of 0 . 025 hz at variable high - pass filters 78 , 80 . if 154 the resulting scaled value &# 34 ; tmp &# 34 ; is greater than the value stored in &# 34 ; peak ,&# 34 ; then the value in &# 34 ; tmp &# 34 ; is stored in &# 34 ; peak &# 34 ; and provided 164 as the output of the peak detector 91 . however , if 154 the resulting scaled value &# 34 ; tmp &# 34 ; is less than the values stored in &# 34 ; peak ,&# 34 ; then the output of block 90 is scaled 158 such that an output of unity from block 90 would result in a corner frequency of 0 . 10 hz . if 160 the resulting scaled value &# 34 ; tmp &# 34 ; is less than the value stored in &# 34 ; peak ,&# 34 ; then the value in &# 34 ; tmp &# 34 ; is stored in &# 34 ; peak &# 34 ; and provided 164 as the output of the peak detector 91 . thus , the output from the peak detector 91 changes in response to two different conditions . if the output from block 88 is so large that it would exceed the current peak value , then the peak detector &# 39 ; s output changes to increase the corner frequency of the variable high - pass filters 78 , 80 . if the output from block 88 is so small that four times its value does not exceed the current peak value , then the peak detector &# 39 ; s output changes to decrease the corner frequency of the variable high - pass filters 78 , 80 . the second variable attenuator 92 operates similarly to the first variable attenuator 62 . it takes the output of block 91 and multiplies it by the output of the clipper 74 . during periods of low ecg activity , the output of the clipper 74 will be one , and thus the output of the second variable attenuator will equal the output of block 91 . otherwise , the output of the second variable attenuator will be decreased proportionally to the ratio of the output of the threshold detector 70 to the output of the activity detector 68 . the output of the second variable attenuator is clipped such that the resultant &# 34 ; a &# 34 ; supplied to the third and fourth variable high - pass filters 78 and 80 results in corner frequency of 0 . 025 hz . a further refinement in the control of coefficient &# 34 ; a &# 34 ; is preferred . as described above , the accumulated value w in a single - pole filter tracks the low - frequency components of the input signal x . during times of high activity in the ecg signal , the activity detector 68 causes rapid reductions in the coefficient &# 34 ; a &# 34 ; through the actions of the first and second variable attenuators 62 and 92 , thereby preventing w from being affected by the qrs complex . this reduction in coefficient &# 34 ; a &# 34 ; also prevents w from accurately tracking any low - frequency baseline wander present , thereby affecting the appearance of the signals at the outputs of the variable high - pass filters 54 and 80 . by continuing to change the accumulated amount w during times of high activity at the same rate as it was changing just before activity occurred , the accumulated amount w will more accurately track baseline wander . this can be accomplished by varying the manner in which the accumulated amount is updated . let &# 34 ; a 1 &# 34 ; be the coefficient &# 34 ; a &# 34 ; after being reduced by qrs activity in the variable attenuators 62 and 92 and let &# 34 ; a 2 &# 34 ; be the difference between the two : a - a 1 . finally , let &# 34 ; slope &# 34 ; be w [ n ]- w [ n - 1 ] where n represents the sample time at which the output of block 72 is one , that is , the last sample at which &# 34 ; a &# 34 ; was not diminished by qrs activity . then the accumulated amount w can maintain a constant rate of change during times of high qrs activity according to the following equation . referring now to fig6 a flow chart of the above refinement is shown . the outputs of the peak detector 60 and the clipped ratio from clipper 74 are read 120 . coefficient &# 34 ; a &# 34 ; is set 122 to the output of the peak detector and &# 34 ; a 1 &# 34 ; is set 124 to the product of the two read values . value a 2 is set to the difference between &# 34 ; a &# 34 ; and &# 34 ; a 1 .&# 34 ; if 128 that difference is zero , then it is not a time of high qrs activity and slope is updated 130 . then w [ 0 ] is determined according to equation ( 10 ), given above . although the present invention has been described in considerable detail with reference to certain preferred versions and values , other versions are possible . the described version uses two variable high - pass filters in series 52 , 54 , and 78 , 80 to eliminate the effects of a constant slope in the offset signal superimposed on the ecg signal . as a baseline wander filter according to the present invention has uses in devices other than a defibrillator , a single variable high - pass filter may be used . the described version changes the corner frequency of the variable high - pass filters 52 , 54 , 78 , 80 according to both the dc offset of the input ecg data and the qrs activity . a variable high - pass filter according to the present invention may be built which varies its corner frequency according to either dc offset , or qrs activity , or both . therefore , the spirit and scope of the appended claims should not be limited to the description of the preferred versions contained herein .
method and apparatus for removing baseline wander from an ecg signal . the ecg signal is filtered with a high - pass filter having a variable corner frequency . in response to finding low - frequency components in the output of the high - pass filter , its corner frequency is temporarily increased . the corner frequency may decrease according to a decay function or sensing the absence of a low - frequency component in the filter &# 39 ; s output . the corner frequency may be decreased in response to sensing ecg activity .