血氧离散饱和度转换算法的快速实现方法
技术领域
本发明涉及医疗电子中的光电式血氧测量技术领域,具体涉及血氧饱和度的算法,尤其涉及一种使用生命体征监护手环测量人体血氧饱和度的血氧离散饱和度转换算法的快速实现方法。
背景技术
在临床医学中,人体血氧饱和度的检测是非常重要的检测项目,人体血氧状况与人的心肺功能及呼吸、循环系统有着重要关系,对人体血氧饱和度的检测在手术麻醉、监护室急救病房、病人运动和睡眠研究、以及氧疗中都有着非常重要的作用。
现有的医学检测仪器测量血氧饱和度均是让检测仪器发出红光或红外光照射皮肤,然后利用传感器接收来自皮肤的反射光,由于血液中的血氧会吸收一部分红光或红外光,故不同血氧饱和度的血液所接收的红光或红外光就不一样,则传感器所接收到来自皮肤的反射光也不一样,现有的医学检测仪器测量血氧饱和度均是将传感器接收到的皮肤反射回的光线进行收集、换算和转换,从而得到血氧离散饱度的换算值,现有血氧离散饱和度转换算法(DST)通常由三部分组成:参考信号发生器,自相关过滤器和峰值信号采集器。参考信号发生器对应每个SPO2(血氧饱和度)百分比(1%~200%),在输入的红光和红外光信号中分别建立一个参考信号。参考信号发生器的信号通过自相关过滤器时,消除了参考信号和输入红外光信号之间的相关频率。如果两个输入信号之间的频率是相似的,则消除整个信号,获得低能量输出。如果是不相似的,则消除最小量的信号,获得高能量输出。测量从自相关过滤器出来的能量输出,按1%的增量,绘制1%~100%内所有可能的血氧饱和度。在病人没有运动的情况下,DST算法生产一个能量输出峰值,而在运动情况下,生产几个峰值。由于动脉血有最高的血氧饱和度,在使用DST算法时,峰值信号采集器以SpO2血氧饱和度百分比显示最高饱和度峰值。
DST算法的局限性在于其庞大的运算量,DST算法通过筛选的办法计算血氧值,其核心是自适应滤波器,该滤波器一般为32阶FIR自适应格型滤波器(FIR滤波器为有限长单位冲激响应滤波器,又称为非递归型滤波器)。下面就常规计算完成100个输入数值的计算量估计:
按照自适应格型滤波器的结构,每一个输入点需要完成32次滤波参数的迭代,每一次参数迭代需要大约40次浮点数乘法/除法/加法运算。
每次计算需要完成100点的输入数值,即共需要100*40*32,总共128000次浮点运算。如需要选择的SpO2值点为1%~100%,按1%步进,需要100次运算;所以总共需要12800000次浮点运算。
通常血氧计算时,要求的更新频率为1秒钟1次,即表明需要在1秒内完成12,800,000次浮点运算。该运算量远远大于常见的穿戴设备选用的微处理器的处理能力。
中国专利申请公布号CN101933810A公开的一种血氧饱和度检测系统及方法,其主要技术特点是:该血氧饱和度检测系统包括顺序连接的信号采集装置、自适应归一化装置、FFT装置(FFT装置即傅里叶变换装置)、R值计算装置和血氧饱和度计算装置;所述FFT装置用于将检测数据通过快速傅里叶变换从时域变换到频域。该血氧饱和度检测方法,首先进行信号采集,然后进行预处理和自适应归一化处理;再进行FFT处理(FFT即傅里叶变换处理),将检测数据从时域变换到频域;最后进行R值计算并根据R值计算血氧饱和度,采用了该技术方案血氧饱和度检测方法的一种血氧饱和度检测系统,由于从频域中计算血氧饱和度,而且可以减小随机干扰,因而检测精度更高。但其技术方案的计算复杂、浮点运算大,不能减少自适应滤波器的弊端,不能通过峰值自动调节衰减因子,运算量大,不适合使用在可穿戴的生命体征监护手环上。
发明内容
针对现有技术中所存在的不足,本发明提出一种血氧离散饱和度转换算法的快速实现方法,包括通过线性调频变换CZT,将输入的红光和红外光信号分别转换为频域表达Fred和Fir、按照1%步进,从1%到200%血氧值确定R值、查找Ref中的最大值点、根据N个峰值点的比值关系,构建陷波器Ftrap、计算输出的频域信号Fout、计算滤波后信号的功率值、得到血氧离散饱和度转换算法需要的功率谱,并取其中对应血氧最大值作为输出。本发明的血氧离散饱和度转换算法DST中的自适应滤波器在时域上实现自适应频点的陷波器,将时域处理转换为频域处理,减少多次计算自适应滤波器的弊端,通过峰值自动调节陷波器的衰减因子,在频域上基本通过加减运算实现DST算法,达到简化运算量、避免浮点运算的目的。
本发明解决其技术问题,所采用的技术方案是:一种血氧离散饱和度转换算法的快速实现方法,其包括以下步骤:
S1、通过线性调频变换CZT,将输入的红光和红外光信号分别转换为频域表达Fred和Fir,其中,Fred表示红光信号经过CZT变化后的频域信号,Fir表示红外光经过CZT变化后的频域信号;
S2、根据人体对红光、红外光的吸收规律,按照1%步进,从1%到200%血氧值确定R值,并计算得到频域的参考信号Ref,其中Ref=Fred–Fir*R,R为红光和红外光信号的幅度变化量之比,R值处于0.01至2之间;
S3、查找Ref中的最大值点,查找前N个峰值点Fpp(i),i=1~N;
S4、根据N个峰值点的比值关系,构建陷波器Ftrap,Ftrap设计为N个陷波器级联,陷波器模拟时,考虑不同位置陷波器的衰减系统不同,基本原则为:对应最高峰值点的陷波器衰减系数最大,对应次高峰值点的陷波器衰减系数其次,依次类推,陷波器的衰减系数根据各个峰值点的大小调整,假设Fpp(1)是N个峰值中的最大值,它对应的衰减系数为A,则Ftrap(i)的衰减系数为Fpp(i)/Fpp(1)*A;
S5、计算输出的频域信号Fout,其中,Fout=Fir*Ftrap,得到滤波后的信号;
S6、计算滤波后信号的功率值,功率值用Fout*Fout得到;
S7、按照1%~200%的R值遍历所有可能性,对每一个R值,按照S6中的方法计算出功率值,遍历所有R值后,得到横坐标为R值,纵坐标为功率值的图表;
S8、在所述图表中,按R值从小到大查找功率值的峰值,第一个峰值点对应的R值为血氧对应的R值;再按照R值,计算出对应的血氧值。
优选地,所述N的取值为5,Ftrap设计为5个陷波器级联,针对L点的CZT变换,设置每个陷波器的宽度为L/20,陷波器的宽度取整数。
与现有技术相比,本发明的有益效果是:血氧离散饱和度转换算法DST中的自适应滤波器是在时域上实现自适应频点的陷波器,滤除参考信号中的对应频点信号,该处理过程可以通过频域上构建陷波器近似实现;DST算法中的参考信号来自于红/红外光按不同比值(1%~200%)的差值,该过程等效于频域上信号之差;转换需要复杂运算量的自适应滤波为陷波器设计。将时域处理转换为频域处理,减少多次计算自适应滤波器的弊端,通过峰值自动调节陷波器的衰减因子,在频域上基本通过加减运算实现DST算法,达到简化运算量、避免浮点运算的目的。
附图说明
图1是本发明的血氧离散饱和度转换算法的快速实现的原理图;
图2是通过本发明的血氧离散饱和度转换算法的快速实现方法得到的能量曲线;
图3是通过传统DST算法得到的能量曲线。
具体实施方式
下面结合附图对本发明的优选实施例进行详细阐述,以使本发明的优点和特征能更易于被本领域技术人员理解,从而对本发明的保护范围做出更为清楚明确的界定。
参阅图1-3所示,本发明的血氧离散饱和度转换算法的快速实现方法,包括以下步骤:
S1、通过线性调频变换CZT,将输入的红光和红外光信号分别转换为频域表达Fred和Fir,其中,Fred表示红光信号经过CZT变化后的频域信号,Fir表示红外光经过CZT变化后的频域信号;
S2、根据人体对红光、红外光的吸收规律,按照1%步进,从1%到200%血氧值确定R值(如取值1%,2%,3%、……、199%,200%),并计算得到频域的参考信号Ref,其中Ref=Fred–Fir*R,R为红光和红外光信号的幅度变化量之比,R值处于0.01至2之间;
S3、查找Ref中的最大值点,查找前N个峰值点Fpp(i),i=1~N,优选的,可以设置N为5,兼顾速度与实际效果;
S4、根据N个峰值点的比值关系,构建陷波器Ftrap,Ftrap设计为N个陷波器级联,同样,可以优选设置N为5,针对L点的CZT变换,设置每个陷波器的宽度为L/20,陷波器的宽度取整数,优选设置每个陷波器的宽度为20~25;陷波器模拟时,考虑不同位置陷波器的衰减系统不同,基本原则为:对应最高峰值点的陷波器衰减系数最大,对应次高峰值点的陷波器衰减系数其次,依次类推,陷波器的衰减系数根据各个峰值点的大小调整,假设Fpp(1)是N个峰值中的最大值,它对应的衰减系数为A,则Ftrap(i)的衰减系数为Fpp(i)/Fpp(1)*A;
S5、计算输出的频域信号Fout,其中,Fout=Fir*Ftrap,得到滤波后的信号;
S6、计算滤波后信号的功率值,功率值用Fout*Fout得到;
S7、按照1%~200%的R值遍历所有可能性,对每一个R值,按照S6中的方法计算出功率值,遍历所有R值后,得到横坐标为R值,纵坐标为功率值的图表;
S8、在所述图表中,按R值从小到大查找功率值的峰值,第一个峰值点对应的R值为血氧对应的R值;再按照R值,计算出对应的血氧值。
采用本发明的血氧离散饱和度转换算法的快速实现方法的计算效率分析:
两次256点CZT计算需要17920次复数乘法,等效于71680次整数乘法
对每一个R值,计算Ref需要256次整数乘法
对每一个R值,计算Fout需要512次整数乘法
对每一个R值,计算Power需要256次整数乘法
考虑基本等同计算量的加法运算,所以计算过程需要的计算量为:2*(71680+100*(256+256+512))=348,160次整数乘法;
同时,计算过程不需要高精度的反馈和叠加,所以整个过程可以通过32位定点计算完成;考虑目前中低端处理器大多具有单周期32位乘法器,所以考虑8MHz处理频率,计算过程可以在100毫秒以内完成。
通过图2和图3可以看出,本发明的血氧离散饱和度转换算法的快速实现方法由于采用陷波器近似拟合自适应滤波,所以带来了曲线的变形,但不影响峰值点的读取。
本发明的血氧离散饱和度转换算法DST中的自适应滤波器在时域上实现自适应频点的陷波器,滤除参考信号中的对应频点信号,该处理过程可以通过频域上构建陷波器近似实现;DST算法中的参考信号来自于红/红外光按不同比值(1%~200%)的差值,该过程等效于频域上信号之差;转换需要复杂运算量的自适应滤波为陷波器设计。将时域处理转换为频域处理,减少多次计算自适应滤波器的弊端,通过峰值自动调节陷波器的衰减因子,在频域上基本通过加减运算实现DST算法,达到简化运算量、避免浮点运算的目的。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何不经过创造性劳动想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书所限定的保护范围为准。