用于脑电、心电数据压缩的方法、终端及存储介质
阅读说明:本技术 用于脑电、心电数据压缩的方法、终端及存储介质 (Method, terminal and storage medium for electroencephalogram and electrocardio data compression ) 是由 黎彤亮 庞超逸 李晓云 赵环宇 范瑞琴 冯春雨 史玉盼 于 2021-09-03 设计创作,主要内容包括:本发明提供一种用于脑电、心电数据压缩的方法、终端及存储介质。该方法包括:根据设定误差对脑电心电数据进行分段拟合,获得多个线段集合,及每个线段的起点横坐标集合Hs、终点横坐标集合He、起点纵坐标集合Vs和终点纵坐标集合Ve;对起点纵坐标集合Vs进行压缩,并根据起点纵坐标压缩结果Gvs确定起点纵坐标的更新集合Vs~(*);基于更新集合Vs~(*)和起点横坐标Hs得到更新纵坐标上界DD~(U)和下界DD~(L),对更新纵坐标上界DD~(U)和下界DD~(L)进行线段拟合,获得分段线段的斜率集合KK或终点纵坐标的更新集合Ve’;根据更新集合Vs~(*)、起点横坐标集合Hs和终点横坐标集合He,以及分段线段的斜率集合KK或终点纵坐标的更新集合Ve’确定压缩信息,以用于表示压缩后的脑电心电数据。本发明提高了数据压缩率。(The invention provides a method, a terminal and a storage medium for electroencephalogram and electrocardio data compression. The method comprises the following steps: performing segmented fitting on the electroencephalogram electrocardiograph data according to the set error to obtain a plurality of segment sets, and a starting point abscissa set Hs, an end point abscissa set He, a starting point ordinate set Vs and an end point ordinate set Ve of each segment; compressing the starting point ordinate set Vs and determining an updated set of starting point ordinates Vs from the starting point ordinate compression result Gvs * (ii) a Based on the set of updates Vs * Obtaining an updated ordinate upper bound DD from the origin abscissa Hs U And lower boundary DD L To update the ordinate upper bound DD U And lower boundary DD L Performing line segment fitting to obtain a slope set KK of a segmented line segment or an updated set Ve' of a terminal vertical coordinate; according to the update set Vs * A set of start and end abscissas Hs and He, and a set of slopes for the piecewise line segmentsKK or an update set Ve' of the end point vertical coordinate determines compression information to be used for representing the compressed electroencephalogram and electrocardiograph data. The invention improves the data compression rate.)
本申请基于申请号为2021107141424、申请日为2021年06月25日的中国专利申请提出,并要求该中国专利申请的优先权,该中国专利申请的全部内容在此引入本申请作为参考。
技术领域
本发明涉及数据处理技术领域,尤其涉及一种用于脑电、心电数据压缩的方法、终端及存储介质。
背景技术
流数据是一组顺序、大量、快速、连续到达的数据序列。一般情况下,流数据可被视为一个随时间延续而无限增长的动态数据集合。例如:在医疗领域,动态脑电图和心电图是临床常用的心血管疾病的筛查及病情监测手段,通过持续记录患者的心电信号和脑电信号获得重要诊断评价依据。心电和脑电实时监测系统为了延长设备续航时间,实现长时间的信号稳定的心电和脑电监测,需要重点考虑功耗控制问题。通信功耗在动态心电和脑电监测系统的总功耗中占据较大的比例,如果心电和脑电压缩所需的功耗远小于传输心电和脑电数据所需的通信功耗,则系统整体功耗降低的倍数与压缩率成正比。
对于同一组流数据来说,压缩率越高,对存储空间的要求越低。然而现有的对流数据进行压缩的方法中,压缩率都不够高。
发明内容
本发明实施例提供了一种用于脑电、心电数据压缩的方法、终端及存储介质,以解决压缩率低的问题。
第一方面,本发明实施例提供了一种用于脑电、心电数据压缩的方法,包括:
根据设定误差对脑电心电数据进行分段拟合,获得多个线段集合,及每个线段的起点横坐标集合Hs、终点横坐标集合He、起点纵坐标集合Vs和终点纵坐标集合Ve;其中,所述起点纵坐标集合Vs和所述终点纵坐标集合Ve中每个纵坐标由数据区间表示;
对所述起点纵坐标集合Vs进行压缩,并根据起点纵坐标压缩结果Gvs确定起点纵坐标的更新集合Vs*;其中,更新集合Vs*中每个纵坐标由数值表示;
基于所述更新集合Vs*和所述起点横坐标集合Hs得到更新纵坐标上界DDU和下界DDL,对所述更新纵坐标上界DDU和下界DDL进行线段拟合,获得分段线段的斜率集合KK或终点纵坐标的更新集合Ve';
根据所述更新集合Vs*、所述起点横坐标集合Hs和所述终点横坐标集合He,以及所述分段线段的斜率集合KK或所述终点纵坐标的更新集合Ve'确定压缩信息,以用于表示压缩后的脑电心电数据。
在一种可能的实现方式中,根据所述更新集合Vs*、所述起点横坐标集合Hs和所述终点横坐标集合He,以及所述分段线段的斜率集合KK或所述终点纵坐标的更新集合Ve'生成压缩记录,包括:
对终点纵坐标的更新集合Ve'进行压缩,获得终点纵坐标的压缩结果Gve;
以所述更新集合Vs*、所述起点横坐标集合Hs、所述终点横坐标集合He和终点纵坐标的压缩结果Gve作为压缩信息。
在一种可能的实现方式中,根据所述更新集合Vs*、所述起点横坐标集合Hs和所述终点横坐标集合He,以及所述分段线段的斜率集合KK或所述终点纵坐标的更新集合Ve'生成压缩记录,包括:
对所述分段线段的斜率集合KK进行压缩,获得斜率的压缩结果Gkk;
以所述更新集合Vs*、所述起点横坐标集合Hs、所述终点横坐标集合He和斜率的压缩结果Gkk作为压缩信息。
在一种可能的实现方式中,对所述起点纵坐标集合Vs进行压缩,包括:
根据相邻两个纵坐标确定第一转换系数,并根据所述第一转换系数确定更新区间;
在所述更新区间为多个时,根据相邻两个更新区间确定第二转换系数,并根据所述第二转换系数确定再更新区间;
在所述再更新区间为一个时结束压缩,将所述第一转换系数和第二转换系数组合作为纵坐标压缩结果Gvs;其中,所述第二转换系数包括一个或多个。
在一种可能的实现方式中,所述两个纵坐标的端值与所述第一转换系数之间关系如下:
其中,d i和d i+1为纵坐标的左端点;和为纵坐标的右端点;b为所述第一转换系数;i为奇数;1≤i≤m1;l1为当前分解级数;n为原始数据个数。
在一种可能的实现方式中,所述更新区间的左端点为:
d=max{d i-b,d i+1+b}
其中,d为更新区间的左端点;d i和d i+1为纵坐标的左端点;和为纵坐标的右端点;b为所述第一转换系数;i为奇数;1≤i≤m1;l1为当前分解级数;n为原始数据个数;
所述更新区间的右端点为:
其中,为更新区间的右端点;d为更新区间的左端点;d i和d i+1为纵坐标的左端点;和为纵坐标的右端点;b为所述第一转换系数;i为奇数;1≤i≤m1;l1为当前分解级数;n为原始数据个数。
在一种可能的实现方式中,根据起点纵坐标压缩结果Gvs确定起点纵坐标的更新集合Vs*,包括:
由所述压缩结果Gvs的第二级开始,获取当前级数对应的转换系数和前一级的解压缩结果;
基于当前级数对应的转换系数和前一级的解压缩结果确定当前级数的解压缩结果。
在一种可能的实现方式中,所述基于所述更新集合Vs*和所述起点横坐标集合Hs得到更新纵坐标上界DDU和下界DDL,对所述更新纵坐标上界DDU和下界DDL进行线段拟合,包括:
基于所述更新集合Vs*和所述起点横坐标集合Hs得到更新纵坐标上界DDU和下界DDL。
对所述更新纵坐标上界DDU和下界DDL进行线段拟合,并确定终点纵坐标的更新集合Ve'。
在一种可能的实现方式中,所述根据设定误差对脑电心电数据进行分段拟合,获得多个线段集合,包括:
根据所述脑电心电数据的多个数据点和所述设定误差构建多个数据区间,并将所述脑电心电数据中每个数据点基于数据区间表示;其中,所述设定误差包括误差上限和误差下限;
从首个数据点开始与相邻数据点确定上极限直线、下极限直线、上凸壳和下凸壳;
在待拟合数据点对应的数据区间确定线段,与所述上极限直线或所述下极限直线相交时,基于所述待拟合数据点更新所述上极限直线、所述下极限直线、所述上凸壳和所述下凸壳;并在所述待拟合数据点对应的数据区间确定线段,与所述上极限直线或所述下极限直线无交点,且在所述上极限直线和所述下极限直线的范围外时,确定所述待拟合数据点为线段终点。
在一种可能的实现方式中,确定上极限直线、下极限直线、上凸壳和下凸壳,包括:
确定第一数据点和第二数据点的上限值和上限值;
基于所述第一数据点的下限值和所述第二数据点的上限值确定所述上极限直线;
基于所述第一数据点的上限值和所述第二数据点的下限值确定所述下极限直线;
基于所述第一数据点的上限值和所述第二数据点的上限值确定所述下凸壳;
基于所述第一数据点的下限值和所述第二数据点的下限值确定所述上凸壳。
第二方面,本发明实施例提供了一种用于脑电、心电数据压缩的装置,包括:
拟合模块,用于根据设定误差对脑电心电数据进行分段拟合,获得多个线段集合,及每个线段的起点横坐标集合Hs、终点横坐标集合He、起点纵坐标集合Vs和终点纵坐标集合Ve;其中,所述起点纵坐标集合Vs和所述终点纵坐标集合Ve中每个纵坐标由数据区间表示;
获取模块,用于对所述起点纵坐标集合Vs进行压缩,并根据起点纵坐标压缩结果Gvs确定起点纵坐标的更新集合Vs*;其中,更新集合Vs*中每个纵坐标由数值表示;
所述拟合模块,还用于基于所述更新集合Vs*和所述起点横坐标集合Hs得到更新纵坐标上界DDU和下界DDL,对所述更新纵坐标上界DDU和下界DDL进行线段拟合,获得分段线段的斜率集合KK或终点纵坐标的更新集合Ve';
确定模块,用于根据所述更新集合Vs*、所述起点横坐标集合Hs和所述终点横坐标集合He,以及所述分段线段的斜率集合KK或所述终点纵坐标的更新集合Ve'确定压缩信息,以用于表示压缩后的脑电心电数据。
第三方面,本发明实施例提供了一种终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上第一方面或第一方面的任一种可能的实现方式所述方法的步骤。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上第一方面或第一方面的任一种可能的实现方式所述方法的步骤。
本发明实施例提供一种用于脑电、心电数据压缩的方法、终端及存储介质,通过根据设定误差对脑电心电数据进行分段拟合,获得多个线段集合,确定每个线段的起点横坐标集合Hs、终点横坐标集合He、起点纵坐标集合Vs和终点纵坐标集合Ve,经过线段拟合,减少了存储过程中存储的数据点的数量。对起点纵坐标集合Vs进行压缩,并根据起点纵坐标压缩结果Gvs确定起点纵坐标的更新集合Vs*,基于更新集合Vs*和所述起点横坐标Hs得到更新纵坐标上界DDU和下界DDL,对所述更新纵坐标上界DDU和下界DDL进行线段拟合,获得分段线段的斜率集合KK或终点纵坐标的更新集合Ve',根据更新集合Vs*、起点横坐标集合Hs和终点横坐标集合He,以及分段线段的斜率集合KK或终点纵坐标的更新集合Ve'确定压缩信息,以用于表示压缩后的脑电心电数据。为了提高压缩效率对线段拟合后的数据进行再压缩过程中,对起点纵坐标集合Vs进行压缩和解压,更新线段的起点纵坐标,基于更新后的数据再次进行线段拟合,再完成压缩过程,得到压缩后的数据流。本发明提供的脑电心电数据压缩方法经历了多次压缩,数据压缩率高。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1a是一实施例中流数据的数据点分布示意图;
图1b是另一实施例中流数据的数据点分布示意图;
图2是本发明实施例提供的用于脑电、心电数据压缩的方法的流程示意图;
图3是一具体实施例中基于最优不连续L∞-PCA算法对流数据进行压缩的结果示意图;
图4是一具体实施例中基于本发明实施例提供的用于脑电、心电数据压缩的方法进行压缩的结果示意图;
图5是另一具体实施例中基于F-Shift压缩算法对流数据起点终点纵坐标集合VsVe进行压缩的结果示意图;
图6是另一具体实施例中基于F-Shift压缩算法对流数据起点纵坐标集合Vs进行压缩的结果示意图;
图7是另一具体实施例中基于F-Shift压缩算法对流数据终点纵坐标集合Ve进行压缩的结果示意图;
图8是本发明实施例提供的用于脑电、心电数据压缩的装置的结构示意图;
图9是本发明实施例提供的终端的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图通过具体实施例来进行说明。
本发明涉及的压缩方法为面向流数据的压缩技术,旨在保障每个数据点的误差都在给定范围内的混合数据压缩技术,通过方法可以提高压缩率,并保证后续查询的精度,属定质压缩。特别是针对于脑电数据和心电数据的压缩处理,通过本发明提供的方法进行压缩,不仅可以提高数据的存储效率,节省数据存储空间,还能够保证后续查询脑电数据和心电数据的精度,进而提高根据脑电数据和心电数据执行其他研究分析过程或制定治疗方案的精确度。
定质压缩是指使压缩后的数据估计值与原始数据值的误差小于(在给定的度量空间)给定的数值。例如:最常用的压缩是在度量空间L2和L∞上。
其中,均值误差压缩,即L2度量,主要是使压缩后的数据估计值与原始数据值的整体平均误差即欧氏距离小于事先给定的临界值。
最大误差压缩,即L∞度量,主要是使每一个数据点的误差小于给定的临界值,提高压缩质量,因此,最大误差压缩算法又称为保质压缩。
在L2空间上的均值误差压缩通常不能保证基于压缩概要的分析结果的质量,其原因是均值误差压缩是通过被压缩数据的整体特性来度量,或者基于固定窗口来度量,例如,定量压缩中给定的量值和均值误差压缩的平均误差,而整体特性与流数据持续的、无限的特性不相吻合。而在L∞空间上的最大误差压缩控制每个数据点的误差,因此,对于每个数据点都是保质的,更为适合流数据和近似数据计算。
从构造方法上来看,流数据压缩方法可以分为层次压缩方法和非层次压缩方法。
其中,层次压缩方法,主要是小波分解的算法,基于Shift变换的压缩算法,例如:F-Shift压缩算法、S-Shift压缩算法、S+-Shift压缩算法等。
非层次压缩方法,主要是分段常数逼近(Piecewise Constant Approximation,PCA)算法、分段线性逼近(Piecewise Linear Approximation,PLA)算法、最大误差有界的PCA算法即L∞-PCA算法等。其中,PLA算法又分为连续分段PLA算法和不连续分段PLA算法。单纯采用一种层次压缩算法或非层次压缩算法进行数据压缩,其压缩率较低,有待进一步提高。层次压缩算法和非层次压缩算法都有一定的适应性,层次压缩算法对于流数据数值变化较小,流数据整体变化趋势平坦的数据类型能取得更好的压缩率。而非层次的压缩算法对于整体有明显的变化趋势的流数据能取得更好的压缩率。如图1a和1b所示,黑点表示原始数据,白点表示误差范围的上界和下界。对于图1a中整体变化趋势平坦,数值变化较小的流数据进行压缩更适合层次压缩算法。而如图1b所示,数据整体变化趋势明显,其中,不限于三个数据点,仅以三个数据点说明整体变化趋势明显,省略了后续数据点的显示。相较于图1a,图1b中的数据变换具有明显的趋势,更适合用非层次的压缩算法来压缩。
本发明提供的方法主要是基于层次压缩算法或非层次压缩算法的优点对数值变化较小并不断处于波动状态的数据进行压缩,以提高数据压缩率。例如:实现心电信号、脑电信号、金融领域股票数据和环境监测数据等数据类型的压缩。其中,以环境监测数据为例,在无线传感器网络领域,各个传感器节点不断采集周围的数据并形成传感器流数据。每个传感器所携带的能量十分有限,其中约80%的能量消耗在数据传输过程中。因此,如何压缩采集到的流数据,通过减少节点发送的数据量来减小能量消耗,并延长整个无线传感器网络的工作寿命,显得尤为重要。
本发明实施例主要以对脑电心电数据压缩对本发明提供的方法进行说明,可以沿用到金融领域股票数据和环境监测数据压缩领域,以及其他具有类似特征数据的压缩。
脑电心电数据主要以动态脑电图和心电图形式获取。动态脑电图和心电图是临床常用的心血管疾病的筛查手段,通过记录可疑患者自然生活状态下连续24小时以上的心电信号和脑电信号,发现常规脑电图和心电图不易发现的心律失常事件及ST段异常改变,获得重要诊断评价依据。
对脑电心电数据进行实时最大误差有界的数据压缩可以大幅度减少需要发送的数据量,且在不影响查询分析结果的前提下,可带来减少存储空间、降低通信带宽和降低通信功耗等优点,因此,通过实时压缩脑电心电数据降低通信功耗是降低动态脑电心电监测系统整体功耗的有效手段。在具体监测过程中,可选的,同时监测脑电和心电数据,或者,单独监测脑电数据或心电数据,则本发明实施例提供的方法,可以同时对脑电和心电数据进行压缩,或者,针对性的对脑电数据进行压缩或心电数据进行压缩。
本发明实施例压缩过程主要采用不连续分段PLA算法中的最优不连续L∞-PLA算法即OptimalPLR算法,并与F-Shift算法进行结合实现数据压缩。具体实施例过程中,可以采用其他层次压缩算法或非层次压缩算法。
以下关于OptimalPLR算法和F-Shift算法进行说明。
其中,采用OptimalPLR算法进行数据压缩包括:初始化阶段、压缩阶段和解压缩阶段。
其中,在初始化阶段,设定每一点误差下限和误差上限将原始流数据D={d1,d2,d3…dn}中的每一点dj(1≤j≤n)用数据区间表示,即数据区间上界集合可表示为数据区间下界集合可表示为
令pj代表原始数据点,即pj=(xj,yj)=(j,dj);令代表原始数据点pj的上界数据点,即令p j代表原始数据点pj的下界数据点,即x代表横坐标轴,y代表纵坐标轴。
在压缩阶段,计算每个分段线段的斜率上下界,以及经过点位置,同时,可计算出起点和终点位置的横坐标及纵坐标,然后实例化每一分段线段。
首先,从生成第一个分段线段开始。生成第一个分段线段从流数据的第一个数据点p1=(x1,y1),第二个数据点p2=(x2,y2)开始初始化。令 下极限直线即直线的斜为率上极限直线即直线的斜率为下凸壳为即下凸壳由点与点的连线构成;上凸壳为即上凸壳由点pb 与点pc 的连线构成。根据下一个点p=(x,y)的位置,判断是否需要更新下极限直线与上极限直线及凸壳的值,并进行调整。直到线段在直线与直线的外部,即y<l(x-xa)+ya-δu或y>u(x-xb)+yb+δl,此时可以得到第一个分段线段。
第一分段线段的起点位置横坐标为Hs1=1,终点位置的横坐标He1,斜率上界为斜率下界为经过点为po,即直线与直线的交点po=(xo,yo)。同时利用斜率上界以及点po,可以求出对应的直线方程,根据起点位置横坐标Hs1和终点位置横坐标He1,可分别求出横坐标Hs1处的纵坐标和He1处的纵坐标值同理,利用斜率下界以及点po,可分别求出横坐标Hs1处的纵坐标和He1处的纵坐标值
其次,基于上述过程生成第二个分段线段。
然后,取每一分段线段的斜率上下界内的任一数值作为实例化线段的斜率,令该线段过每一分段线段求得的交点po,如此,可以实例化每一分段线段。
其中,判断是否需要更新下极限直线与上极限直线及凸壳的值,并进行调整具体如下:
当线段在直线与直线内部或者至少与一条直线有交点时,如果p的上限在直线与直线内部,则更新上极限直线和下凸壳cvx;如果p的下限p在直线与直线内部,则更新下极限直线和上凸壳
其中,线段在直线与直线内部或者至少与一条直线有交点,即如下公式(1)成立时:
l(x-xa)+ya-δu≤y≤u(x-xb)+yb+δl (1)
其中,δu是点p的误差上限,δl是点p的误差下限。
p的上限在直线与直线内部,即如下公式(2)成立时:
p的下限p在直线与直线内部,即如下公式(3)成立时:
p=y-δl>l(x-xa)+ya (3)
更新上极限直线和下凸壳cvx,包括:
从上凸壳中找到点g,使得斜率最小;然后令pb =g;接下来删除上凸壳中点g所对应的时间点之前所有的点;更新将插入到下凸壳cvx末尾,并利用三角检验更新下凸壳cvx;
利用三角检验更新下凸壳cvx,包括:
从下凸壳cvx中时刻距离p点最近的三个点开始检查,如果中间的点位于另外两个点所构成直线的上部或者在直线上,则去掉中间这个点,然后依次后向检验下凸壳cvx内所有的点,得到新的cvx(new),最后令更新上极限直线。
更新下极限直线和上凸壳包括:
从下凸壳cvx中找到点g,使得斜率slope(g,p)最大;然后令接着删除下凸壳cvx中点g对应的时间点之前所有的点,更新斜率将p插入到上凸壳的末尾,并利用三角检查来更新上凸壳
利用三角检查来更新上凸壳包括:
从上凸壳中时刻距离p点最近的三个点开始检查,如果中间的点位于另外两个点所构成直线的下部或者在直线上,则去掉中间这个点,然后依次后向检验上凸壳内所有的点,得到新的最后令pc =p,更新下极限直线。
在解压缩阶段,利用每一分段线段的斜率与交点可求得该分段的直线方程。利用该方程,并根据每分段线段的起点和终点的横坐标,可将该分段内所有时刻点位置对应的纵坐标求出,因此可得到重构的数据。
采用F-Shift算法进行数据压缩包括:初始化阶段、压缩阶段和解压缩阶段。
其中,在初始化阶段,设定每一点的误差下限和误差上限将原始流数据,或称为行向量D={d1,d2,d3…dn},n=2Le(Le∈N+)中的每一点用数据区间表示,即
在压缩阶段,假设相邻区间为和i为奇数。依次对相邻两区间进行计算,得到更新的数据区间和转换系数b,并存储数据区间为低频分量,转换系数为高频分量。具体计算方法如下:
当时,则
当时,则b=0,其中,表示空集。
更新的数据区间中数据区间的端值为:
将更新的数据区间存储于原始行向量的处,将转换系数b存储于原始行向量的处,l1表示当前分解的级数,1≤l1≤Le。
对新生成的低频分量部分再次进行压缩,可得到新的低频分量和高频分量,逐级计算,直到计算到Le级,此时低频分量部分只剩下一个数据区间,可选区间内任意一点作为最后数据区间的近似数值。计算得到的各级系数可以构成压缩结果,即压缩系数组合行向量W。
数据重构方法:设压缩系数组合行向量W=[w1,w2,…,wn],每一级的重构公式为:
式中,和分别为该级行向量中存放位置为i、i+1的重构数据,i为奇数;当l2=1时,和为原组合行向量中存放位置为和处的数据;当l2>1时,和分别为前一级行向量中存放位置在和处的数据;l2表示当前重构的级数,l2=1,2,…Le。每一级重构时i=1,3,…m2-1。
对于最优不连续PLA算法的中间结果集合,即起点和终点纵坐标值是一个区间,我们可以对起点区间、终点区间纵坐标值的集合进行压缩,之后再解压缩,但是解压缩后的值所确定的起点、终点纵坐标确定的线段不一定满足最大误差要求,因此,本发明提供解决这个问题的方法,以提高数据压缩效率。
参见图2,其示出了本发明实施例提供的用于脑电、心电数据压缩的方法的实现流程图,详述如下:
在步骤S201中,根据设定误差对脑电心电数据进行分段拟合,获得多个线段集合,及每个线段的起点横坐标集合Hs、终点横坐标集合He、起点纵坐标集合Vs和终点纵坐标集合Ve。其中,起点纵坐标集合Vs和终点纵坐标集合Ve中每个纵坐标由数据区间表示。
可选的,脑电心电数据包括:心电数据和/或脑电数据。其中,采用非层次压缩算法进行压缩得到拟合的线段集合。可选的,非层次压缩算法选用PCA算法或L∞-PCA算法。优选的,非层次压缩算法选用最优不连续L∞-PLA算法即OptimalPLR算法,以控制每个数据点的误差,降低数据压缩误差。
在步骤S202中,对起点纵坐标集合Vs进行压缩,并根据起点纵坐标压缩结果Gvs确定起点纵坐标的更新集合Vs*;其中,更新集合Vs*中每个纵坐标由数值表示。
以上述最优不连续L∞-PLA算法的具体压缩过程可知,在提高压缩率的过程中,最优不连续PLA的中间结果集合,即起点纵坐标和终点纵坐标是一个区间,我们可以对起点纵坐标的区间、终点纵坐标的区间的集合进行压缩。在数据还原过程中再解压缩,尽管能够保证线段的起点和终点的纵坐标还原值在误差范围内,但是以重构点连接后得到的分段线段并不能保证每一点的重构误差都在给定范围内。因此,在本发明实施例中,首先对起点纵坐标集合Vs进行压缩,暂时不对终点纵坐标压缩。
在步骤S203中,基于更新集合Vs*和起点横坐标Hs得到更新纵坐标上界DDU和下界DDL,对更新纵坐标上界DDU和下界DDL进行线段拟合,获得分段线段的斜率集合KK或终点纵坐标的更新集合Ve'。
在步骤S202中针对起点纵坐标压缩和重构后,重构的起点纵坐标误差小于设定误差,进而固定每个分段线段起点的位置,再次进行线段拟合,可以减小每个分段线段的终点的纵坐标范围,保证以重构点连接后得到的分段线段中每一点的重构误差都在给定范围内。
在步骤S204中,根据更新集合Vs*、起点横坐标集合Hs和终点横坐标集合He,以及分段线段的斜率集合KK或终点纵坐标的更新集合Ve'确定压缩信息,以用于表示压缩后的脑电心电数据。
在一种可能的实现方式中,在步骤S204之后,还包括:
存储更新集合Vs*、起点横坐标集合Hs和终点横坐标集合He,以及分段线段的斜率集合KK或终点纵坐标的更新集合Ve'。
在一种可能的实现方式中,根据脑电类型和心电类型对应存储更新集合Vs*、起点横坐标集合Hs和终点横坐标集合He,以及分段线段的斜率集合KK或终点纵坐标的更新集合Ve'。即在步骤S201中脑电心电数据包括脑电数据和心电数据时,根据本实施提供的方案完成数据压缩后,将压缩后的数据按照脑电类型和心电类型进行分类存储,便于后续脑电心电数据的查询和针对性分析。
其中,如图1a所示,压缩后的线段包括斜线。存储更新集合Vs*、起点横坐标集合Hs、终点横坐标集合He以及分段线段的斜率集合KK,或者,存储更新集合Vs*、起点横坐标集合Hs、终点横坐标集合He以及终点纵坐标的更新集合Ve'均可得出分段线段。
本发明实施例,通过根据设定误差对脑电心电数据进行分段拟合,获得多个线段集合,确定每个线段的起点横坐标集合Hs、终点横坐标集合He、起点纵坐标集合Vs和终点纵坐标集合Ve,经过线段拟合,减少了存储过程中存储的数据点的数量。对起点纵坐标集合Vs进行压缩,并根据起点纵坐标压缩结果Gvs确定起点纵坐标的更新集合Vs*,基于更新集合Vs*和起点横坐标Hs得到更新纵坐标上界DDU和下界DDL,对更新纵坐标上界DDU和下界DDL进行线段拟合,获得分段线段的斜率集合KK或终点纵坐标的更新集合Ve',根据更新集合Vs*、起点横坐标集合Hs和终点横坐标集合He,以及分段线段的斜率集合KK或终点纵坐标的更新集合Ve'确定压缩信息,以用于表示压缩后的脑电心电数据。为了提高压缩效率对线段拟合后的数据进行再压缩过程中,对起点纵坐标集合Vs进行压缩和解压,更新线段的起点纵坐标,基于更新后的数据再次进行线段拟合,再完成压缩过程,得到压缩后的数据流。本发明提供的脑电心电数据压缩方法经历了多次压缩,数据压缩率高。
在不同实施例中,步骤S204中确定压缩信息的方式不同。
在一种可能的实现方式中,步骤S204包括:
S2041,对终点纵坐标的更新集合Ve'进行压缩,获得终点纵坐标的压缩结果Gve。
其中,更新集合Ve'中每个纵坐标基于数据区间表示,在具体的压缩过程中,利用层次压缩方法,可选的,基于Shift变换的压缩算法,例如:F-Shift压缩算法、S-Shift压缩算法、S+-Shift压缩算法等。优选的,基于前述F-Shift算法进行压缩。
S2042,以更新集合Vs*、起点横坐标集合Hs、终点横坐标集合He和终点纵坐标的压缩结果Gve作为压缩信息。
在一种可能的实现方式中,步骤S204包括:
S2043,对分段线段的斜率集合KK进行压缩,获得斜率的压缩结果Gkk。
其中,更新集合Ve'中每个纵坐标基于数据区间表示,在具体的压缩过程中,利用层次压缩方法,可选的,基于Shift变换的压缩算法,例如:F-Shift压缩算法、S-Shift压缩算法、S+-Shift压缩算法等。优选的,基于前述F-Shift算法进行压缩。
S2044,以更新集合Vs*、起点横坐标集合Hs、终点横坐标集合He和斜率的压缩结果Gkk作为压缩信息。
该压缩过程对斜率集合KK进行压缩可以减少压缩过程中数据的存储量。但是在数据解压缩完成重构过程中,需要执行基于分段线段的斜率集合KK和起点纵坐标更新集合Vs*确定终点的纵坐标的步骤。
在一种可能的实现方式中,步骤S202中,对起点纵坐标集合Vs进行压缩,包括:
根据相邻两个纵坐标确定第一转换系数,并根据第一转换系数确定更新区间;
在更新区间为多个时,根据相邻两个更新区间确定第二转换系数,并根据第二转换系数确定再更新区间;
在再更新区间为一个时结束压缩,将第一转换系数和第二转换系数组合作为纵坐标压缩结果Gvs;其中,第二转换系数包括一个或多个。
在一种可能的实现方式中,据起点纵坐标压缩结果Gvs确定起点纵坐标的更新集合Vs*,包括:
由压缩结果Gvs的第二级开始,获取当前级数对应的转换系数和前一级的解压缩结果;
基于当前级数对应的转换系数和前一级的解压缩结果确定当前级数的解压缩结果。
其中,具体解压缩过程可以依据上述F-shift算法的解压缩过程。
在一种可能的实现方式中,根据相邻两个纵坐标确定第一转换系数包括:
当相邻两个纵坐标的交集为空集时,基于两个纵坐标的端值确定第一转换系数;
当相邻两个纵坐标的交集为空集时,确定第一转换系数为零。
在一种可能的实现方式中,两个纵坐标的端值与第一转换系数之间关系如下:
其中,d i和d i+1为纵坐标的左端点;和为纵坐标的右端点;b为第一转换系数;i为奇数;1≤i≤m1;l1为当前分解级数;n为原始数据个数。
在一种可能的实现方式中,更新区间的左端点为:
d=max{d i-b,d i+1+b}
其中,d为更新区间的左端点;d i和d i+1为纵坐标的左端点;和为纵坐标的右端点;b为第一转换系数;i为奇数;1≤i≤m1;l1为当前分解级数;n为原始数据个数。
更新区间的右端点为:
其中,为更新区间的右端点;d为更新区间的左端点;d i和d i+1为纵坐标的左端点;和为纵坐标的右端点;b为第一转换系数。
具体的,将更新的数据区间存储于原始行向量的处,将转换系数b存储于原始行向量的处,l1表示当前分解的级数,1≤l1≤Le。直至计算到Le级,此时只剩下一个数据区间,选区间内任意一点作为最后数据区间的近似数值。并将计算得到的各级系数组合作为纵坐标压缩结果Wvs。
在一种可能的实现方式中,步骤S203中,基于更新集合Vs*、起点横坐标集合Hs和终点横坐标集合He进行线段拟合,包括:
基于更新集合Vs*和起点横坐标集合Hs更新脑电心电数据中对应的数据点的值;
基于更新集合Vs*、终点横坐标集合He和脑电心电数据中其他数据点的值进行线段拟合,并确定终点纵坐标的更新集合Ve'。
在一种可能的实现方式中,步骤S201中,根据设定误差对脑电心电数据进行分段拟合,获得多个线段集合,包括:
根据脑电心电数据的多个数据点和设定误差构建多个数据区间,并将脑电心电数据中每个数据点基于数据区间表示;其中,设定误差包括误差上限和误差下限;
从首个数据点开始与相邻数据点确定上极限直线、下极限直线、上凸壳和下凸壳;
在待拟合数据点对应的数据区间确定线段,与上极限直线或下极限直线相交时,基于待拟合数据点更新上极限直线、下极限直线、上凸壳和下凸壳;并在待拟合数据点对应的数据区间确定线段,与上极限直线或下极限直线无交点,且在上极限直线和下极限直线的范围外时,确定待拟合数据点为线段终点。
在一些实施例中,确定上极限直线、下极限直线、上凸壳和下凸壳,包括:
确定第一数据点和第二数据点的上限值和上限值;
基于第一数据点的下限值和第二数据点的上限值确定上极限直线;
基于第一数据点的上限值和第二数据点的下限值确定下极限直线;
基于第一数据点的上限值和第二数据点的上限值确定下凸壳;
基于第一数据点的下限值和第二数据点的下限值确定上凸壳。
上述极限直线、下极限直线、上凸壳和下凸壳的具体确定过程可参见前述关于最优不连续L∞-PLA算法的集体过程。
以一具体实施例对该方法进行说明:
原始流数据D={d1,d2,…d10}={3,4,3,5,6,2.5,3.5,2.5,4.5,5.5},原始流数据可由点集P={p1,p2,…,p10}表示。各数据点为图3黑色圆点,给定误差上限和误差下限相等均为1,空心圆点代表该原始流数据点的上界点和下界点p。利用上述的非层次压缩算法,例如:最优不连续L∞-PLA算法,即OptimalPLR算法可得到两个分段线段。基于两个分段线段可以确定压缩过程的中间结果,线段起点的纵坐标集合Vs={vs1,vs2}={[2,3],[1.5,2.5]},以及,线段终点纵坐标集合Ve={ve1,ve2}={[5,6],[4.5,5.5]}。其中,线段的纵坐标和横坐标通过数据区间表示。对于OptimalPLR算法来说,此时只需要存储每一分段中的任意一段就行,假设实例化的分段线段为p1 p5 和线段p6 p10 ,则需存储的线段的纵坐标集合为[vs1,vs2,ve1,ve2]=[3,2.5,5,4.5],线段的横坐标集合为[hs1,hs2,he1,he2]=[1,6,5,10],此时,线段的纵坐标和横坐标通过数值表示。
如果利用上述实施例提供的F-shift压缩算法对中间结果Vs和Ve组成的集合VsVe={[2,3],[1.5,2.5],[5,6],[4.5,5.5]}进行压缩的话,可以进一步提高压缩率。如图5所示,原本对于线段p1 p5 和线段p6 p10 来说纵坐标共需要存储4个数值[vs1,vs2,ve1,vs2]=[3,2.5,5,4.5],经过压缩后,需要存储2个非零系数[3.5,-1.5]即可。但是根据重构数据[2,2,5,5]来重构两个分段线段,如图3中灰色线段p1p5 ,可以看到第一段分段线段中p2点不能满足重构误差在给定范围内。因此,基于我们本发明提供的方法的主旨,可以采用F-Shift压缩并解压后,以保证每一点都能满足误差要求。
具体的在基于OptimalPLR算法得出中间结果Vs={vs1,vs2}={[2,3],[1.5,2.5]},Ve={ve1,ve2}={[5,6],[4.5,5.5]}之后,即对线段起点的纵坐标集合Vs={vs1,vs2}={[2,3],[1.5,2.5]}采用上述的F-shift压缩算法进行压缩,可得到图6的压缩结果。根据图6可以看出原本需要存储2个数值vs1=3,vs2=2.5,经过F-shift压缩后仅需存储1个非零系数2.2即可。之后进行解压缩可得到重构数据如图4所示的点和然后,执行步骤S202,即用替换数据点和p1 纵坐标,用数值替换数据点和p6 纵坐标,其他数据点的上下界数据点不变,这样做可以保证起点固定,最终得到的终点数据范围进一步缩小。压缩再解压后的分段线段,可保证每一点的重构误差在给定范围内。接下来执行步骤S203,即对更新后的数据再一次基于OptimalPLR算法进行压缩,可得到图4结果,其中灰色线段和分别为第一个分段线段的上界线段和下界线段,灰色线段和分别为第二个分段线段的上界线段和下界线段。此时,各线段终点的纵坐标集合为Vde={vde1,vde2}={[5.4,5.8],[4.5,4.8]},与图3对比可看出,每一个分段线段的终点纵坐标的数据范围进一步缩小,因此,可以保证在此数据基础上进一步压缩并解压后实例化的每一段线段都满足重构误差要求。接下来执行步骤S204,对新得到的终点纵坐标集合Vde进行进一步压缩,以提高压缩率,可以得到图7所示结果,并以该步骤得到压缩后的数据作为压缩后的流数据,进行存储。
前述实施例提供的方法针对于脑电心电数据的压缩,在具体应用中还需要对压缩数据进行解压才能完成数据的重构。
首先,记纵坐标压缩结果Gve=[w1,w2,…,wn]或Gkk=[w1,w2,…,wn],基于如下重构公式进行数据重构:
式中,和分别为该级行向量中存放位置为i、i+1的重构数据,i为奇数;当l2=1时,和为原组合行向量中存放位置为和处的数据;当l2>1时,和分别为前一级行向量中存放位置在和处的数据;l2表示当前重构的级数,l2=1,2,…Le。每一级重构时i=1,3,…m2-1,解压L级后,可得到重构的数据。
针对按步骤S2041和S2042压缩方式得到的压缩结果进行解压,可以得到终点纵坐标解压缩集合即解压后的终点纵坐标。
然后,根据起点纵坐标更新集合Vs*、终点纵坐标解压缩集合Vde*、起点横坐标集合Hs和终点横坐标集合He可以求得每一分段的直线方程,利用直线方程可求出每分段线段内的每个数据点的纵坐标,进而得到最后的重构数据。
针对按步骤S2043和S2044压缩方式得到的压缩结果进行解压,可以得到线段斜率解压缩集合即解压后各分段线段的斜率。
然后,起点纵坐标更新集合Vs*、线段斜率解压缩集合KK*、起点横坐标集合Hs和终点横坐标集合He,可以求得每一分段的直线方程,利用直线方程可求出每分段线段内的每个数据点的纵坐标,进而得到最后的重构数据。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
以下为本发明的装置实施例,对于其中未详尽描述的细节,可以参考上述对应的方法实施例。
图8示出了本发明实施例提供的用于脑电、心电数据压缩的装置的结构示意图,为了便于说明,仅示出了与本发明实施例相关的部分,详述如下:
如图8所示,用于脑电、心电数据压缩的装置包括:拟合模块801、获取模块802和确定模块803。
拟合模块801,用于根据设定误差对脑电心电数据进行分段拟合,获得多个线段集合,及每个线段的起点横坐标集合Hs、终点横坐标集合He、起点纵坐标集合Vs和终点纵坐标集合Ve;其中,起点纵坐标集合Vs和终点纵坐标集合Ve中每个纵坐标由数据区间表示。
获取模块802,用于对起点纵坐标集合Vs进行压缩,并根据起点纵坐标压缩结果Gvs确定起点纵坐标的更新集合Vs*;其中,更新集合Vs*中每个纵坐标由数值表示。
拟合模块801,还用于基于更新集合Vs*和起点横坐标Hs得到更新纵坐标上界DDU和下界DDL,对更新纵坐标上界DDU和下界DDL进行线段拟合,获得分段线段的斜率集合KK或终点纵坐标的更新集合Ve'。
确定模块803,用于根据更新集合Vs*、起点横坐标集合Hs和终点横坐标集合He,以及分段线段的斜率集合KK或终点纵坐标的更新集合Ve'确定压缩信息,以用于表示压缩后的脑电心电数据。
本发明实施例,通过根据设定误差对脑电心电数据进行分段拟合,获得多个线段集合,确定每个线段的起点横坐标集合Hs、终点横坐标集合He、起点纵坐标集合Vs和终点纵坐标集合Ve,经过线段拟合,减少了存储过程中存储的数据点的数量。对起点纵坐标集合Vs进行压缩,并根据起点纵坐标压缩结果Gvs确定起点纵坐标的更新集合Vs*,基于更新集合Vs*和起点横坐标Hs得到更新纵坐标上界DDU和下界DDL,对更新纵坐标上界DDU和下界DDL进行线段拟合,获得分段线段的斜率集合KK或终点纵坐标的更新集合Ve',根据更新集合Vs*、起点横坐标集合Hs和终点横坐标集合He,以及分段线段的斜率集合KK或终点纵坐标的更新集合Ve'确定压缩信息,以用于表示压缩后的脑电心电数据。为了提高压缩效率对线段拟合后的数据进行再压缩过程中,对起点纵坐标集合Vs进行压缩和解压,更新线段的起点纵坐标,基于更新后的数据再次进行线段拟合,再完成压缩过程,得到压缩后的数据流。本发明提供的脑电心电数据压缩方法经历了多次压缩,数据压缩率高。
图9是本发明实施例提供的终端的示意图。如图9所示,该实施例的终端9包括:处理器90、存储器91以及存储在所述存储器91中并可在所述处理器90上运行的计算机程序92。所述处理器90执行所述计算机程序92时实现上述各个用于脑电、心电数据压缩的方法实施例中的步骤,例如图3所示的步骤S301至步骤S303。或者,所述处理器90执行所述计算机程序92时实现上述各装置实施例中各模块/单元的功能,例如图8所示模块801至803的功能。
示例性的,所述计算机程序92可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器91中,并由所述处理器90执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序92在所述终端9中的执行过程。例如,所述计算机程序92可以被分割成图8所示的模块801至803。
所述终端9可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端9可包括,但不仅限于,处理器90、存储器91。本领域技术人员可以理解,图9仅仅是终端9的示例,并不构成对终端9的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端还可以包括输入输出设备、网络接入设备、总线等。
所称处理器90可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器91可以是所述终端9的内部存储单元,例如终端9的硬盘或内存。所述存储器91也可以是所述终端9的外部存储设备,例如所述终端9上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器91还可以既包括所述终端9的内部存储单元也包括外部存储设备。所述存储器91用于存储所述计算机程序以及所述终端所需的其他程序和数据。所述存储器91还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置/终端和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个用于脑电、心电数据压缩的方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。