本发明涉及一种归一化处理方法,尤其涉及一种胎心仪多普勒信号的归一化软件处理方法,并涉及采用了该胎心仪多普勒信号的归一化软件处理方法的归一化软件处理系统。
背景技术:
目前多普勒胎心仪一般使用自相关算法来识别心跳周期,自相关算法是一种计算信号自身不同位置相关性的算法。对于有规律的信号,自相关算法的结果在信号周期处会呈现一个峰值,软件查找这些峰值并计算相邻峰值的时间差即可计算出心率。
但是由于自相关算法是一种运算复杂度较大的算法,运算量与数据长度成指数增长关系,如果直接以原始信号数据进行运算对系统的处理器性能要求较高,不利于项目的成本控制。另一方面,由于多普勒探头原始信号的幅度范围波动很大,以原始信号数据直接做相关运算,运算结果的数值范围也会很大,不利于后续处理。
为减小算法对系统的性能要求和消除输入范围对输出范围的影响,必须在进行自相关运算前对信号进行一些简化处理,同时又必须保留我们所需要的特征信息,这个过程就是归一化,不同的归一化方法可能导致不同的信号误差和分辨率损失。
但是,目前的多普勒胎心仪产品大多使用硬件方法来对原始探头信号进行归一化处理,即根据信号的强度将信号调理为高低两种电平状态输出,软件检测输出电平状态将采样信号记为1或者0,这种现有的归一化处理方法对原始信号的分辨率造成极大的损失;并且,由于元器件数量增多会增加产品成本,而因为元器件参数误差也提高引入结果误差的概率。
技术实现要素:
本发明所要解决的技术问题是需要提供一种能够有效降低成本并提高其性能指标的胎心仪多普勒信号的归一化软件处理方法,并进一步提供采用了该胎心仪多普勒信号的归一化软件处理方法的归一化软件处理系统。
对此,本发明提供一种胎心仪多普勒信号的归一化软件处理方法,包括以下步骤:
步骤s1,对待处理的原始数据队列查找局部波峰;
步骤s2,对查找到的所有局部波峰选出预设数量的峰值最大的波峰,对预设数量的峰值最大的波峰取均值处理,得出归一化的波峰参考值,并设定归一化的输出范围值;
步骤s3,使用步骤s2所述波峰参考值对原始数据队列进行归一化计算;其中,当对原始数据队列进行归一化计算后得到的绝对值大于设定的归一化的输出范围值rf时,则将归一化计算后得到的数值修改为rf或-rf。
本发明的进一步改进在于,所述步骤s1包括以下子步骤:
步骤s101,设待处理的原始数据队列为数组x,总长度为m点,从第1点开始选取长度为n的连续数据点,n<<m,该段连续数据点记为数组l,n为根据一个正常心音信号的长度来确定的预设长度值,预设长度值n的取值为大于一个心音信号的长度;
步骤s102,判断数组l是否为一个局部波峰,如果是,则将数组l的峰值存入局部波峰数组h中,并将数组l的起始位置往后移n/2点,如果不是,则将数组l的起始位置往后移1点;
步骤s103,根据调整了起始位置后的数组l取下一个数组,重复步骤s102,直到数组l的位置移动到数组x的末尾。
本发明的进一步改进在于,所述步骤s102中,判断数组l是否为一个局部波峰的方法为,查找数组l的峰值max,记录峰值max在数组l中的序号maxid,如果峰值max处于数组l的中间位置,即maxid等于n/2,则判定数组l为数组x的一个局部波峰;如果maxid不等于n/2,则判定数组l不是数组x的一个局部波峰。
本发明的进一步改进在于,所述步骤s2包括以下子步骤:
步骤s201,对步骤s1中所得到的局部波峰数组h进行由大到小排序,设排序后的输出数组为k;
步骤s202,选择输出数组k的前面预设数量的波峰值,进行归一化参考值计算,归一化计算后的输出范围表示为rf,归一化的波峰参考值表示为r。
本发明的进一步改进在于,所述步骤s202中归一化参考值计算的过程包括:
步骤s2021,用于计算波峰参考值的局部波峰数设定为3到5个,先判断选择的局部波峰值中的最大值与中间值的相对大小,如果最大值超过比较值,则将最大值修改为中间值,否则保持最大值不变;
步骤s2022,计算当前的最大值与最小值的平均值t;
步骤s2023,设定归一化的输出范围值rf,用所述步骤s2022得到的平均值t除以归一化计算后的输出范围值rf,得到归一化的波峰参考值r。
本发明的进一步改进在于,在所述步骤s2021中,判断选择的局部波峰中的最大值与中间值的相对大小时,以中间值的1.3~2倍为比较值,如果最大值大于比较值,则将最大值修改为中间值,否则保持最大值不变。
本发明的进一步改进在于,所述预设数量的波峰值设置为3个,前三个波峰值分别用k(0)、k(1)和k(2)表示,在归一化参考值计算的过程中,先判断波峰值k(0)是否大于波峰值k(1)的1.3倍,若是则将波峰值k(0)替换为波峰值k(1),若否则保持波峰值k(0)不变;然后计算当前的波峰值k(0)与波峰值k(2)的平均值t;最后通过平均值t除以归一化计算后的输出范围rf得到归一化的波峰参考值r。
本发明的进一步改进在于,所述步骤s3包括以下子步骤:
步骤s301,用原始数据队列中的每个数据点x(n)除以所述步骤s2得到的波峰参考值r,得到该数据点x(n)对应的归一化值y(n);
步骤s302,判断上述步骤s301所得归一化值y(n)的绝对值是否超出归一化的输出范围值rf,如果y(n)>rf,则y(n)=rf;如果y(n)<-rf,则y(n)=-rf;否则y(n)保持原值;
步骤s303,重复步骤s301至步骤s302,直到原始数据队列全部完成归一化计算,输出归一化值y(n)的队列。
本发明的进一步改进在于,所述步骤s2中,归一化的输出范围值rf设定为3到10之间。
本发明还提供一种胎心仪多普勒信号的归一化软件处理系统,采用了如上所述的胎心仪多普勒信号的归一化软件处理方法,并包括:
局部波峰查找模块,用于对待处理的原始数据队列查找局部波峰;
波峰参考值计算模块,用于对查找到的所有局部波峰选出预设数量的峰值最大的波峰,对预设数量的峰值最大的波峰取均值处理,得出归一化的波峰参考值;
归一化处理模块,通过所述波峰参考值对原始数据队列进行归一化计算;其中,当对原始数据队列进行归一化计算后得到的绝对值大于设定的归一化的输出范围值rf时,则将归一化计算后得到的数值修改为rf或-rf。
与现有技术相比,本发明的有益效果在于:通过对归一化计算后的输出范围rf的设置和修改能够灵活的调整归一化分辨率;同时归一化后的数据波形图中的各个局部波峰幅度相较于原始数据波形更为接近,进而实现了使用多个局部波峰通过处理后取均值作为归一化参考值所带来的好处,即不会因为原始数据中出现一个异常大的局部波峰而影响数据处理的准确性,能够在不增加硬件成本的基础上,大大减小了异常波峰对其他数据点归一化幅度的影响,大幅度提升了胎心仪多普勒信号处理的性能指标。
附图说明
图1是本发明一种实施例的工作流程示意图;
图2是本发明一种实施例查找局部波峰的仿真示意图;
图3是本发明一种实施例中原始数据队列和归一化值y(n)队列的对比仿真示意图。
具体实施方式
下面结合附图,对本发明的较优的实施例作进一步的详细说明。
如图1所示,本例提供一种胎心仪多普勒信号的归一化软件处理方法,包括以下步骤:
步骤s1,对待处理的原始数据队列查找局部波峰;
步骤s2,对查找到的所有局部波峰选出预设数量的峰值最大的波峰,对预设数量的峰值最大的波峰取均值处理,得出归一化的波峰参考值,并设定归一化的输出范围值;
步骤s3,使用步骤s2所述波峰参考值对原始数据队列进行归一化计算,其中,当对原始数据队列进行归一化计算后得到的绝对值大于设定的归一化的输出范围值rf时,则将归一化计算后得到的数值修改为rf或-rf。
本例通过先查找待处理的整段原始数据队列的峰值,以峰值除以归一化输出范围值得到归一化参考值,再以所有原始数据除以该参考值得到归一化结果。例如,假设待归一化的所有整段数据最大值为1000,希望归一化的输出范围值rf在-10到10之间,那么归一化的参考值应为1000/10=100,以原始数据除以100,结果必然小于或等于10,小于-10的部分可以直接修改为-10。但是如果这样处理就可能存在一种问题,即原始数据中可能不同位置有效的胎心音信号幅度差别很大,但是我们希望归一化处理后,所有有效的胎心音信号幅度尽可能接近,就必须尽量取整段数据的平均峰值来作为归一化参考,因此本例使用了一种查找多个局部波峰然后求均值的方法来解决这个问题。
本例所述步骤s2中,归一化的输出范围值rf的设定可以根据实际情况而定,一般设定为3到10之间。归一化的输出范围值rf值越小,则归一化后的信号的分辨率越低,但是对系统后续处理的性能要求越低;归一化的输出范围值rf值越大,则归一化后的信号分辨率越高,但是对系统后续处理的性能要求越高。因此归一化的输出范围值rf值设定要综合考量而定,选择能满足信号分辨率要求的最低值。本例所述归一化的输出范围值rf优选设定为3到10之间,可以根据实际情况而调整。
更为具体的,本例所述步骤s1包括以下子步骤:
步骤s101,设待处理的原始数据队列为数组x,总长度为m点,从第1点开始选取长度为n的连续数据点,该段连续数据点记为数组l,n为根据一个正常心音信号的长度来确定的预设长度值,n<<m,预设长度值n的取值为略大于一个心音信号的长度,该预设长度值n也可以根据实际情况和需求进行自定义修改和调整;
步骤s102,判断数组l是否为一个局部波峰,如果是,则将数组l的峰值存入局部波峰数组h中,并将数组l的起始位置往后移n/2点,如果不是,则将数组l的起始位置往后移1点;
步骤s103,根据调整了起始位置后的数组l取下一个数组,重复步骤s102,直到数组l的位置移动到数组x的末尾。
本例所述步骤s102中,判断数组l是否为一个局部波峰的方法为,查找数组l的峰值max,记录峰值max在数组l中的序号maxid,如果峰值max处于数组l的中间位置,即maxid等于n/2,则判定数组l为数组x的一个局部波峰;如果maxid不等于n/2,则判定数组l不是数组x的一个局部波峰。
本例步骤s1的详细步骤这样设计的原因在于:待处理的原始数据队列对应的数组x往往存在不止一个波峰,当数据在n点范围内存在一个主波峰和若干小波峰时,由于小波峰两侧边缘延伸的范围往往较小,很难满足maxid=n/2的条件,因此通过这样的局部波峰判断方法可以大大提高查找到主波峰的概率,进而提高其准确性。
本例所述步骤s1实现过程所对应的编程伪代码如下:
本例所述步骤s2包括以下子步骤:
步骤s201,对步骤s1中所得到的局部波峰数组h进行由大到小排序,设排序后的输出数组为k;
步骤s202,选择输出数组k的前面预设数量的波峰值,进行归一化参考值计算,归一化计算后的输出范围值表示为rf,归一化的波峰参考值表示为r。
本例所述步骤s202中归一化参考值计算的过程包括:
步骤s2021,用于计算波峰参考值的局部波峰数设定为3到5个,先判断选择的局部波峰值中的最大值与中间值的相对大小,如果最大值超过比较值(即过大),则将最大值修改为中间值,否则保持最大值不变;当然,在实际应用中,波峰参考值的局部波峰数设定数量可以根据实际情况进行修改。
步骤s2022,计算当前的最大值与最小值的平均值t;
步骤s2023,设定归一化的输出范围值rf,用所述步骤s1022得到的平均值t除以归一化后的输出范围值rf,得到归一化的波峰参考值r。
更为具体的,本例所述比较值优选为中间值的1.3~2倍,在所述步骤s2021中,判断预设数量的波峰值中的最大值与中间值的相对大小,如果最大值超过比较值,优选地,在最大值超过中间值的1.3倍,则将最大值修改为中间值,否则保持最大值不变,这样的设计,如果原始数据中出现一个异常大的局部波峰时,也能够有效避免该异常波峰对其他数据点归一化幅度的影响;该比较值的选择并不是本领域技术人员的惯用手段,而是在研发时通过调试比较确定的一个能够产生很好效果的比较值,尤其是以中间值的1.3倍为比较值时,效果最好。
本例所述预设数量的波峰值设置优选为3个,前三个波峰值分别用k(0)、k(1)和k(2)表示,在归一化参考值计算的过程中,先判断波峰值k(0)是否大于波峰值k(1)的1.3倍,若是则将波峰值k(0)替换为波峰值k(1),若否则保持波峰值k(0)不变;然后计算当前的波峰值k(0)与波峰值k(2)的平均值t;最后通过平均值t除以归一化计算后的输出范围rf得到归一化的波峰参考值r。
对应的,其计算的方法为:如果波峰值k(0)>波峰值k(1)*1.3,则波峰值k(0)=波峰值k(1);平均值t=(波峰值k(0)+波峰值k(2))/2;波峰参考值r=平均值t/输出范围rf。
本例所述步骤s3包括以下子步骤:
步骤s301,用原始数据队列中的每个数据点x(n)除以所述步骤s2得到的波峰参考值r,得到该数据点x(n)对应的归一化值y(n);
步骤s302,判断上述步骤s301所得归一化值y(n)的绝对值是否超出归一化的输出范围值rf,如果y(n)>rf,则y(n)=rf;如果y(n)<-rf,则y(n)=-rf;否则y(n)保持原值;
步骤s303,重复步骤s301至步骤s302,直到原始数据队列全部完成归一化计算,输出归一化值y(n)的队列。
如图2所示,本例通过仿真对整个原始数据查找最大3个局部波峰,其中,图2圈出的标号1、标号2和标号3分别为查找出的最大3个局部波峰,对应的横线标示了该局部波峰的强度幅值;图2圈出的标号4对应的横线为由3个最大局部波峰计算出的归一化参考值幅值。
图3为使用本例的原始数据与结果数据的效果仿真比对示意图,其中原始数据x总长度为1000点,局部波峰查找数组l长度为80点,归一化参考值计算选择的最大局部波峰为3个,归一化输出范围rf为10。从图3可以看到,对于任意的原始数据范围,归一化后的范围都在-10到10之间,分辨率为20级,修改归一化输出范围rf即可以灵活的调整归一化分辨率。
因此,明显的,本例能够有效降低胎心仪多普勒信号的归一化处理所需要的成本,并且还有效提高了其性能指标,还能够通过对归一化计算后的输出范围rf的设置和修改能够灵活的调整归一化分辨率;在此基础上,归一化后的数据波形图中的各个局部波峰幅度相较于原始数据波形更为接近,进而实现了使用多个局部波峰通过处理后取均值作为归一化参考值所带来的好处,即不会因为原始数据中出现一个异常大的局部波峰而影响数据处理的准确性,因此能够在不增加硬件成本的基础上,大大减小了异常波峰对其他数据点归一化幅度的影响,大幅度提升了胎心仪多普勒信号处理的性能指标。
本例还提供一种胎心仪多普勒信号的归一化软件处理系统,采用了如上所述的胎心仪多普勒信号的归一化软件处理方法,并包括:
局部波峰查找模块,用于对待处理的原始数据队列查找局部波峰;
波峰参考值计算模块,用于对查找到的所有局部波峰选出预设数量的峰值最大的波峰,对预设数量的峰值最大的波峰取均值处理,得出归一化的波峰参考值;
归一化处理模块,通过所述波峰参考值对原始数据队列进行归一化计算;其中,当对原始数据队列进行归一化计算后得到的绝对值大于设定的归一化的输出范围值rf时,则将归一化计算后得到的数值修改为rf或-rf。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。