CN104318523B - 数字信号的滤波方法和装置 - Google Patents
数字信号的滤波方法和装置 Download PDFInfo
- Publication number
- CN104318523B CN104318523B CN201410546713.8A CN201410546713A CN104318523B CN 104318523 B CN104318523 B CN 104318523B CN 201410546713 A CN201410546713 A CN 201410546713A CN 104318523 B CN104318523 B CN 104318523B
- Authority
- CN
- China
- Prior art keywords
- signal
- value
- node
- operation window
- current
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 132
- 238000001914 filtration Methods 0.000 title claims abstract description 115
- 230000003628 erosive effect Effects 0.000 claims abstract description 16
- 238000012545 processing Methods 0.000 claims description 97
- 230000002457 bidirectional effect Effects 0.000 claims description 95
- 238000005260 corrosion Methods 0.000 claims description 92
- 230000007797 corrosion Effects 0.000 claims description 92
- 230000010339 dilation Effects 0.000 claims description 37
- 238000004364 calculation method Methods 0.000 claims description 28
- 238000003780 insertion Methods 0.000 claims description 15
- 230000037431 insertion Effects 0.000 claims description 15
- 230000000052 comparative effect Effects 0.000 abstract 1
- 230000000877 morphologic effect Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 108010076504 Protein Sorting Signals Proteins 0.000 description 6
- 230000000694 effects Effects 0.000 description 3
- 238000005530 etching Methods 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 2
- 241000287196 Asthenes Species 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000014616 translation Effects 0.000 description 1
Landscapes
- Mobile Radio Communication Systems (AREA)
Abstract
本发明实施例提供一种数字信号的滤波方法和装置,方法包括:对待处理的一维数字信号f(n),应用结构元k(m),依次进行开运算和闭运算,或者依次进行闭运算和开运算,并将最终运算结果确定为所述f(n)对应的滤波信号;所述开运算和/或闭运算中包括的腐蚀运算的具体步骤包括:将待进行腐蚀运算的信号作为第一中间信号f(t),针对新移入进所述k(m)对应的运算窗口的所述f(t)中的第t个信号,计算f(t)减k(m)得到的第一差值;将第一差值与f(t)中包含在当前运算窗口的上一个运算窗口内的各信号值减k(m)得到的第二差值进行比较;并根据比较结果确定f(t)中的第t个信号对应的腐蚀运算结果。本发明的技术方案对实现了对待滤波信号f(n)的基线滤波,同时也有效提高了滤波效率。
Description
技术领域
本发明涉及信号处理技术领域,尤其涉及一种数字信号的滤波方法和装置。
背景技术
数学形态学是20世纪60年代初,建立起来的一门新型的数字图像处理方法和理论。它的基本思想是利用一定形态结构的元素(简称为结构元)去度量和提取图像中对应的形状,以达到对图像的分析和识别的目的。它的作用相当于一个“探针”,在图像中不断移动结构元,便可以考察出图像各部分间的关系。数学形态学中最常见的基本运算有取反、平移、膨胀、腐蚀、开运算、闭运算、击中、击不中等,它们是数学形态学的基础。
现有利用数学形态学实现对一维的心电图(Electrocardiogram,ECG)信号进行数学形态学滤波,对于ECG中的基线漂移具有比较好的矫正效果,具体滤波方法为:首先,对ECG数字信号进行开运算,即对数字信号先进行一次腐蚀运算,再进行一次膨胀运算,记为然后,再对开运算后的数字信号进行闭运算,即对数字信号先进行一次膨胀运算,再进行一次腐蚀运算,记为其中,f为待滤波的一维ECG数字信号,k为结构元。信号经过开运算以后,信号的波峰会被去掉,信号经过闭运算后,信号的波谷会被去掉,而去掉的波峰与波谷的宽度取决于结构元的长度,即小于结构元宽度的波峰和波谷会被去掉,从而实现对基线漂移噪声进行滤除。
现有技术中,对于信号长度为N的待滤波一维数字信号f(n),(n=0,1,2,...,N-1)中的第n个信号进行长度为M的结构元k(m),(m=0,1,2,...,N-1)的膨胀运算(或腐蚀运算)为,先将信号f(n)以n为中心左右反转;将反转后的f(n)信号平移至n-M+1处;将结构元k(m)与反转后的f(n)信号序列相加(腐蚀运算对应为相加);将相加结果的最大值(腐蚀运算对应为相加结果的最小值)确定为f(n)中第n个信号经过滤波后的信号值。
根据上述滤波方法,若对f(n)中的每一个信号点n对应的信号做开/闭运算,且每个点运算所需的时间的复杂度为O(M),则整段f(n)信号的滤波所需的时间的复杂度为O(M×N)。当结构元长度较大时,运算时间则更长。而在ECG信号的基线漂移形态学滤波中,为了保证波形的不失真,结构元的长度一般要大于最长的T波的宽度,从而导致采用上述滤波方法处理ECG信号的基线漂移处理过程时间长。
发明内容
本发明的实施例提供一种数字信号的滤波方法和装置,以实现对ECG信号的基线漂移进行数字形态学滤波。
为达到上述目的,本发明的实施例提供了一种数字信号的滤波方法,包括:
对待处理的一维数字信号f(n),n=0,1,2,...,N-1,应用结构元k(m),m=0,1,2,...,N-1,依次进行开运算和闭运算,或者依次进行闭运算和开运算,并将最终运算结果确定为所述f(n)对应的滤波信号;其中,所述k(m)为固定值,所述N为大于0的整数;所述开运算和/或闭运算中包括的腐蚀运算的具体步骤包括:
将待进行腐蚀运算的信号作为第一中间信号f(t),t=0,1,2,...,N-1,所述N为大于0的整数;针对新移入进所述k(m)对应的运算窗口的所述f(t)中的第t个信号,m≤t≤N-1,计算所述f(t)减所述k(m)得到的第一差值;
将所述第一差值与所述f(t)中包含在当前运算窗口的上一个运算窗口内的各信号值减所述k(m)得到的第二差值进行比较;并根据比较结果确定所述f(t)中的第t个信号对应的腐蚀运算结果。
本发明的实施例还提供了另一种数字信号的滤波方法,包括:
对待处理的一维数字信号f(n),n=0,1,2,...,N-1,应用结构元k(m),m=0,1,2,...,N-1,依次进行开运算和闭运算,或者依次进行闭运算和开运算,并将最终运算结果确定为所述f(n)对应的滤波信号;其中,所述k(m)为固定值,所述N为大于0的整数;所述开运算和/或闭运算中包括的膨胀运算的具体步骤包括:
将待进行膨胀运算的信号作为第三中间信号f(l),l=0,1,2,...,N-1,所述N为大于0的整数;针对新移入进所述k(m)对应的运算窗口的所述f(l)中的第l个信号,m≤l≤N-1,计算所述f(l)加所述k(m)得到的第三和值;
将所述第三和值与所述f(l)中包含在当前运算窗口的上一个运算窗口内的各信号值加所述k(m)得到的第四和值进行比较;并根据比较结果确定所述f(l)中的第l个信号对应的膨胀运算结果。
本发明的实施例还提供了一种数字信号的滤波装置,包括:
处理模块,用于在所述滤波装置对待处理的一维数字信号f(n),n=0,1,2,...,N-1,应用结构元k(m),m=0,1,2,...,N-1,依次进行开运算和闭运算,或者依次进行闭运算和开运算;
确定模块,用于将所述处理模块最终运算结果确定为所述f(n)对应的滤波信号;其中,所述k(m)为固定值,所述N为大于0的整数;
所述处理模块具体包括第一处理单元和第二处理单元;
所述第一处理单元,用于在所述处理模块进行所述开运算和/或闭运算包括的腐蚀运算中,将待进行腐蚀运算的信号作为第一中间信号f(t),t=0,1,2,...,N-1,所述N为大于0的整数;针对新移入进所述k(m)对应的运算窗口的所述f(t)中的第t个信号,m≤t≤N-1,计算所述f(t)减所述k(m)得到的第一差值;
所述第二处理单元,用于将所述第一差值与所述f(t)中包含在当前运算窗口的上一个运算窗口内的各信号值减所述k(m)得到的第二差值进行比较;
所述确定模块,用于根据所述第二处理单元最终的比较结果确定所述f(t)中的第t个信号对应的腐蚀运算结果。
本发明的实施例还提供了另一种数字信号的滤波装置,包括:
处理模块,用于对待处理的一维数字信号f(n),n=0,1,2,...,N-1,应用结构元k(m),m=0,1,2,...,N-1,依次进行开运算和闭运算,或者依次进行闭运算和开运算;
确定模块,用于将所述处理模块最终运算结果确定为所述f(n)对应的滤波信号;其中,所述k(m)为固定值,所述N为大于0的整数;
所述处理模块具体包括第五处理单元和第六处理单元;
所述第五处理单元,用于在所述处理模块进行所述开运算和/或闭运算包括的膨胀运算中,将待进行膨胀运算的信号作为第三中间信号f(l),l=0,1,2,...,N-1,所述N为大于0的整数;针对新移入进所述k(m)对应的运算窗口的所述f(l)中的第l个信号,m≤l≤N-1,计算所述f(l)加所述k(m)得到的第三和值;
所述第六处理单元,用于将所述第三和值与所述f(l)中包含在当前运算窗口的上一个运算窗口内的各信号值加所述k(m)得到的第四和值进行比较;
所述确定模块,用于根据所述第六单元最终的比较结果确定所述f(l)中的第l个信号对应的膨胀运算结果。
本发明实施例提供的数字信号的滤波方法和装置,通过对待处理的一维数字信号f(n),n=0,1,2,...,N-1,应用结构元k(m),m=0,1,2,...,N-1,依次进行开运算和闭运算,或者依次进行闭运算和开运算,并将最终运算结果确定为f(n)对应的滤波信号;其中,在进行开运算或闭运算中包括的腐蚀运算中:将待进行腐蚀运算的信号作为第一中间信号f(t);针对新移入进k(m)对应的运算窗口的f(t)中的第t个信号计算f(t)减k(m)得到的第一差值;将第一差值与f(t)中包含在当前运算窗口的上一个运算窗口内的各信号值减k(m)得到的第二差值进行比较;并根据比较结果确定f(t)中的第t个信号对应的腐蚀运算结果;或者,在进行开运算或闭运算中包括的膨胀运算中:将待进行膨胀运算的信号作为第三中间信号f(l);针对新移入进k(m)对应的运算窗口的f(l)中的第l个信号,计算f(l)加k(m)得到的第三和值;将第三和值与f(l)中包含在当前运算窗口的上一个运算窗口内的各信号值加k(m)得到的第四和值进行比较;并根据比较结果确定f(l)中的第l个信号对应的膨胀运算结果,由此实现了对待滤波信号f(n)的基线滤波,同时也有效提高了滤波效率。
附图说明
图1为本发明提供的数字信号的滤波方法一个实施例的方法流程图;
图2为本发明提供的数字信号的滤波方法另一个实施例的方法流程图;
图3a为本发明提供的数字信号的滤波方法又一个实施例的方法流程图;
图3b为本发明提供的第一二叉树堆的结构示意图;
图3c为本发明提供的用于维护第一二叉树堆的一维数组;
图4为本发明提供的数字信号的滤波方法又一个实施例的方法流程图;
图5为本发明提供的数字信号的滤波方法又一个实施例的方法流程图;
图6为本发明提供的数字信号的滤波方法又一个实施例的方法流程图;
图7为本发明提供的数字信号的滤波方法又一个实施例的方法流程图;
图8为本发明提供的数字信号的滤波方法又一个实施例的方法流程图;
图9a为本发明提供的数字信号的滤波装置一个实施例的结构示意图;
图9b为本发明提供的数字信号的滤波装置另一个实施例的结构示意图;
图10a为本发明提供的数字信号的滤波装置又一个实施例的结构示意图;
图10b为本发明提供的数字信号的滤波装置又一个实施例的结构示意图。
具体实施方式
本发明的实施例在对一维数字信号f(n)应用结构元k(m)进行开运算和闭运算过程中,将k(m)设置为固定值,并将待进行膨胀运算或腐蚀运算的中间信号在当前运算窗口的新移入点的运算值与上一个运算窗口的运算值作比较,从而确定新移入进运算窗口的信号点对应的相应膨胀运算或腐蚀运算的结果。本发明实施例的技术方案可以适用于对一维数字信号如ECG信号完成基线漂移的形态学滤波。
实施例一
图1为本发明提供的数字信号的滤波方法一个实施例的方法流程图,该方法的执行主体可以为集成数字信号处理功能的滤波器或滤波装置。如图1所示,该数字信号的滤波方法具体包括:
S101,对待处理的一维数字信号f(n),n=0,1,2,...,N-1,应用结构元k(m),m=0,1,2,...,N-1,依次进行开运算和闭运算,或者依次进行闭运算和开运算,并将最终运算结果确定为f(n)对应的滤波信号;其中,k(m)为固定值,N为大于0的整数;所述开运算和/或闭运算中包括的腐蚀运算的具体步骤包括:
将待进行腐蚀运算的信号作为第一中间信号f(t),t=0,1,2,...,N-1,所述N为大于0的整数;针对新移入进k(m)对应的运算窗口的f(t)中的第t个信号,m≤t≤N-1,计算f(t)减k(m)得到的第一差值;
在实际应用场景中,针对ECG信号完成基线漂移的形态学滤波过程中,由于滤波效果仅与k(m)的长度有关,而与k(m)本身的幅值无关,因此在本实施例中,将k(m)设置为固定值,如数值1。公知的,数学形态学滤波中的开运算和闭运算的基础都是膨胀运算和腐蚀运算,二者区别仅在于执行膨胀运算和腐蚀运算的顺序不同。因此,要想减少整体数字信号滤波的运算时间,一种行之有效的方法是对其中涉及的膨胀运算或腐蚀运算过程本身进行算法优化改进。本实施例数字信号的滤波方法将针对上述步骤中的开运算和/或闭运算中包括的各腐蚀运算部分做具体地步骤说明。
具体地,将本实施例数字信号的滤波方法中涉及待进行腐蚀运算的信号均作为第一中间信号f(t),t=0,1,2,...,N-1,N为大于0的整数;并针对新移入进k(m)对应的运算窗口的f(t)中的第t个信号,m≤t≤N-1,计算f(t)减k(m)得到的第一差值。
其中,上述新移入进k(m)对应的运算窗口的f(t)中的第t个信号为f(t)信号序列中最后一个移入k(m)对应的当前运算窗口的一个信号点。换角度而言,也可以理解为具有固定长度的信号k(m)在f(t)对应的信号序列上依t从小到大的顺序整体滑动,且考虑k(m)本身的信号长度(m的大小),规定上述f(t)中第一个所述新移入进k(m)对应的运算窗口的f(t)中的第t个信号为f(t),且t=m。
针对当前新移入进k(m)对应的运算窗口的f(t)中的第t个信号,m≤t≤N-1,计算f(t)减k(m)得到的第一差值。
S102,将第一差值与f(t)中包含在当前运算窗口的上一个运算窗口内的各信号值减k(m)得到的第二差值进行比较;并根据比较结果确定f(t)中的第t个信号对应的腐蚀运算结果;
现有对一维数字信号中的第t个信号进行腐蚀运算过程,是针对当前运算窗口内的所有f(t)分别计算各f(t)减与其序列位置对应的k(m)的差值,然后将差值中的最小值确定为第t个f(t)信号对应的腐蚀运算结果。
本实施例中,由于预先将k(m)设为一个固定值,因此对于f(t)中每个信号点在移动的k(m)的运算窗口内其减k(m)得到的差值总是相同的。由此,在计算上述第t个信号的腐蚀运算结果时,可以仅通过计算得到上述第一差值,然后将该第一差值与当前运算窗口的上一个运算窗口内的各信号值减k(m)得到的第二差值进行比较(具体比较时应先将移出当前运算窗口的信号点对应的第二差值移出,然后再进行比较),确定其对应的腐蚀运算结果。由于在上述比较过程中,不必再对当前运算窗口内的除第t个信号的其他各f(t)对应的第二差值进行重复计算,因此缩短了针对当前运算窗口的处理时间。这里说明,上述第一差值和第二差值为相对概念,如处于当前运算窗口的第一差值,当运算窗口继续向后续信号点移动后就作为后续运算窗口内的第二差值。对于f(t)中t<m的信号点,与其对应的始终视为第二差值。
本发明实施例提供的数字信号的滤波方法,通过对待处理的一维数字信号f(n),n=0,1,2,...,N-1,应用结构元k(m),m=0,1,2,...,N-1,依次进行开运算和闭运算,或者依次进行闭运算和开运算,并将最终运算结果确定为所述f(n)对应的滤波信号;其中,k(m)为固定值;在进行所述开运算和/或闭运算中包括的腐蚀运算时:将待进行腐蚀运算的信号作为第一中间信号f(t);针对新移入进k(m)对应的运算窗口的f(t)中的第t个信号计算f(t)减k(m)得到的第一差值;将第一差值与f(t)中包含在当前运算窗口的上一个运算窗口内的各信号值减k(m)得到的第二差值进行比较;并根据比较结果确定f(t)中的第t个信号对应的腐蚀运算结果,从而实现了对待滤波信号f(n)的基线滤波,同时也有效提高了滤波效率。
实施例二
图2为本发明提供的数字信号的滤波方法另一个实施例的方法流程图,是如图1所示方法的一种具体实现方式。如图2所示,该数字信号的滤波方法与图1所示实施例的区别在于对上述步骤102做了进一步细化。具体细化后的步骤包括:
S201,判断当前存储的最小值A1是否为空,或者不为空时其在f(t)中对应的信号点p是否已移出当前所述运算窗口;所述A1为f(t)中包含在当前运算窗口的上一个运算窗口内的各信号点对应的最小第二差值;
具体地,本实施例中,为了减少各个k(m)运算窗口的运算量,在每个运算窗口计算完成各f(t)减k(m)得到的相应差值后,将这些差值中的最小值作为上述最小值A1记录下来,并将该最小值A1与下一个运算窗口内的第t个信号对应的第一差值进行比较。相对于当前运算窗口内的各f(t),上述最小值A1为除第t个信号以外的其他各f(t)对应的第二差值中的最小值;因此,只需将当前运算窗口内的第一差值与该最小值A1进行比较,就可以确定当前运算窗口的最小值,进而确定当前运算窗口中第t个信号f(t)对应的腐蚀运算结果。需要说明,上述利用上一个运算窗口内的最小值A1确定当前运算窗口中第t个信号f(t)对应的腐蚀运算结果的方法不适用于当前运算窗口为首个运算窗口(即最小值A1不存在),以及当前运算窗口非首个运算窗口时,其上一个运算窗口内对应的最小第二差值(当前记录的最小值A1)对应的信号点p已移除当前运算窗口的情形。因此,在采用该方法之前需要判断当前运算窗口是否符合这两种特殊情形。
若当前存储的最小值A1为空,或者不为空时其在f(t)中对应的信号点p已移出当前所述运算窗口;则执行步骤202~204:
S202,针对当前k(m)对应的运算窗口内除第t个信号外的所有f(t)分别计算其各自减k(m)得到的第二差值;
由于不存在最小值A1,或是该最小值A1在f(t)中对应的信号点p已移出当前运算窗口,因此需要对当前运算窗口按现有方法计算第t个信号对应的腐蚀运算结果;即还需要针对运算窗口内除第t个信号外的所有f(t)分别计算其各自减k(m)得到的第二差值。这里说明,针对最小值A1在f(t)中对应信号点移出当前运算窗口的情形,由于针对除第t个信号外的所有f(t)计算其各自减k(m)得到的差值已在上一运算窗口内执行过,因此在当前运算窗口内重新执行计算后仍将这些差值视为第二差值。
S203,将获得的所有第二差值和第一差值中的最小值确定为f(t)在第t个信号点对应的腐蚀运算结果;
S204,将获得的所有第二差值和第一差值中的最小值确定为新的最小值A1,并记录其相对于在f(t)中对应的信号点p;
具体地,将当前运算窗口内获得的上述所有第二差值和第一差值进行比较,并将其中的最小值确定为f(t)在第t个信号点对应的腐蚀运算结果后,同时将该最小值作为新的最小值A1,并记录其相对于在f(t)中对应的信号点p。
或者,
若当前存储的最小值A1不为空,且其在f(t)中对应的信号点p未移出当前运算窗口;则执行步骤205~206:
S205,将第一差值与当前存储的最小值A1进行比较,并将比较后的较小值确定为f(t)在第t个信号点对应的腐蚀运算结果;
S206,将比较后的较小值确定为新的最小值A1,并记录其相对于在f(n)中对应的信号点p;
具体地,将上述第一差值与当前存储的最小值A1进行比较,并将比较后的较小值确定为f(t)在第t个信号点对应的腐蚀运算结果,同时将该最小值作为新的最小值A1,并记录其相对于在f(t)中对应的信号点p。
本发明实施例提供的数字信号的滤波方法,在图1所示实施例的基础上,采用将上一运算窗口对应的最小第二差值记录为最小值A1,并将其与当前运算窗口内计算得到的第一差值进行比较,来确定当前运算窗口中第t个信号点对应的腐蚀运算结果,减小了运算量,缩短了运算时间。
实施例三
图3a为本发明提供的数字信号的滤波方法又一个实施例的方法流程图,是如图1所示方法的一种具体实现方式。如图3a所示,该数字信号的滤波方法与图1所示实施例的区别在于对上述步骤102做了进一步细化,即引入了如图3b所示的二叉树堆,该二叉树堆中各节点值仅用于举例;该二叉树堆的各节点值和其各自对应的节点位置编号可通过如图3c所示的一维数组进行维护。具体细化后的步骤包括:
S301,判断当前第一二叉树堆中的各节点是否均为空;所述第一二叉树堆中的节点个数等于k(m)的长度,且第一二叉树堆中的各节点值为f(t)中包含在当前运算窗口的上一个运算窗口内的各信号点对应的第二差值且各第二差值按第一固定顺序存放到各节点中;所述第一固定顺序为各节点的节点值小于该节点的子节点的节点值;
具体地,本实施例中,为了减少各个k(m)运算窗口的运算量,在每个运算窗口计算完成各f(t)减k(m)得到的相应差值后,将这些差值作为节点值按第一固定顺序存储在上述第一二叉树的各节点中,并将这些节点值与下一个运算窗口内的第t个信号对应的第一差值进行比较。其中,上述第一固定顺序为各节点的节点值小于该节点的子节点的节点值。由此获知,该第一二叉树中根节点值为所有节点值中的最小值。因此,在具体运算中只需将当前运算窗口内的第一差值插入到第一二叉树中,然后判断插入后的第一二叉树中的具体根节点值,就可以确定当前运算窗口的最小值,进而确定当前运算窗口中第t个信号f(t)对应的腐蚀运算结果。需要说明,上述利用第一二叉树中的根节点值确定当前运算窗口中第t个信号f(t)对应的腐蚀运算结果的方法不适用于当前运算窗口为首个运算窗口(即当前第一二叉树中各节点值不存在)的情形。因此,在采用该方法之前需要判断当前第一二叉树中各节点值是否均为空的特殊情形。
若当前所述第一二叉树堆中的各节点均为空,则执行步骤302~304:
S302,针对当前k(m)对应的运算窗口内除第t个信号外的所有f(t)分别计算其各自减k(m)得到的第二差值;
由于当前第一二叉树中各节点值不存在,因此需要对当前运算窗口按现有方法计算第t个信号对应的腐蚀运算结果;即还需要针对运算窗口内除第t个信号外的所有f(t)分别计算其各自减k(m)得到的第二差值。
S303,将获得的各第二差值和第一差值作为节点值按第一固定顺序存放在第一二叉树堆中的各节点内;
S304,将第一二叉树堆中根节点的节点值确定为f(t)在第t个信号点对应的腐蚀运算结果,并记录各节点值在f(t)中对应的信号点p;
将获得的上述各第二差值和第一差值作为节点值按第一固定顺序存放在第一二叉树堆中的各节点内。由于第一固定顺序规定各个节点值之间的节点位置关系,即根节点值在所有节点值中最小,因此可将上述第一二叉树堆中根节点的节点值确定为f(t)在第t个信号点对应的腐蚀运算结果,同时记录当前各节点值在f(t)中对应的信号点p。
或者,
若当前第一二叉树堆中的各节点均不为空;则执行步骤305~306:
S305,将f(t)中针对当前运算窗口的上一个运算窗口的移出点对应的节点值移出第一二叉树堆,并将第一差值按第一固定顺序插入到第一二叉树堆的一个节点中;
306,将第一二叉树堆中根节点内的节点值确定为f(t)在第t个信号点对应的腐蚀运算结果,并记录当前插入的节点值相对于在f(t)中对应的信号点p;
具体地,若当前第一二叉树堆中的各节点均不为空,则先将f(t)中针对当前运算窗口的上一个运算窗口的移出点对应的节点值移出第一二叉树堆,然后将第一差值按第一固定顺序插入到第一二叉树堆的一个节点中;然后根据根节点值确定f(t)在第t个信号点对应的腐蚀运算结果。在实际应用场景中,对于上述新插入节点值为第一二叉树堆中根节点值的情形,也可以在插入后将其他节点的节点值清空,从而在依据第一固定顺序维护第一二叉树堆时减少运算时间,这一过程中需保证根节点值不为空。
本发明实施例提供的数字信号的滤波方法,在图1所示实施例的基础上,采用将上一运算窗口对应的所有第二差值作为节点值按第一固定顺序存储在第一二叉树堆中,并将当前运算窗口内计算得到的第一差值按所述第一固定顺序插入第一二叉树堆中,根据插入后确定的根节点值来确定当前运算窗口中第t个信号点对应的腐蚀运算结果。在该实施例所示方法中,针对各f(t)信号点仅计算一次其对应的第一差值或第二差值。这样在每次计算新的信号点对应的第一差值时,只需要将新的第一差值插入到第一二叉树堆中,而将老的节点值从第一二叉树堆中移出;因而时间的复杂度为log(M),长度为N的波形滤波的时间负责度为O(N*log(M)),顾整体上减小了运算量,缩短了运算时间。
实施例四
图4为本发明提供的数字信号的滤波方法又一个实施例的方法流程图,是如图1所示方法的一种具体实现方式。如图4所示,该数字信号的滤波方法与图1所示实施例的区别在于对上述步骤102做了进一步细化,即引入了双向队列的概念。具体细化后的步骤包括:
S401,判断当前第一双向队列中的各节点是否均为空;所述第一双向队列中的节点个数等于k(m)的长度,且第一双向队列中的各节点值为f(t)中包含在当前运算窗口的上一个运算窗口内的各信号点对应的第二差值且各所述第二差值按第二固定顺序存放到各节点中;所述第二固定顺序为各所述节点值按其相对于所述f(t)中的信号点顺序排列,其中,t最小的排在所述第一双向队列的队首;
具体地,本实施例中,为了减少各个k(m)运算窗口的运算量,在每个运算窗口计算完成各f(t)减k(m)得到的相应差值后,将这些差值作为节点值按第二固定顺序存储在上述第一双向队列的各节点中,并将这些节点值与下一个运算窗口内的第t个信号对应的第一差值进行比较。其中,上述第二固定顺序为各所述节点值按其相对于所述f(t)中的信号点顺序排列,其中,t最小的排在所述第一双向队列的队首。因此,在具体运算中只需将当前运算窗口内的第一差值插入到第一双向队列中,然后判断插入后的当前第一双向队列中的最小值,进而确定当前运算窗口中第t个信号f(t)对应的腐蚀运算结果。需要说明,上述利用第一双向队列中的最小节点值确定当前运算窗口中第t个信号f(t)对应的腐蚀运算结果的方法不适用于当前运算窗口为首个运算窗口(即当前第一双向队列中各节点值不存在)的情形。因此,在采用该方法之前需要判断当前第一双向队列中各节点值是否均为空的特殊情形。
若当前第一双向队列中的各节点均为空,则执行步骤402~403:
S402,针对当前k(m)对应的运算窗口内除第t个信号外的所有f(t)分别计算其各自减k(m)得到的第二差值;
由于当前第一双向队列中各节点值不存在,因此需要对当前运算窗口按现有方法计算第t个信号对应的腐蚀运算结果;即还需要针对运算窗口内除第t个信号外的所有f(t)分别计算其各自减k(m)得到的第二差值。
S403,将获得的各第二差值和第一差值作为节点值按第二固定顺序存放在第一双向队列中的各节点内;
或者,
若当前第一双向队列中的各节点均不为空,则执行步骤404:
S404,将第一双向队列中除队首位置节点的各节点值依次向队首位置移动一个节点,并将第一差值作为插入节点值压入第一双向队列的队尾节点;
具体地,若当前第一双向队列中的各节点均不为空,则先将队列中的所有节点值除队首节点值外均向队首节点方向整体移动一个节点,队首节点移出队列。然后将第一差值作为插入节点值按第二固定顺序压入所述第一双向队列的队尾节点。在实际应用场景中,对于上述新插入队尾节点的插入节点值,如果其前面的节点值不小于该插入节点值,那么可将其前面节点值清空,依此继续向前一节点值比较,直到无前一节点或前一节点小于当前被插入节点值时结束比较清空操作。
在步骤402或404之后,继续执行步骤405
S405,将当前第一双向队列中的最小节点值确定为f(t)在第t个信号点对应的腐蚀运算结果。
举例说明,设k(m)=1,m=0,1,2;f(t)={3,2,1,6,8,7,13,5,11,10},t=0,1,2,...,9第一双向队列Q长度为的长度为3,腐蚀运算后的数据为A,则计算f(t)中第t点的腐蚀运算结果时,其对应的Q以及腐蚀运算结果如下:
t=2:Q为{4,3,2},A为{2};
t=3:Q为{3,2,7},A为{2,2}
t=4:Q为{2,7,9},A为{2,2,2}
t=5:Q为{7,9,8},A为{2,2,2,7}
t=6:Q为{9,8,14},A为{2,2,2,7,8}
t=7:Q为{8,14,6},A为{2,2,2,7,8,6}
t=8:Q为{14,6,12},A为{2,2,2,7,8,6,6}
t=9:Q为{6,12,11},A为{2,2,2,7,8,6,6,6}
本发明实施例提供的数字信号的滤波方法,在图1所示实施例的基础上,采用将上一运算窗口对应的所有第二差值作为节点值按第二固定顺序存储在第一双向队列中,并将当前运算窗口内计算得到的第一差值按所述第二固定顺序插入第三双向队列中,根据插入后确定的各节点值中的最小值来确定当前运算窗口中第t个信号点对应的腐蚀运算结果。在该实施例所示方法中,针对各f(t)信号点仅计算一次其对应的第一差值或第二差值。这样在每次计算新的信号点对应的第一差值时,只需要将队首节点值移出,将第一差值压入队尾节点;因此,长度为N的波形滤波的时间复杂度为O(N),顾整体上减小了运算量,缩短了运算时间。
实施例五
图5为本发明提供的数字信号的滤波方法又一个实施例的方法流程图,该方法的执行主体可以为集成数字信号处理功能的滤波器或滤波装置。如图5所示,该数字信号的滤波方法具体包括:
S501,对待处理的一维数字信号f(n),n=0,1,2,...,N-1,应用结构元k(m),m=0,1,2,...,N-1,依次进行开运算和闭运算,或者依次进行闭运算和开运算,并将最终运算结果确定为f(n)对应的滤波信号;其中,k(m)为固定值,N为大于0的整数;所述开运算和/或闭运算中包括的膨胀运算的具体步骤包括:
将待进行膨胀运算的信号作为第三中间信号f(l),l=0,1,2,...,N-1,所述N为大于0的整数;针对新移入进k(m)对应的运算窗口的f(l)中的第l个信号,m≤l≤N-1,计算f(l)加k(m)得到的第三和值;
在实际应用场景中,针对ECG信号完成基线漂移的形态学滤波过程中,由于滤波效果仅与k(m)的长度有关,而与k(m)本身的幅值无关,因此在本实施例中,将k(m)设置为固定值,如数值1。公知的,数学形态学滤波中的开运算和闭运算的基础都是膨胀运算和腐蚀运算,二者区别仅在于执行膨胀运算和腐蚀运算的顺序不同。因此,要想减少整体数字信号滤波的运算时间,一种行之有效的方法是对其中涉及的膨胀运算或腐蚀运算过程本身进行算法优化改进。本实施例数字信号的滤波方法将针对上述步骤中的开运算和/或闭运算中包括的各膨胀运算部分做具体地步骤说明。
具体地,将本实施例数字信号的滤波方法中涉及待进行膨胀运算的信号均作为第三中间信号f(l),l=0,1,2,...,N-1,N为大于0的整数;并针对新移入进k(m)对应的运算窗口的f(l)中的第l个信号,m≤l≤N-1,计算f(l)加k(m)得到的第三和值。
其中,上述新移入进k(m)对应的运算窗口的f(l)中的第l个信号为f(l)信号序列中最后一个移入k(m)对应的当前运算窗口的一个信号点。换角度而言,也可以理解为具有固定长度的信号k(m)在f(l)对应的信号序列上依l从小到大的顺序整体滑动,且考虑k(m)本身的信号长度(m的大小),规定上述f(l)中第一个所述新移入进k(m)对应的运算窗口的f(l)中的第l个信号为f(l),且l=m。
针对当前新移入进k(m)对应的运算窗口的f(l)中的第l个信号,m≤l≤N-1,计算f(l)加k(m)得到的第三和值。
S502,将第三和值与f(l)中包含在当前运算窗口的上一个运算窗口内的各信号值加k(m)得到的第四和值进行比较;并根据比较结果确定f(l)中的第l个信号对应的膨胀运算结果;
现有对一维数字信号中的第l个信号进行膨胀运算过程,是针对当前运算窗口内的所有f(l)分别计算各f(l)加与其序列位置对应的k(m)的和值,然后将和值中的最小值确定为第l个f(l)信号对应的膨胀运算结果。
本实施例中,由于预先将k(m)设为一个固定值,因此对于f(l)中每个信号点在移动的k(m)的运算窗口内其加k(m)得到的和值总是相同的。由此,在计算上述第l个信号的膨胀运算结果时,可以仅通过计算得到上述第三和值,然后将该第三和值与当前运算窗口的上一个运算窗口内的各信号值加k(m)得到的第四和值进行比较(具体比较时应先将移出当前运算窗口的信号点对应的第四和值移出,然后再进行比较),确定其对应的膨胀运算结果。由于在上述比较过程中,不必再对当前运算窗口内的除第l个信号的其他各f(l)对应的第四和值进行重复计算,因此缩短了针对当前运算窗口的处理时间。这里说明,上述第三和值和第四和值为相对概念,如处于当前运算窗口的第三和值,当运算窗口继续向后续信号点移动后就作为后续运算窗口内的第四和值。对于f(l)中l<m的信号点,与其对应的始终视为第四和值。
本发明实施例提供的数字信号的滤波方法,通过对待处理的一维数字信号f(n),n=0,1,2,...,N-1,应用结构元k(m),m=0,1,2,...,N-1,依次进行开运算和闭运算,或者依次进行闭运算和开运算,并将最终运算结果确定为所述f(n)对应的滤波信号;其中,k(m)为固定值;在进行所述开运算和/或闭运算中包括的膨胀运算时:将待进行膨胀运算的信号作为第三中间信号f(l);针对新移入进k(m)对应的运算窗口的f(l)中的第l个信号计算f(l)加k(m)得到的第三和值;将第三和值与f(l)中包含在当前运算窗口的上一个运算窗口内的各信号值加k(m)得到的第四和值进行比较;并根据比较结果确定f(l)中的第l个信号对应的膨胀运算结果,从而实现了对待滤波信号f(n)的基线滤波,同时也有效提高了滤波效率。
实施例六
图6为本发明提供的数字信号的滤波方法另一个实施例的方法流程图,是如图5所示方法的一种具体实现方式。如图6所示,该数字信号的滤波方法与图5所示实施例的区别在于对上述步骤502做了进一步细化。具体细化后的步骤包括:
S601,判断当前存储的最大值A3是否为空,或者不为空时其在f(l)中对应的信号点x是否已移出当前所述运算窗口;所述A3为f(l)中包含在当前运算窗口的上一个运算窗口内的各信号点对应的最大第四和值;
具体地,本实施例中,为了减少各个k(m)运算窗口的运算量,在每个运算窗口计算完成各f(l)加k(m)得到的相应和值后,将这些和值中的最大值作为上述最大值A3记录下来,并将该最大值A3与下一个运算窗口内的第t个信号对应的第三和值进行比较。相对于当前运算窗口内的各f(l),上述最大值A3为除第l个信号以外的其他各f(l)对应的第四和值中的最大值;因此,只需将当前运算窗口内的第三和值与该最大值A3进行比较,就可以确定当前运算窗口的最大值,进而确定当前运算窗口中第l个信号f(l)对应的膨胀运算结果。需要说明,上述利用上一个运算窗口内的最大值A3确定当前运算窗口中第l个信号f(l)对应的膨胀运算结果的方法不适用于当前运算窗口为首个运算窗口(即最大值A3不存在),以及当前运算窗口非首个运算窗口时,其上一个运算窗口内对应的最大第四和值(当前记录的最大值A3)对应的信号点x已移除当前运算窗口的情形。因此,在采用该方法之前需要判断当前运算窗口是否符合这两种特殊情形。
若当前存储的最大值A3为空,或者不为空时其在f(l)中对应的信号点x已移出当前所述运算窗口;则执行步骤602~604:
S602,针对当前k(m)对应的运算窗口内除第l个信号外的所有f(l)分别计算其各自加k(m)得到的第四和值;
由于不存在最大值A3,或是该最大值A3在f(l)中对应的信号点x已移出当前运算窗口,因此需要对当前运算窗口按现有方法计算第l个信号对应的膨胀运算结果;即还需要针对运算窗口内除第l个信号外的所有f(l)分别计算其各自加k(m)得到的第四和值。这里说明,针对最大值A3在f(l)中对应信号点移出当前运算窗口的情形,由于针对除第l个信号外的所有f(l)计算其各自加k(m)得到的和值已在上一运算窗口内执行过,因此在当前运算窗口内重新执行计算后仍将这些和值视为第四和值。
S603,将获得的所有第四和值和第三和值中的最大值确定为f(l)在第l个信号点对应的膨胀运算结果;
S604,将获得的所有第四和值和第三和值中的最大值确定为新的最大值A3,并记录其相对于在f(l)中对应的信号点x;
具体地,将当前运算窗口内获得的上述所有第四和值和第三和值进行比较,并将其中的最大值确定为f(l)在第l个信号点对应的膨胀运算结果后,同时将该最大值作为新的最大值A3,并记录其相对于在f(l)中对应的信号点x。
或者,
若当前存储的最大值A3不为空,且其在f(l)中对应的信号点x未移出当前运算窗口;则执行步骤605~606:
S605,将第三和值与当前存储的最大值A3进行比较,并将比较后的较大值确定为f(l)在第l个信号点对应的膨胀运算结果;
S606,将比较后的较大值确定为新的最大值A3,并记录其相对于在f(l)中对应的信号点x;
具体地,将上述第三和值与当前存储的最大值A3进行比较,并将比较后的较大值确定为f(l)在第l个信号点对应的膨胀运算结果,同时将该最大值作为新的最大值A3,并记录其相对于在f(l)中对应的信号点x。
本发明实施例提供的数字信号的滤波方法,在图5所示实施例的基础上,采用将上一运算窗口对应的最大第四和值记录为最大值A3,并将其与当前运算窗口内计算得到的第三和值进行比较,来确定当前运算窗口中第l个信号点对应的膨胀运算结果,减小了运算量,缩短了运算时间。
实施例七
图7为本发明提供的数字信号的滤波方法又一个实施例的方法流程图,是如图5所示方法的一种具体实现方式。如图7所示,该数字信号的滤波方法与图5所示实施例的区别在于对上述步骤502做了进一步细化,即也引入了如图3b所示的二叉树堆,该二叉树堆中各节点值仅用于举例;该二叉树堆的各节点值和其各自对应的节点位置编号可通过如图3c所示的一维数组进行维护。具体细化后的步骤包括:
S701,判断当前第三二叉树堆中的各节点是否均为空;所述第三二叉树堆中的节点个数等于k(m)的长度,且第三二叉树堆中的各节点值为f(l)中包含在当前运算窗口的上一个运算窗口内的各信号点对应的第四和且各第四和值按第五固定顺序存放到各节点中;所述第五固定顺序为各节点的节点值大于该节点的子节点的节点值;
具体地,本实施例中,为了减少各个k(m)运算窗口的运算量,在每个运算窗口计算完成各f(l)加k(m)得到的相应和值后,将这些和值作为节点值按第五固定顺序存储在上述第三二叉树的各节点中,并将这些节点值与下一个运算窗口内的第l个信号对应的第三和值进行比较。其中,上述第五固定顺序为各节点的节点值大于该节点的子节点的节点值。由此获知,该第三二叉树中根节点值为所有节点值中的最大值。因此,在具体运算中只需将当前运算窗口内的第三和值插入到第三二叉树中,然后判断插入后的第三二叉树中的具体根节点值,就可以确定当前运算窗口的最大值,进而确定当前运算窗口中第l个信号f(l)对应的膨胀运算结果。需要说明,上述利用第三二叉树中的根节点值确定当前运算窗口中第l个信号f(l)对应的膨胀运算结果的方法不适用于当前运算窗口为首个运算窗口(即当前第三二叉树中各节点值不存在)的情形。因此,在采用该方法之前需要判断当前第三二叉树中各节点值是否均为空的特殊情形。
若当前所述第三二叉树堆中的各节点均为空,则执行步骤702~704:
S702,针对当前k(m)对应的运算窗口内除第l个信号外的所有f(l)分别计算其各自加k(m)得到的第四和值;
由于当前第三二叉树中各节点值不存在,因此需要对当前运算窗口按现有方法计算第l个信号对应的膨胀运算结果;即还需要针对运算窗口内除第l个信号外的所有f(l)分别计算其各自加k(m)得到的第四和值。
S703,将获得的各第四和值和第三和值作为节点值按第五固定顺序存放在第三二叉树堆中的各节点内;
S704,将第三二叉树堆中根节点的节点值确定为f(l)在第l个信号点对应的膨胀运算结果,并记录各节点值在f(l)中对应的信号点x;
将获得的上述各第四和值和第三和值作为节点值按第五固定顺序存放在第三二叉树堆中的各节点内。由于第五固定顺序规定各个节点值之间的节点位置关系,即根节点值在所有节点值中最大,因此可将上述第三二叉树堆中根节点的节点值确定为f(l)在第l个信号点对应的膨胀运算结果,同时记录当前各节点值在f(l)中对应的信号点x。
或者,
若当前第三二叉树堆中的各节点均不为空;则执行步骤705~706:
S705,将f(l)中针对当前运算窗口的上一个运算窗口的移出点对应的节点值移出第三二叉树堆,并将第三和值按第五固定顺序插入到第三二叉树堆的一个节点中;
706,将第三二叉树堆中根节点内的节点值确定为f(l)在第l个信号点对应的膨胀运算结果,并记录当前插入的节点值相对于在f(l)中对应的信号点x;
具体地,若当前第三二叉树堆中的各节点均不为空,则先将f(l)中针对当前运算窗口的上一个运算窗口的移出点对应的节点值移出第三二叉树堆,然后将第三和值按第五固定顺序插入到第三二叉树堆的一个节点中;然后根据根节点值确定f(l)在第l个信号点对应的膨胀运算结果。在实际应用场景中,对于上述新插入节点值为第三二叉树堆中根节点值的情形,也可以在插入后将其他节点的节点值清空,从而在依据第五固定顺序维护第三二叉树堆时减少运算时间,这一过程中需保证根节点值不为空。
本发明实施例提供的数字信号的滤波方法,在图5所示实施例的基础上,采用将上一运算窗口对应的所有第四和值作为节点值按第一固定顺序存储在第三二叉树堆中,并将当前运算窗口内计算得到的第三和值按所述第五固定顺序插入第三二叉树堆中,根据插入后确定的根节点值来确定当前运算窗口中第l个信号点对应的膨胀运算结果。在该实施例所示方法中,针对各f(l)信号点仅计算一次其对应的第三和值或第四和值。这样在每次计算新的信号点对应的第三和值时,只需要将新的第三和值插入到第三二叉树堆中,而将老的节点值从第一二叉树堆中移出;因而时间的复杂度为log(M),长度为N的波形滤波的时间负责度为O(N*log(M)),顾整体上减小了运算量,缩短了运算时间。
实施例八
图8为本发明提供的数字信号的滤波方法又一个实施例的方法流程图,是如图5所示方法的一种具体实现方式。如图8所示,该数字信号的滤波方法与图5所示实施例的区别在于对上述步骤502做了进一步细化,即引入了双向队列的概念。具体细化后的步骤包括:
S801,判断当前第三双向队列中的各节点是否为空;所述第三双向队列中的节点个数等于k(m)的长度,且第三双向队列中的各节点值为f(l)中包含在当前运算窗口的上一个运算窗口内的各信号点对应的第四和值且各所述第四和值按第六固定顺序存放到各节点中;所述第六固定顺序为各所述节点值按其相对于所述f(l)中的信号点顺序排列,其中,l最小的排在所述第三双向队列的队首;
具体地,本实施例中,为了减少各个k(m)运算窗口的运算量,在每个运算窗口计算完成各f(t)加k(m)得到的相应和值后,将这些和值作为节点值按第六固定顺序存储在上述第三双向队列的各节点中,并将这些节点值与下一个运算窗口内的第l个信号对应的第三和值进行比较。其中,上述第六固定顺序为各所述节点值按其相对于所述f(l)中的信号点顺序排列,其中,l最小的排在所述第三双向队列的队首。因此,在具体运算中只需将当前运算窗口内的第三和值插入到第三双向队列中,然后判断插入后的当前第三双向队列中的最大值,进而确定当前运算窗口中第l个信号f(l)对应的膨胀运算结果。需要说明,上述利用第三双向队列中的最大节点值确定当前运算窗口中第l个信号f(l)对应的膨胀运算结果的方法不适用于当前运算窗口为首个运算窗口(即当前第三双向队列中各节点值不存在)的情形。因此,在采用该方法之前需要判断当前第三双向队列中各节点值是否均为空的特殊情形。
若当前第三双向队列中的各节点均为空,则执行步骤802~803:
S802,针对当前k(m)对应的运算窗口内除第l个信号外的所有f(l)分别计算其各自加k(m)得到的第四和值;
由于当前第三双向队列中各节点值不存在,因此需要对当前运算窗口按现有方法计算第l个信号对应的膨胀运算结果;即还需要针对运算窗口内除第l个信号外的所有f(l)分别计算其各自加k(m)得到的第四和值。
S803,将获得的各第四和值和第三和值作为节点值按第六固定顺序存放在第三双向队列中的各节点内;
或者,
若当前第三双向队列中的各节点均不为空,则执行步骤804:
S804,将第三双向队列中除队首位置节点的各节点值依次向队首位置移动一个节点,并将第三和值作为插入节点值压入第三双向队列的队尾节点;
具体地,若当前第三双向队列中的各节点均不为空,则先将队列中的所有节点值除队首节点值外均向队首节点方向整体移动一个节点,队首节点移出队列。然后将第三和值作为插入节点值按第六固定顺序压入所述第三双向队列的队尾节点。在实际应用场景中,对于上述新插入队尾节点的插入节点值,如果其前面的节点值不大于该插入节点值,那么可将其前面节点值清空,依此继续向前一节点值比较,直到无前一节点或前一节点大于当前被插入节点值结束时比较清空操作。
在步骤802或804之后,继续执行步骤805
S805,将当前第三双向队列中的最大节点值确定为f(l)在第l个信号点对应的膨胀运算结果。
举例说明,设k(m)=1,m=0,1,2;f(l)={3,2,1,6,8,7,13,5,11,10},l=0,1,2,...,9第三双向队列Q长度为的长度为3,膨胀运算后的数据为B,则计算f(l)中第l点的膨胀运算结果时,其对应的Q以及膨胀运算结果如下:
l=2:Q为{4,3,2},B为{4};
l=3:Q为{3,2,7},B为{4,7}
l=4:Q为{2,7,9},B为{4,7,9}
l=5:Q为{7,9,8},B为{4,7,9,9}
l=6:Q为{9,8,14},B为{4,7,9,9,14}
l=7:Q为{8,14,6},B为{4,7,9,9,14,14}
l=8:Q为{14,6,12},B为{4,7,9,9,14,14,14}
l=9:Q为{6,12,11},B为{4,7,9,9,14,14,14,12}
本发明实施例提供的数字信号的滤波方法,在图5所示实施例的基础上,采用将上一运算窗口对应的所有第四和值作为节点值按第六固定顺序存储在第三双向队列中,并将当前运算窗口内计算得到的第三和值按所述第六固定顺序插入第三双向队列中,根据插入后确定的各节点值中的最大值来确定当前运算窗口中第l个信号点对应的膨胀运算结果。在该实施例所示方法中,针对各f(l)信号点仅计算一次其对应的第三和值或第四和值。这样在每次计算新的信号点对应的第三和值时,只需要将队首节点值移出,将第三和值压入队尾节点;因此,长度为N的波形滤波的时间复杂度为O(N),顾整体上减小了运算量,缩短了运算时间。
进一步的,在如图1、图2、图3a和图4所示实施例中还可以分别采用如图5、图6、图7和图8所示的方法中的一种来完成对信号f(n)中涉及膨胀运算的相应信号处理步骤。同时,相应的参数名称也发生变更,例如将涉及膨胀运算的待处理信号均记为第二中间信号f(s),s=0,1,2,...,N-1;第三和值更名为第一和值,第四和值更名为第二和值;在针对新移入进所述k(m)对应的运算窗口的所述f(s)中的第s个信号,m≤s≤N-1,计算其对应的膨胀运算结果的过程中:
采用如图6所示的方法来完成对信号f(n)中涉及膨胀运算的相应信号处理步骤时,最大值A3更名为最大值A2;信号点x更名为信号点q;
采用如图7所示的方法来完成对信号f(n)中涉及膨胀运算的相应信号处理步骤时,第三二叉树堆更名为第二二叉树堆;第五固定顺序更名为第三固定顺序;信号点x更名为信号点q;
采用如图8所示的方法来完成对信号f(n)中涉及膨胀运算的相应信号处理步骤时,第三双向队列更名为第二双向队列;第六固定顺序更名为第四固定顺序。
进一步的,在如图5、图6、图7和图8所示实施例中还可以分别采用如1、图2、图3a和图4所示的方法中的一种来完成对信号f(n)中涉及腐蚀运算的相应信号处理步骤。同时,相应的参数名称也发生变更,例如将涉及腐蚀运算的待处理信号均记为第四中间信号f(j),j=0,1,2,...,N-1;第一差值更名为第三差值,第二差值更名为第四差值;在针对新移入进所述k(m)对应的运算窗口的所述f(j)中的第j个信号,m≤j≤N-1,计算其对应的腐蚀运算结果的过程中:
采用如图2所示的方法来完成对信号f(n)中涉及腐蚀运算的相应信号处理步骤时,最小值A1更名为最小值A4;信号点p更名为信号点y;
采用如图3a所示的方法来完成对信号f(n)中涉及腐蚀运算的相应信号处理步骤时,第一二叉树堆更名为第四二叉树堆;第一固定顺序更名为第七固定顺序;信号点p更名为信号点y;
采用如图4所示的方法来完成对信号f(n)中涉及腐蚀运算的相应信号处理步骤时,第一双向队列更名为第四双向队列;第二固定顺序更名为第八固定顺序。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
实施例九
图9a为本发明提供的数字信号的滤波装置一个实施例的结构示意图,该结构示意图所示装置可以执行如图1所示实施例的方法步骤。如图9a所示,该数字信号的滤波装置具体包括:处理模块91和确定模块92;其中:
处理模块91,用于在所述滤波装置对待处理的一维数字信号f(n),n=0,1,2,...,N-1,应用结构元k(m),m=0,1,2,...,N-1,依次进行开运算和闭运算,或者依次进行闭运算和开运算;
确定模块92,用于将处理模块91最终运算结果确定为f(n)对应的滤波信号;其中,所述k(m)为固定值,所述N为大于0的整数;
所述处理模块91具体包括第一处理单元911和第二处理单元912;
所述第一处理单元911,用于在处理模块91进行开运算和/或闭运算包括的腐蚀运算中,将待进行腐蚀运算的信号作为第一中间信号f(t),t=0,1,2,...,N-1,所述N为大于0的整数;针对新移入进所述k(m)对应的运算窗口的所述f(t)中的第t个信号,m≤t≤N-1,计算所述f(t)减所述k(m)得到的第一差值;
所述第二处理单元922,用于将所述第一差值与所述f(t)中包含在当前运算窗口的上一个运算窗口内的各信号值减所述k(m)得到的第二差值进行比较;
所述确定模块,用于根据所述第二处理单元最终的比较结果确定所述f(t)中的第t个信号对应的腐蚀运算结果。
进一步的,在图9a所示实施例的基础上,如图9b所示的数字信号的滤波装置中,所述处理模块91还包括第三处理单元913和第四处理单元914;其中:
第三处理单元913,用于在所述处理模块91进行所述开运算和/或闭运算包括的膨胀运算中,将待进行膨胀运算的信号作为第二中间信号f(s),s=0,1,2,...,N-1,所述N为大于0的整数;针对新移入进k(m)对应的运算窗口的f(s)中的第s个信号,m≤s≤N-1,计算f(s)加k(m)得到的第一和值;
第四处理单元914,用于将第一和值与f(s)中包含在当前运算窗口的上一个运算窗口内的各信号值加k(m)得到的第二和值进行比较;
确定模块92,用于根据第四处理单元最终的比较结果确定f(s)中的第s个信号对应的膨胀运算结果。
前述所有方法实施例的方法步骤均可通过图9b所示的数字信号的滤波装置执行完成,其中部分参数名称需要适应性更名,但方法原理不变,在此对其具体方法原理不作赘述。
本发明实施例提供的数字信号的滤波装置,通过对待处理的一维数字信号f(n),n=0,1,2,...,N-1,应用结构元k(m),m=0,1,2,...,N-1,依次进行开运算和闭运算,或者依次进行闭运算和开运算,并将最终运算结果确定为所述f(n)对应的滤波信号;其中,k(m)为固定值;在进行所述开运算和/或闭运算中包括的腐蚀运算时:将待进行腐蚀运算的信号作为第一中间信号f(t);针对新移入进k(m)对应的运算窗口的f(t)中的第t个信号计算f(t)减k(m)得到的第一差值;将第一差值与f(t)中包含在当前运算窗口的上一个运算窗口内的各信号值减k(m)得到的第二差值进行比较;并根据比较结果确定f(t)中的第t个信号对应的腐蚀运算结果,从而实现了对待滤波信号f(n)的基线滤波,同时也有效提高了滤波效率。
实施例十
图10a为本发明提供的数字信号的滤波装置另一个实施例的结构示意图,该结构示意图所示装置可以执行如图5所示实施例的方法步骤。如图10a所示,该数字信号的滤波装置具体包括:处理模块101和确定模块102;其中:
处理模块101,用于对待处理的一维数字信号f(n),n=0,1,2,...,N-1,应用结构元k(m),m=0,1,2,...,N-1,依次进行开运算和闭运算,或者依次进行闭运算和开运算;
确定模块102,用于将处理模块101最终运算结果确定为f(n)对应的滤波信号;其中,所述k(m)为固定值,所述N为大于0的整数;
所述处理模块101具体包括第五处理单元1011和第六处理单元1012;其中:
第五处理单元1011,用于在处理模块101进行开运算和/或闭运算包括的膨胀运算中,将待进行膨胀运算的信号作为第三中间信号f(l),l=0,1,2,...,N-1,所述N为大于0的整数;针对新移入进所述k(m)对应的运算窗口的所述f(l)中的第l个信号,m≤l≤N-1,计算f(l)加k(m)得到的第三和值;
第六处理单元1012,用于将第三和值与f(l)中包含在当前运算窗口的上一个运算窗口内的各信号值加k(m)得到的第四和值进行比较;
确定模块102,用于根据第六单元1012最终的比较结果确定f(l)中的第l个信号对应的膨胀运算结果。
进一步的,在图10a所示实施例的基础上,如图10b所示的数字信号的滤波装置中,所述处理模块101还包括第七处理单元1013和第八处理单元1014;其中:
第七处理单元1013,用于在处理模块101进行所述开运算和/或闭运算包括的腐蚀运算中,将待进行腐蚀运算的信号作为第四中间信号f(j),j=0,1,2,...,N-1,所述N为大于0的整数;针对新移入进所述k(m)对应的运算窗口的f(j)中的第j个信号,m≤j≤N-1,计算f(j)减k(m)得到的第三差值;
第八处理单元1014,用于将第三差值与f(j)中包含在当前运算窗口的上一个运算窗口内的各信号值减k(m)得到的第四差值进行比较;
确定模块102,用于根据第八单元1014最终的比较结果确定f(j)中的第j个信号对应的腐蚀运算结果。
前述所有方法实施例的方法步骤均可通过图10b所示的数字信号的滤波装置执行完成,其中部分参数名称需要适应性更名,但方法原理不变,在此对其具体方法原理不作赘述。
本发明实施例提供的数字信号的滤波装置,通过对待处理的一维数字信号f(n),n=0,1,2,...,N-1,应用结构元k(m),m=0,1,2,...,N-1,依次进行开运算和闭运算,或者依次进行闭运算和开运算,并将最终运算结果确定为所述f(n)对应的滤波信号;其中,k(m)为固定值;在进行所述开运算和/或闭运算中包括的膨胀运算时:将待进行膨胀运算的信号作为第三中间信号f(l);针对新移入进k(m)对应的运算窗口的f(l)中的第l个信号计算f(l)加k(m)得到的第三和值;将第三和值与f(l)中包含在当前运算窗口的上一个运算窗口内的各信号值加k(m)得到的第四和值进行比较;并根据比较结果确定f(l)中的第l个信号对应的膨胀运算结果,从而实现了对待滤波信号f(n)的基线滤波,同时也有效提高了滤波效率。
进一步的,本发明实施例提供的数字信号的滤波方法中还具体通过提取当前运算窗口的上一个运算窗口中的最大/小值、构建二叉树堆以及构建双向队列这三种方式具体给出了执行膨胀运算/腐蚀运算的具体方法,缩短了滤波处理时间,提高了滤波效率。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (20)
1.一种数字信号的滤波方法,其特征在于,包括:
对待处理的一维数字信号f(n),n=0,1,2,...,N-1,应用结构元k(m),m=0,1,2,...,N-1,依次进行开运算和闭运算,或者依次进行闭运算和开运算,并将最终运算结果确定为所述f(n)对应的滤波信号;其中,所述k(m)为固定值,所述N为大于0的整数;所述开运算和/或闭运算中包括的腐蚀运算的具体步骤包括:
将待进行腐蚀运算的信号作为第一中间信号f(t),t=0,1,2,...,N-1,所述N为大于0的整数;针对新移入进所述k(m)对应的运算窗口的所述f(t)中的第t个信号,m≤t≤N-1,计算所述f(t)减所述k(m)得到的第一差值;
将所述第一差值与所述f(t)中包含在当前运算窗口的上一个运算窗口内的各信号值减所述k(m)得到的第二差值进行比较;并根据比较结果确定所述f(t)中的第t个信号对应的腐蚀运算结果;所述比较过程中,禁止对当前运算窗口内的除第t个信号的其他各f(t)对应的第二差值进行重复计算。
2.根据权利要求1所述的方法,其特征在于,所述将所述第一差值与所述f(t)中包含在当前运算窗口的上一个运算窗口内的各信号值减所述k(m)得到的第二差值进行比较;并根据比较结果确定所述f(t)中的第t个信号对应的腐蚀运算结果,包括:
判断当前存储的最小值A1是否为空,或者不为空时其在所述f(t)中对应的信号点p是否已移出当前所述运算窗口;所述A1为所述f(t)中包含在当前所述运算窗口的上一个运算窗口内的各信号点对应的最小所述第二差值;
若所述当前存储的最小值A1为空,或者不为空时其在所述f(t)中对应的信号点p已移出当前所述运算窗口;则:
针对当前所述k(m)对应的运算窗口内除所述第t个信号外的所有f(t)分别计算其各自减所述k(m)得到的所述第二差值;
将获得的所有所述第二差值和所述第一差值中的最小值确定为所述f(t)在所述第t个信号点对应的腐蚀运算结果;
将所述获得的所有所述第二差值和所述第一差值中的最小值确定为新的所述最小值A1,并记录其相对于在所述f(t)中对应的信号点p;
或者,
若所述当前存储的最小值A1不为空,且其在所述f(t)中对应的信号点p未移出当前所述运算窗口;则:
将所述第一差值与当前存储的所述最小值A1进行比较,并将比较后的较小值确定为所述f(t)在所述第t个信号点对应的腐蚀运算结果;
将所述比较后的较小值确定为新的所述最小值A1,并记录其相对于在所述f(t)中对应的信号点p。
3.根据权利要求1所述的方法,其特征在于,所述将所述第一差值与所述f(t)中包含在当前运算窗口的上一个运算窗口内的各信号值减所述k(m)得到的第二差值进行比较;并根据比较结果确定所述f(t)中的第t个信号对应的腐蚀运算结果,包括:
判断当前第一二叉树堆中的各节点是否均为空;所述第一二叉树堆中的节点个数等于所述k(m)的长度,且所述第一二叉树堆中的各节点值为所述f(t)中包含在当前所述运算窗口的上一个运算窗口内的各信号点对应的所述第二差值且各所述第二差值按第一固定顺序存放到各节点中;所述第一固定顺序为各节点的节点值小于该节点的子节点的节点值;
若当前所述第一二叉树堆中的各节点均为空,则:
针对当前所述k(m)对应的运算窗口内除所述第t个信号外的所有f(t)分别计算其各自减所述k(m)得到的所述第二差值;
将获得的各所述第二差值和所述第一差值作为节点值按所述第一固定顺序存放在所述第一二叉树堆中的各节点内;
将所述第一二叉树堆中根节点的节点值确定为所述f(t)在所述第t个信号点对应的腐蚀运算结果,并记录各节点值在所述f(t)中对应的信号点p;
或者,
若当前所述第一二叉树堆中的各节点均不为空;则:
将所述f(t)中针对当前运算窗口的上一个运算窗口的移出点对应的节点值移出所述第一二叉树堆,并将所述第一差值按所述第一固定顺序插入到所述第一二叉树堆的一个节点中;
将所述第一二叉树堆中根节点内的节点值确定为所述f(t)在所述第t个信号点对应的腐蚀运算结果,并记录当前插入的节点值相对于在 所述f(t)中对应的信号点p。
4.根据权利要求1所述的方法,其特征在于,所述将所述第一差值与所述f(t)中包含在当前运算窗口的上一个运算窗口内的各信号值减所述k(m)得到的第二差值进行比较;并根据比较结果确定所述f(t)中的第t个信号对应的腐蚀运算结果,包括:
判断当前第一双向队列中的各节点是否均为空;所述第一双向队列中的节点个数等于所述k(m)的长度,且所述第一双向队列中的各节点值为所述f(t)中包含在当前所述运算窗口的上一个运算窗口内的各信号点对应的所述第二差值且各所述第二差值按第二固定顺序存放到各节点中;所述第二固定顺序为各所述节点值按其相对于所述f(t)中的信号点顺序排列,其中,t最小的排在所述第一双向队列的队首;
若当前所述第一双向队列中的各节点均为空,则:
针对当前所述k(m)对应的运算窗口内除所述第t个信号外的所有f(t)分别计算其各自减所述k(m)得到的所述第二差值;
将获得的各所述第二差值和所述第一差值作为节点值按所述第二固定顺序存放在所述第一双向队列中的各节点内;
或者,
若当前所述第一双向队列中的各节点均不为空,则:
将所述第一双向队列中除队首位置节点的各节点值依次向队首位置移动一个节点,并将所述第一差值作为插入节点值压入所述第一双向队列的队尾节点;
将当前所述第一双向队列中的最小节点值确定为所述f(t)在所述第t个信号点对应的腐蚀运算结果。
5.根据权利要求1-4任一项所述的方法,其特征在于,还包括:所述开运算和/或闭运算中包括的膨胀运算的具体步骤包括:
将待进行膨胀运算的信号作为第二中间信号f(s),s=0,1,2,...,N-1,所述N为大于0的整数;针对新移入进所述k(m)对应的运算窗口的所述f(s)中的第s个信号,m≤s≤N-1,计算所述f(s)加所述k(m)得到的第一和值;
将所述第一和值与所述f(s)中包含在当前运算窗口的上一个运算窗口内的各信号值加所述k(m)得到的第二和值进行比较;并根据比较结果确定所述f(s)中的第s个信号对应的膨胀运算结果。
6.根据权利要求5所述的方法,其特征在于,所述将所述第一和值与所述f(s)中包含在当前运算窗口的上一个运算窗口内的各信号值加所述k(m)得到的第二和值进行比较;并根据比较结果确定所述f(s)中的第s个信号对应的膨胀运算结果,包括:
判断当前存储的最大值A2是否为空,或者不为空时其在所述f(s)中对应的信号点q是否已移出当前所述运算窗口;所述A2为所述f(s)中包含在当前所述运算窗口的上一个运算窗口内的各信号点对应的最大所述第二和值;
若所述当前存储的最大值A2为空,或者不为空时其在所述f(s)中对应的信号点q已移出当前所述运算窗口;则:
针对当前所述k(m)对应的运算窗口内除所述第s个信号外的所有f(s)分别计算其各自加所述k(m)得到的所述第二和值;
将获得的所有所述第二和值和所述第一和值中的最大值确定为所述f(s)在所述第s个信号点对应的膨胀运算结果;
将所述获得的所有所述第二和值和所述第一和值中的最大值确定为新的所述最大值A2,并记录其相对于在所述f(s)中对应的信号点q;
或者,
若所述当前存储的最大值A2不为空,且其在所述f(s)中对应的信号点q未移出当前所述运算窗口;则:
将所述第一和值与当前存储的所述最大值A2进行比较,并将比较后的较大值确定为所述f(s)在所述第s个信号点对应的膨胀运算结果;
将所述比较后的较大值确定为新的所述最大值A2,并记录其相对于在所述f(s)中对应的信号点q。
7.根据权利要求5所述的方法,其特征在于,所述将所述第一和值与所述f(s)中包含在当前运算窗口的上一个运算窗口内的各信号值加所述k(m)得到的第二和值进行比较;并根据比较结果确定所述f(s)中的第s个信号对应的膨胀运算结果,包括:
判断当前第二二叉树堆中的各节点是否均为空;所述第二二叉树堆中的节点个数等于所述k(m)的长度,且所述第二二叉树堆中的各节点值为所述f(s)中包含在当前所述运算窗口的上一个运算窗口内的各信号点 对应的所述第二和值且各所述第二和值按第三固定顺序存放到各节点中;所述第三固定顺序为各节点的节点值大于该节点的子节点的节点值;
若当前所述第二二叉树堆中的各节点均为空,则:
针对当前所述k(m)对应的运算窗口内除所述第s个信号外的所有f(s)分别计算其各自加所述k(m)得到的所述第二和值;
将获得的各所述第二和值和所述第一和值作为节点值按第三固定顺序存放在所述第二二叉树堆中的各节点内;
将所述第二二叉树堆中根节点的节点值确定为所述f(s)在所述第s个信号点对应的腐蚀运算结果,并记录各节点值在所述f(s)中对应的信号点q;
或者,
若当前所述第二二叉树堆中的各节点均不为空;则:
将所述f(s)中针对当前运算窗口的上一个运算窗口的移出点对应的节点值移出所述第二二叉树堆,并将所述第一和值按所述第三固定顺序插入到所述第二二叉树堆的一个节点中;
将所述第二二叉树堆中根节点内的节点值确定为所述f(s)在所述第s个信号点对应的膨胀运算结果,并记录当前插入的节点值相对于在所述f(s)中对应的信号点q。
8.根据权利要求5所述的方法,其特征在于,所述将所述第一和值与所述f(s)中包含在当前运算窗口的上一个运算窗口内的各信号值加所述k(m)得到的第二和值进行比较;并根据比较结果确定所述f(s)中的第s个信号对应的膨胀运算结果,包括:
判断当前第二双向队列中的各节点是否均为空;所述第二双向队列中的节点个数等于所述k(m)的长度,且所述第二双向队列中的各节点值为所述f(s)中包含在当前所述运算窗口的上一个运算窗口内的各信号点对应的所述第二和值且各所述第二和值按第四固定顺序存放到各节点中;所述第四固定顺序为各所述节点值按其相对于所述f(s)中的信号点顺序排列,其中,s最小的排在所述第二双向队列的队首;
若当前所述第二双向队列中的各节点均为空,则:
针对当前所述k(m)对应的运算窗口内除所述第s个信号外的所有f(s)分别计算其各自加所述k(m)得到的所述第二和值;
将获得的各所述第二和值和所述第一和值作为节点值按所述第四固定顺序存放在所述第二双向队列中的各节点内;
或者,
若当前所述第二双向队列中的各节点均不为空,则:
将所述第二双向队列中除队首位置节点的各节点值依次向队首位置移动一个节点,并将所述第一和值作为插入节点值压入所述第二双向队列的队尾节点;
将当前所述第二双向队列中的最大节点值确定为所述f(s)在所述第s个信号点对应的膨胀运算结果。
9.一种数字信号的滤波方法,其特征在于,包括:
对待处理的一维数字信号f(n),n=0,1,2,...,N-1,应用结构元k(m),m=0,1,2,...,N-1,依次进行开运算和闭运算,或者依次进行闭运算和开运算,并将最终运算结果确定为所述f(n)对应的滤波信号;其中,所述k(m)为固定值,所述N为大于0的整数;所述开运算和/或闭运算中包括的膨胀运算的具体步骤包括:
将待进行膨胀运算的信号作为第三中间信号f(l),l=0,1,2,...,N-1,所述N为大于0的整数;针对新移入进所述k(m)对应的运算窗口的所述f(l)中的第l个信号,m≤l≤N-1,计算所述f(l)加所述k(m)得到的第三和值;
将所述第三和值与所述f(l)中包含在当前运算窗口的上一个运算窗口内的各信号值加所述k(m)得到的第四和值进行比较;并根据比较结果确定所述f(l)中的第l个信号对应的膨胀运算结果;所述比较过程中,禁止对当前运算窗口内的除第l个信号的其他各f(l)对应的第四和值进行重复计算。
10.根据权利要求9所述的方法,其特征在于,所述将所述第三和值与所述f(l)中包含在当前运算窗口的上一个运算窗口内的各信号值加所述k(m)得到的第四和值进行比较;并根据比较结果确定所述f(l)中的第l个信号对应的膨胀运算结果,包括:
判断当前存储的最大值A3是否为空,或者不为空时其在所述f(l)中对应的信号点x是否已移出当前所述运算窗口;所述A3为所述f(l)中包含在当前所述运算窗口的上一个运算窗口内的各信号点对应的最大所述第四和值;
若所述当前存储的最大值A3为空,或者不为空时其在所述f(l)中对应的信号点x已移出当前所述运算窗口;则:
针对当前所述k(m)对应的运算窗口内除所述第l个信号外的所有f(l)分别计算其各自加所述k(m)得到的所述第四和值;
将获得的所有所述第四和值和所述第三和值中的最大值确定为所述f(l)在所述第l个信号点对应的膨胀运算结果;
将所述获得的所有所述第四和值和所述第三和值中的最大值确定为新的所述最大值A3,并记录其相对于在所述f(l)中对应的信号点x;
或者,
若所述当前存储的最大值A3不为空,且其在所述f(l)中对应的信号点x未移出当前所述运算窗口;则:
将所述第三和值与当前存储的所述最大值A3进行比较,并将比较后的较大值确定为所述f(l)在所述第l个信号点对应的膨胀运算结果;
将所述比较后的较大值确定为新的所述最大值A3,并记录其相对于在所述f(l)中对应的信号点x。
11.根据权利要求9所述的方法,其特征在于,所述将所述第三和值与所述f(l)中包含在当前运算窗口的上一个运算窗口内的各信号值加所述k(m)得到的第四和值进行比较;并根据比较结果确定所述f(l)中的第l个信号对应的膨胀运算结果,包括:
判断当前第三二叉树堆中的各节点是否均为空;所述第三二叉树堆中的节点个数等于所述k(m)的长度,且所述第三二叉树堆中的各节点值为所述f(l)中包含在当前所述运算窗口的上一个运算窗口内的各信号点对应的所述第四和值且各所述第四和值按第五固定顺序存放到各节点中;所述第五固定顺序为各节点的节点值大于该节点的子节点的节点值;
若当前所述第三二叉树堆中的各节点均为空,则:
针对当前所述k(m)对应的运算窗口内除所述第l个信号外的所有f(l)分别计算其各自加所述k(m)得到的所述第四和值;
将获得的各所述第四和值和所述第三和值作为节点值按第五固定顺序存放在所述第三二叉树堆中的各节点内;
将所述第三二叉树堆中根节点的节点值确定为所述f(l)在所述 第l个信号点对应的膨胀运算结果,并记录各节点值在所述f(l)中对应的信号点x;
或者,
若当前所述第三二叉树堆中的各节点均不为空;则:
将所述f(l)中针对当前运算窗口的上一个运算窗口的移出点对应的节点值移出所述第三二叉树堆,并将所述第三和值按所述第五固定顺序插入到所述第三二叉树堆的一个节点中;
将所述第三二叉树堆中根节点内的节点值确定为所述f(l)在所述第l个信号点对应的膨胀运算结果,并记录当前插入的节点值相对于在所述f(l)中对应的信号点x。
12.根据权利要求9所述的方法,其特征在于,所述将所述第三和值与所述f(l)中包含在当前运算窗口的上一个运算窗口内的各信号值加所述k(m)得到的第四和值进行比较;并根据比较结果确定所述f(l)中的第l个信号对应的膨胀运算结果,包括:
判断当前第三双向队列中的各节点是否均为空;所述第三双向队列中的节点个数等于所述k(m)的长度,且所述第三双向队列中的各节点值为所述f(l)中包含在当前所述运算窗口的上一个运算窗口内的各信号点对应的所述第四和值且各所述第四和值按第六固定顺序存放到各节点中;所述第六固定顺序为各所述节点值按其相对于所述f(l)中的信号点顺序排列,其中,l最小的排在所述第三双向队列的队首;
若当前所述第三双向队列中的各节点均为空,则:
针对当前所述k(m)对应的运算窗口内除所述第l个信号外的所有f(l)分别计算其各自加所述k(m)得到的所述第四和值;
将获得的各所述第四和值和所述第三和值作为节点值按所述第六固定顺序存放在所述第三双向队列中的各节点内;
或者,
若当前所述第三双向队列中的各节点均不为空,则:
将所述第三双向队列中除队首位置节点的各节点值依次向队首位置移动一个节点,并将所述第三和值作为插入节点值压入所述第三双向队列的队尾节点;
将当前所述第三双向队列中的最大节点值确定为所述f(l)在所述第l个信号点对应的膨胀运算结果。
13.根据权利要求9-12任一项所述的方法,其特征在于,还包括:所述开运算和/或闭运算中包括的腐蚀运算的具体步骤包括:
将待进行腐蚀运算的信号作为第四中间信号f(j),j=0,1,2,...,N-1,所述N为大于0的整数;针对新移入进所述k(m)对应的运算窗口的所述f(j)中的第j个信号,m≤j≤N-1,计算所述f(j)减所述k(m)得到的第三差值;
将所述第三差值与所述f(j)中包含在当前运算窗口的上一个运算窗口内的各信号值减所述k(m)得到的第四差值进行比较;并根据比较结果确定所述f(j)中的第j个信号对应的腐蚀运算结果。
14.根据权利要求13所述的方法,其特征在于,将所述第三差值与所述f(j)中包含在当前运算窗口的上一个运算窗口内的各信号值减所述k(m)得到的第四差值进行比较;并根据比较结果确定所述f(j)中的第j个信号对应的腐蚀运算结果,包括:
判断当前存储的最小值A4是否为空,或者不为空时其在所述f(j)中对应的信号点y是否已移出当前所述运算窗口;所述A4为所述f(j)中包含在当前所述运算窗口的上一个运算窗口内的各信号点对应的最小所述第四差值;
若所述当前存储的最小值A4为空,或者不为空时其在所述f(j)中对应的信号点y已移出当前所述运算窗口;则:
针对当前所述k(m)对应的运算窗口内除所述第j个信号外的所有f(j)分别计算其各自减所述k(m)得到的所述第四差值;
将获得的所有所述第四差值和所述第三差值中的最小值确定为所述f(j)在所述第j个信号点对应的腐蚀运算结果;
将所述获得的所有所述第四差值和所述第三差值中的最小值确定为新的所述最小值A4,并记录其相对于在所述f(j)中对应的信号点y;
或者,
若所述当前存储的最小值A4不为空,且其在所述f(j)中对应的信号点y未移出当前所述运算窗口;则:
将所述第三差值与当前存储的所述最小值A4进行比较,并将比较后的较小值确定为所述f(j)在所述第j个信号点对应的腐蚀运算结果;
将所述比较后的较小值确定为新的所述最小值A4,并记录其相对于在所述f(j)中对应的信号点y。
15.根据权利要求13所述的方法,其特征在于,将所述第三差值与所述f(j)中包含在当前运算窗口的上一个运算窗口内的各信号值减所述k(m)得到的第四差值进行比较;并根据比较结果确定所述f(j)中的第j个信号对应的腐蚀运算结果,包括:
判断当前第四二叉树堆中的各节点是否均为空;所述第四二叉树堆中的节点个数等于所述k(m)的长度,且所述第四二叉树堆中的各节点值为所述f(j)中包含在当前所述运算窗口的上一个运算窗口内的各信号点对应的所述第四差值且各所述第四差值按第七固定顺序存放到各节点中;所述第七固定顺序为各节点的节点值小于该节点的子节点的节点值;
若当前所述第四二叉树堆中的各节点均为空,则:
针对当前所述k(m)对应的运算窗口内除所述第j个信号外的所有f(j)分别计算其各自减所述k(m)得到的所述第四差值;
将获得的各所述第四差值和所述第三差值作为节点值按所述第七固定顺序存放在所述第四二叉树堆中的各节点内;
将所述第四二叉树堆中根节点的节点值确定为所述f(j)在所述第j个信号点对应的腐蚀运算结果,并记录各节点值在所述f(j)中对应的信号点y;
或者,
若当前所述第四二叉树堆中的各节点均不为空;则:
将所述f(j)中针对当前运算窗口的上一个运算窗口的移出点对应的节点值移出所述第四二叉树堆,并将所述第三差值按所述第七固定顺序插入到所述第四二叉树堆的一个节点中;
将所述第四二叉树堆中根节点内的节点值确定为所述f(j)在所述第j个信号点对应的腐蚀运算结果,并记录当前插入的节点值相对于在所述f(j)中对应的信号点y。
16.根据权利要求13所述的方法,其特征在于,所述将所述第三差值与所述f(j)中包含在当前运算窗口的上一个运算窗口内的各信号值减所述k(m)得到的第四差值进行比较;并根据比较结果确定所述f(j)中的第j个信号对应的腐蚀运算结果,包括:
判断当前第四双向队列中的各节点是否均为空;所述第四双向队列中的节点个数等于所述k(m)的长度,且所述第四双向队列中的各节点值为所述f(j)中包含在当前所述运算窗口的上一个运算窗口内的各信号点对应的所述第四差值且各所述第四差值按第八固定顺序存放到各节点中;所述第八固定顺序为各所述节点值按其相对于所述f(j)中的信号点顺序排列,其中,j最小的排在所述第四双向队列的队首;
若当前所述第四双向队列中的各节点均为空,则:
针对当前所述k(m)对应的运算窗口内除所述第j个信号外的所有f(j)分别计算其各自减所述k(m)得到的所述第四差值;
将获得的各所述第四差值和所述第三差值作为节点值按所述第八固定顺序存放在所述第四双向队列中的各节点内;
或者,
若当前所述第四双向队列中的各节点均不为空,则:
将所述第四双向队列中除队首位置节点的各节点值依次向队首位置移动一个节点,并将所述第三差值作为插入节点值压入所述第四双向队列的队尾节点;
将当前所述第四双向队列中的最小节点值确定为所述f(j)在所述第j个信号点对应的腐蚀运算结果。
17.一种数字信号的滤波装置,其特征在于,包括:
处理模块,用于在所述滤波装置对待处理的一维数字信号f(n),n=0,1,2,...,N-1,应用结构元k(m),m=0,1,2,...,N-1,依次进行开运算和闭运算,或者依次进行闭运算和开运算;
确定模块,用于将所述处理模块最终运算结果确定为所述f(n)对应的滤波信号;其中,所述k(m)为固定值,所述N为大于0的整数;
所述处理模块具体包括第一处理单元和第二处理单元;
所述第一处理单元,用于在所述处理模块进行所述开运算和/或闭运算包括的腐蚀运算中,将待进行腐蚀运算的信号作为第一中间信号f(t),t=0,1,2,...,N-1,所述N为大于0的整数;针对新移入进所述k(m)对应的运算窗口的所述f(t)中的第t个信号,m≤t≤N-1,计算所述f(t)减所述k(m)得到的第一差值;
所述第二处理单元,用于将所述第一差值与所述f(t)中包含在当前运 算窗口的上一个运算窗口内的各信号值减所述k(m)得到的第二差值进行比较,所述比较过程中,禁止对当前运算窗口内的除第t个信号的其他各f(t)对应的第二差值进行重复计算;
所述确定模块,用于根据所述第二处理单元最终的比较结果确定所述f(t)中的第t个信号对应的腐蚀运算结果。
18.根据权利要求17所述的装置,其特征在于,所述处理模块还包括第三处理单元和第四处理单元;
所述第三处理单元,用于在所述处理模块进行所述开运算和/或闭运算包括的膨胀运算中,将待进行膨胀运算的信号作为第二中间信号f(s),s=0,1,2,...,N-1,所述N为大于0的整数;针对新移入进所述k(m)对应的运算窗口的所述f(s)中的第s个信号,m≤s≤N-1,计算所述f(s)加所述k(m)得到的第一和值;
所述第四处理单元,用于将所述第一和值与所述f(s)中包含在当前运算窗口的上一个运算窗口内的各信号值加所述k(m)得到的第二和值进行比较;
所述确定模块,用于根据所述第四处理单元最终的比较结果确定所述f(s)中的第s个信号对应的膨胀运算结果。
19.一种数字信号的滤波装置,其特征在于,包括:
处理模块,用于对待处理的一维数字信号f(n),n=0,1,2,...,N-1,应用结构元k(m),m=0,1,2,...,N-1,依次进行开运算和闭运算,或者依次进行闭运算和开运算;
确定模块,用于将所述处理模块最终运算结果确定为所述f(n)对应的滤波信号;其中,所述k(m)为固定值,所述N为大于0的整数;
所述处理模块具体包括第五处理单元和第六处理单元;
所述第五处理单元,用于在所述处理模块进行所述开运算和/或闭运算包括的膨胀运算中,将待进行膨胀运算的信号作为第三中间信号f(l),l=0,1,2,...,N-1,所述N为大于0的整数;针对新移入进所述k(m)对应的运算窗口的所述f(l)中的第l个信号,m≤l≤N-1,计算所述f(l)加所述k(m)得到的第三和值;
所述第六处理单元,用于将所述第三和值与所述f(l)中包含在当前运算窗口的上一个运算窗口内的各信号值加所述k(m)得到的第四和值进行 比较,所述比较过程中,禁止对当前运算窗口内的除第l个信号的其他各f(l)对应的第四和值进行重复计算;
所述确定模块,用于根据所述第六处理单元最终的比较结果确定所述f(l)中的第l个信号对应的膨胀运算结果。
20.根据权利要求19所述的装置,其特征在于,所述处理模块还包括第七处理单元和第八处理单元;
所述第七处理单元,用于在所述处理模块进行所述开运算和/或闭运算包括的腐蚀运算中,将待进行腐蚀运算的信号作为第四中间信号f(j),j=0,1,2,...,N-1,所述N为大于0的整数;针对新移入进所述k(m)对应的运算窗口的所述f(j)中的第j个信号,m≤j≤N-1,计算所述f(j)减所述k(m)得到的第三差值;
所述第八处理单元,用于将所述第三差值与所述f(j)中包含在当前运算窗口的上一个运算窗口内的各信号值减所述k(m)得到的第四差值进行比较;
所述确定模块,用于根据所述第八处理单元最终的比较结果确定所述f(j)中的第j个信号对应的腐蚀运算结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410546713.8A CN104318523B (zh) | 2014-10-15 | 2014-10-15 | 数字信号的滤波方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410546713.8A CN104318523B (zh) | 2014-10-15 | 2014-10-15 | 数字信号的滤波方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104318523A CN104318523A (zh) | 2015-01-28 |
CN104318523B true CN104318523B (zh) | 2018-01-26 |
Family
ID=52373749
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410546713.8A Active CN104318523B (zh) | 2014-10-15 | 2014-10-15 | 数字信号的滤波方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104318523B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108937919A (zh) * | 2018-06-04 | 2018-12-07 | 湖北工业大学 | 一种消除心电信号基线漂移的方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102973264A (zh) * | 2012-12-07 | 2013-03-20 | 哈尔滨工业大学深圳研究生院 | 基于形态学多分辨率分解的心电信号预处理方法 |
CN103405227A (zh) * | 2013-08-02 | 2013-11-27 | 重庆邮电大学 | 基于双层形态学滤波的心电信号预处理方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7383079B2 (en) * | 2004-04-08 | 2008-06-03 | Welch Allyn, Inc. | Nonlinear method and apparatus for electrocardiogram pacemaker signal filtering |
-
2014
- 2014-10-15 CN CN201410546713.8A patent/CN104318523B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102973264A (zh) * | 2012-12-07 | 2013-03-20 | 哈尔滨工业大学深圳研究生院 | 基于形态学多分辨率分解的心电信号预处理方法 |
CN103405227A (zh) * | 2013-08-02 | 2013-11-27 | 重庆邮电大学 | 基于双层形态学滤波的心电信号预处理方法 |
Non-Patent Citations (3)
Title |
---|
基于形态滤波的心电信号去除基线漂移方法;庞宇 等;《物理学报》;20140324;第63卷(第9期);第098701-1-098701-6页 * |
基于形态滤波的心电信号基线矫正算法;毛玲 等;《信号处理》;20080831;第24卷(第4期);第583页第2-第3部分 * |
心电图波形基线漂移的数学形态滤波在线实时处理;朱湘临 等;《生物医学工程学杂志》;20100228;第27卷(第1期);第48-52页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104318523A (zh) | 2015-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11043962B2 (en) | Information processing apparatus, information processing method, and recording medium | |
EP3816874A2 (en) | Piecewise quantization method for artificial neural networks | |
CN111684473A (zh) | 提高神经网络阵列的性能 | |
CN110929860B (zh) | 一种卷积加速运算方法、装置、存储介质及终端设备 | |
CN104169909A (zh) | 上下文解析装置及上下文解析方法 | |
CN106228002B (zh) | 一种基于二次筛选的高效率异常时序数据提取方法 | |
CN108549078B (zh) | 一种雷达脉冲信号跨信道合并及检测方法 | |
Odeh | Using an Adaptive Neuro-Fuzzy Inference System(AnFis) Algorithm for Automatic Diagnosis of Skin Cancer | |
JP6822581B2 (ja) | 情報処理装置、情報処理方法及びプログラム | |
CN111010189B (zh) | 一种对数据集的多路压缩方法、装置及存储介质 | |
Marinelli et al. | On uniqueness of mild solutions for dissipative stochastic evolution equations | |
CN104318523B (zh) | 数字信号的滤波方法和装置 | |
Palágyi | A sequential 3D curve-thinning algorithm based on isthmuses | |
CN101567081B (zh) | 一种手部静脉图像增强方法 | |
Liu et al. | Asymptotical stability of numerical methods with constant stepsize for pantograph equations | |
Othman et al. | Exact asymptotic behavior near the boundary to the solution for singular nonlinear Dirichlet problems | |
Wang | A new accelerating technique applied to a variant of Cordero–Torregrosa method | |
Damaschke et al. | Strict group testing and the set basis problem | |
CN104103039B (zh) | 一种图像噪声估计方法 | |
Wang et al. | FPGA implementation of hardware processing modules as coprocessors in brain-machine interfaces | |
CN112257689A (zh) | 人脸识别模型的训练和识别方法、存储介质及相关设备 | |
CN109063782B (zh) | 一种自适应泵站故障智能诊断方法 | |
Hoang et al. | FPGA oriented compression of DNN using layer-targeted weights and activations quantization | |
Kacewicz et al. | Optimal solution of a class of non-autonomous initial-value problems with unknown singularities | |
CN109960532A (zh) | 用于前台运行的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |