一种传感网络数据压缩编码/解码方法
【技术领域】
本发明公开了一种数据压缩编码/解码方法,具体来说是一种应用于无线网络应用技术,特别是一种用于粮食仓储的无线传感器网络的数据编码/解码方法。
【背景技术】
俗话说:“民以食为天”,即使在高新技术发展的今天,人们的生存也离不开粮食,它关系到社会的发展和人民生活的安定。但是在水分高、气温也较高时,粮食10余天就会发霉,若不及时处理,粮食就霉坏变质,轻则造成经济损失,重则人命关天。粮食在储存过程中,粮情(温度、湿度、水分、害虫等)的变化,直接影响到粮食品质的好坏。
无线传感网络的粮情测控系统集成了粮仓内粮食的温度、湿度、虫害等信息的采集、数据处理和无线通信等多种功能,实际应用中,电磁波在传输过程中由于温度、湿度、噪音等环境因素的影响,使得无线传感网络节点在通信过程中常发生错误,造成物理链路的不可靠。通常解决这一问题的最简单途径是数据重传,既若数据发送出错,采用重新发送的方法。由于传感器网络节点传输1比特数据所消耗的能量相当于执行3000条指令的能耗,通信所需能量远大于计算所开销的能量。此方法对于采用电池供电的传感网络来说,耗能较大将缩短其网络的生命周期。因此,在保障网络端到端可靠性时要尽量减少通信传输的能量开销,延长电池供电的时间。
关于传感器网络中的数据压缩技术的研究,主要有Ioannidis和Poosala提出了利用直方图压缩数据的方法。Losif Lazaridis等通过对传感器网络中的时间序列的研究,提出了直接在传感器节点上压结合实际原数据,只有当出查询精度要求时才将压缩的数据发送到基站的数据处理方法。Antoios Deligiannikis等提出了利用同一传感器节点多个属性数据或不同时间段内数据间的相关性压缩历史数据的技术。K. chan提出了利用小波技术压缩时间序列的方法。Aushik和Chakrabarti等提出了为数据建立小波快照,并在压缩的结构上直接进行查询处理的方法。但是这些数据压缩算法存在计算复杂度高,无法满足用户对数据的精度要求的问题。
关于无损数据压缩的方法非常多,其中香农—费诺编码、霍夫曼编码、算术编码均是与概率相关的,基于统计模型的编码方法,且针对的是单个字符。字典编码是基于字典模型的,针对的是字符串。
然而,温室传感数据多是一个个浮点型数值,若将其看成字符串,则是由0~9的数字和小数点组成的。以温度数据为例,采集数据呈现缓慢变化的特点。因此,各个数据出现的概率相差不大,用基于概率的编码方法无明显优势;同样,在一段时间内,数据会缓慢地升高或降低,若将感知数据看作字符串用基于字典的方法来压缩,则不容易找到较长的参考数据,因此无法取得好的压缩效果。
【发明内容】
本发明涉及一种传感网络数据压缩编码/解码方法,用以解决传感网络传输1比特数据所消耗的能量相当于执行3000条指令的能耗即通信所需能量远大于计算所开销的能量的技术问题。
本发明是采用以下技术手段解决上述技术问题的:一种传感网络数据压缩编码/解码方法,包括以下步骤:
步骤一:各传感节点采样数据,并将采样数据发送到测控分机;
步骤二:测控分机依据接收到的采样数据组,计算出一参考值;
步骤三: 测控分机将各采样数据与参考值作差,得到相对游程长度数据;
步骤四:测控分机对各相对游程长度数据进行编码,形成二进制编码数据,一组相对游程长度数据编码后形成编码数据组;
步骤五:测控分机将编码数据组和参考值传输到测控主机;
步骤六:测控主机依据参考值解码编码数据组得到各采样数据。
所述步骤三的参考值可以按如下步骤计算:
计算采样数据组的平均值avg;
统计采样数据组中各值的出现概率
,依据公式H=
计算该采样数据组信息熵H;
进一步,所述步骤四包括以下步骤:
步骤1:测控分机取相对游程长度数据值L,依据公式
,计算出编码数据后缀代码的长度x;
步骤2:依据公式
计算出y值,取y值作为后缀,后缀代码长度为x位;
步骤3:用编码数据的前缀代码标识相对游程长度数据的正负,前缀代码的长度也为x位,前缀数值二进制代码的最后一位与其前面所有比特位的值相异,前缀和后缀共同组成编码数据;
步骤4:重复步骤1至步骤4,直至将所有相对游程长度数据编码完毕,形成编码数据组。
所述前缀的二进制代码最后一位为0代表正/负数,最后一位为1代表负/正数。
相对游程长度数组中绝对值最大的数,其绝对值在[16,64]区间时,压缩效果最优。
更进一步,步骤六中所述解码包括下列步骤:
步骤:有限状态机发装载信号将寄存器中的参考值装载入第二计数器;
步骤
:有限状态机按位读入输入信号,即编码数据,根据信号跳变的发生确定前缀代码长度并存储于第三计数器中,同时根据所述跳变是从高电平向低电平跳变或低电平向高电平跳变来确定相对游程长度数据的正或负;
步骤
:有限状态机根据第三计数器中存储的前缀代码长度数值,读入相同长度的后缀代码数据,并将后缀代码变换后存储于第一计数器中,所述变换指在x位长度的后缀代码高位方向的第(x+1)位上置值1,形成(x+1)位长度的二进制代码;
步骤
:有限状态机根据相对游程长度数据的正或负控制第二计数器做与第一计数器的值相关的若干次自增或自减操作,得到解码值;
步骤
:有限状态机依据第二计数器存放的解码值,输出解码信号;
步骤(1):在第一计数器的值大于4的情况下,有限状态机根据相对游程数据的正/负控制第二计数器自增/减1;
步骤(2):有限状态机控制第一计数器自减1;
步骤(3):重复步骤(1)至(3),直至第一计数器的值等于4,遂得到解码值。
所述步骤
的输出解码信号可以为:有限状态机输出m位0/1,并在最后输出一位1/0,m为解码值。
本发明的优点在于:针对传感网络感知数据重复性强,差值小的特点,提出一种基于信息熵的相对游程编码方法,取得很好的压缩效果。只传输压缩后的数据,可以减少数据传输量,减少功耗,增加传感网络电池的寿命。
【附图说明】
图1为本发明中解码单元的结构框图。
【具体实施方式】
下面结合实施例对本发明作进一步的描述,以使本领域的技术人员可以更好的理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
本发明所述的数据编码方法采用不等间距编码方式,即在进行分组时,每个组的大小根据其出现频率进行了适当调整,这新的分组更符合实际数据中游程的分布。
为了便于说明,不失一般性,设某个测控节点有十个温度传感节点,其采样数据值分别为15、15、17、16、15、15、15、16、15、15。
参考值的计算过程:
上述十个温度传感节点采样数据的平均值为:15.4;
值15出现的概率为0.7,值16出现的概率为0.2,值17出现的概率为0.1;
按信息熵公式H=
进行计算,其中p
i为各值出现的概率,得到H=
= = 0.348225373;
将H与平均值相加后得到15.74822537,向上取整后得到16。即,本组采样数据基于熵的参考值为16。
在其他实施例中,参考值也可以取采样数据组的平均值、最大值、最小值等。
编码过程:
计算每个采样数据相对于基于熵的参考值16的相对游程长度,经计算,相对游程长度分别为-1,-1,+1,0,-1,-1,-1,0,-1,-1。
参照表1,将相对游程数据进行分组,每个相对游程数据可能被分入A
1、A
2、A
3、……、A
s中任一分组中,最大分组序号
,其中L
max为相对游程长度中最大绝对值,
为取整符号。本实施例中,L
max=1,s=1。
在其他实施例中,Lmax的取值范围为[16,64]时,压缩效果最优。
具体到一个长度为L的相对游程长度,分组时将分属于第n个分组A
n,其中,
,n为正整数,
为向上取整符号,“||”为取绝对值符号;如表1所示,第
n个分组A
n 中包含2
n+1个元素,每个相对游程长度对应所属分组中的一个代码字;依据公式
计算编码数据后缀代码的长度x,再依据公式
计算出y值,取y值作为后缀,后缀代码长度为x位。
本实施例中,三种相对游程长度值0、+1和-1均分入A1组,具体计算过程如下:
相对游程长度为-1时,n=1,x=2,y=1-4+4=1,对应后缀二进制代码为01;相对游程长度为0时,n=1,x=2,y=0-4+4=0,对应后缀二进制代码为00;相对游程长度为1时,n=1,x=2,y=1-4+4=1,对应后缀二进制代码为01;
再冠以表示正负的前缀,本实施例中三个相对游程长度值均分入A1组,因此前缀代码长度也均为2。因此,以二进制代码10表示正,二进制代码01表示负;
最终前缀和后缀共同组成的十个采样数据相对游程长度的编码为:0101,0101,1001,1000,0101,0101,0101,1000,0101,0101。
在其他实施例中,也可以用01表示正,10表示负。
测控分机将上述编码和参考值16传输给测控主机。
表1
解码过程:
测控主机接收到测控分机传输来的参考值及编码数据后,运行相应的解码单元来恢复采样数据。
该解码必须控制在一定的规模范围内,同时又要具有较好的扩展性。本实施例的解码单元结构框图如图1所示,包括第一计数器1、第二计数器2、第三计数器3、有限状态机4和寄存器5。该解压电路结构简单,电路规模小,不会明显地引入硬件成本。
本实施例的解码单元的主要工作步骤如下:
1) 首先,上电复位后,寄存器5的值置为参考值;
2) 下一个时钟周期,有限状态机4发装载信号,第二计数器2装入寄存器5的值;
3) 有限状态机4发出使能信号,发第三计数器3自增1信号,连续读取位输入信号的值,判断其跳变状态;跳变发生后,继续读入代码字后缀,发第一计数器1移位装入信号,发第三计数器3自减1信号,将后缀与常数1级联后一起移入第一计数器1;如果为从高电平到低电平,将第二计数器2自增1信号设置为有效,如果为从低电平到高电平,将第二计数器2自减1信号设置为有效;
4) 如果第二计数器2的自增1信号为有效,在有限状态机4的控制下,第一计数器1作自减1操作,同时第二计数器2作自增1操作,此过程一直进行到第一计数器1的值为4,即第一计数器1值的二进制代码为100,对应十进制数为4;如果第二计数器2的自减1信号为有效,在有限状态机的控制下,第一计数器1作自减1操作,同时第二计数器2作自减1操作,此过程一直进行到第一计数器1的值为4,即第一计数器1值的二进制代码为100,对应十进制数为4;
5) 在有限状态机4的控制下,第二计数器2作自减1操作,同时输出1位0/1,此过程一直进行到第二计数器2的值为0,最后输出一位1/0;
在其他实施例中,有限状态机4也可以直接输出第二计数器2值的代码;
6) 重复步骤2)至6),一直到所有数据全部解码结束。
实验结果:
本发明方案在某储粮用户仓库的无线粮情测控产品上做内部测试,该单位共有34个粮仓、4044个温度传感器节点。实验人员共抽取了三天的实验数据,其实验结果如表2所示。可见,本发明压缩效果优秀。
时间
|
原始数据(byte)
|
压缩后数据(byte)
|
压缩率(%)
|
第一天 |
224152 |
55262 |
75.35 |
第二天 |
224152 |
56314 |
74.88 |
第三天 |
224152 |
57696 |
74.26 |
表2
表2中,压缩率的计算公式为:
压缩率=(原始数据-压缩后数据)/原始数据*100% 。