《基于云服务的胎心宫缩信息分析系统的设计与实现》 -设计与实现
胎心率曲线分析
胎心率基线计算流程
1,求出胎心率曲线非零部分的平均数meanFHR
2,截取有效心率曲线FHRseg[]。
截取规则:从前后边分别寻找同meanFHR相差60以内的第一个点。
操作说明:因为机器开始和结束有可能测到的不是胎儿的位置,因此算是无效信息,需要删除。
3,通过线性插值的方法去除FHRseg[]数组中的断点。使用公式4-2求出数组FHRdiff[],其中s为FHRseg[]数组的总长度。从FHRdiff[]起始位置向后搜索,记下标为i,如果FHRdiff[i]绝对值大于30的元素,记下该点位置为start,从start点开始向后搜索400个样本点,记下标为j,如果FHRdiff[j]绝对值小于10并且FHRseg[j+1]与平均数meanFHR之差的绝对值小于50,记下该点位置为end,用线性插值的方法替换FHRseg[]数组中下标由start到end之间的点,替换后从end位置后面一个点继续搜索需要进行线性插值的部分,直到搜索完整个FHRdiff[]数组。
4,胎心率曲线是以bpm(Beat Per Minute)为单位,需要通过公式4-3将数组FHRseg[]转换成以毫秒为单位的脉冲间隔值数组FHRsegex[],其中S为FHRseg[]数组的总长度,去除FHRsegex[]数组中在区间[300,600]之外的元素。通过直方图求出FHRsegex[]数组中每个脉冲间隔值的频数,设频数最高的脉冲间隔值为peak,设sum为所有脉冲间隔值频数的总和,按照脉冲间隔值从低到高的顺序累加频数,当累加值大于sum0.875时,设此时脉冲间隔值为msstart。从msstart开始,按照脉冲间隔值高到低搜索满足以下条件的第一个脉冲间隔值,并把peak修正为该脉冲间隔值,若没有搜索到满足条件的,则不用修正。最后按照公式4-3的逆过程把peak的单位转化成bpm。
条件1:该脉冲间隔值频数比后面将要搜索的连续5个脉冲间隔值的频数都大;
条件2:该脉冲间隔值频数大于sum0.005或peak与msstart之差的绝对值大于30毫秒;
5,将FHRseg[]数组复制到FHRbase[]数组,对FHRbase[]数组进行5次滤波和4修剪处理,滤波和修剪交替进行。每次滤波之前都需要计算B0值,置B0的初值为peak,从FHRbase[]数组结束点向前遍历,记下标为i,如果FHRbase[i]与peak之差的绝对值小于50,则使用公式4-4更新B0。滤波由前向滤波和后向滤波组成,对于前向滤波,则是从FHRbase[]数组起始点向后遍历,如果元素与peak之差的绝对值小于50,使用公式4-5更新元素;否则使用公式4-6更新元素。对于后向滤波,从FHRbase[]数组从结束点向前遍历,使用公式4-7更新数组元素。修剪可分为上限修剪和下限修剪,对于上限修剪,定义basetemp[]数组,over值,使用公式4-8对basetemp[]数组进行赋值。下限修剪类似,定义under值,使用公式4-9更新basetemp[]数组,修剪后用basetemp[]数组覆盖FHRbase[]。每次修剪使用的over和under如表4-1所示。
6,步骤13对原胎心率进行处理获得了修正的胎心率数组FHRseg[],步骤45在修正胎心率的基础上求出胎心率基线数组FHRbase[],后续求加速、减速等流程都是基于数组FHRseg[]和FHRbase[]。由于步骤2截断了原胎心率曲线,为了保持与原胎心率的长度一致,需要使用公式4-10和4-11还原数组FHRseg[]和FHRbase[]的长度,其中start和end为截断的开始和结束位置。
胎儿基线减速分析
FHRseg[]:有效心率曲线
FHRbase[]:基线数组
条件 | searchNum | dif1 | dif2 | keeptime |
---|---|---|---|---|
25 <= FHRbase[i] - FHRseg[i] && 25 <= meanFHRbase - FHRseg[i] && FHRseg[i] > 30 | 120 | 15 | 10 | 18 |
20 <= FHRbase[i] - FHRseg[i] < 25&& 20 <= meanFHRbase - FHRseg[i] && FHRseg[i] > 30 | 60 | 15 | 10 | 37 |
10 <= FHRbase[i] - FHRseg[i] < 20&& 15 <= meanFHRbase - FHRseg[i] && FHRseg[i] > 30 | 60 | 10 | 5 | 75 |
步骤一: 从数组FHRseg[]
起点向后遍历,记下标为i,求出起始位置到i之间的平均基线值meanFHRbase
。若FHRseg[i]
满足上述表格的条件之一,则在后续searchnum
个元素中搜索最大值,记录谷值decpeak
和位置dectime
,执行步骤二。
步骤二: 在谷值位置向前后的150个元素中分别进行搜索,在两次搜索中分别记下第一个比基线值-5大的元素且该元素与谷值dectime
之间的元素不小于谷值decpeak
的位置。如果两次搜索都成功而且两个位置之间的距离大于keeptime
,则记录减速的起始点decstart
和结束点decend
,执行步骤3,否则,执行步骤一继续遍历
步骤3: 在减速的起始点decstart
向前搜索100个元素,记下标m1
,FHRseg[m1]
与FHRbase[m1]
之差为subdec[m1]
。若发现subdec[m1]
大于dif1
并subdec[m1] + dif2
大于谷值基线与谷值decpeak
之差,执行步骤一继续遍历;否则,执行步骤4
步骤四: 在减速的结束点decend
向后搜索100个元素,记下标m2
,FHRseg[m2]
与FHRbase[m2]
之差为subdec[m2]
。若发现subdec[m2]
大于dif2
并subdec[m2] + dif2
大于谷值基线与谷值decpeak
之差,执行步骤一继续遍历;否则认为发生了一次减速,由于减速发生的间隔不会小于一分钟,所以从减速位置dectime的一分钟后继续执行步骤1继续遍历
长变异分析流程
步骤一:以1分钟为时间窗口对原始胎心率曲线进行划分,如果窗口没有发现加速、减速。则搜索窗口内的曲线中的最大、最小以及平均值,执行步骤二;否则,时间窗口向后移1分钟
步骤二:窗口中每个点与后续点分别跟平均值比较大小,统计出现比较结果异号的次数作为这一分钟的周期变异数,曲线中这窗口内的最大最小值之差为这一分钟的振幅变异大小,时间窗口后移一分钟并执行步骤一、
短变异分析流程
步骤一:以1分钟为时间窗后对原始胎心率曲线进行划分,如果窗口内的非零数据占窗口百分之75以上,则以4秒为长度将时间窗口细分为15组,使用公式将每组内的非零数据转换为以毫秒为单位的脉冲间隔并求出每组的平均值,执行步骤2,否则,时间窗口向后移动1分钟
步骤二:求出每组和下一组的平均值之差的绝对值,这一分钟的短变异值为所有绝对值的平均值,时间窗口向后移1分钟并执行步骤1
还没有评论,来说两句吧...