数据采集滤波

2024-05-30

数据采集滤波(共9篇)

数据采集滤波 篇1

0 引言

在电网数据采集系统中,无论是测量用还是保护用,我们所关心的数据大多数都是工频分量,因此可以在采样之前将最高信号频率分量限制在一定频带之内,即限制输入信号的最高频率。这样一方面降低了对硬件的处理速度的要求;另一方面,根据奈奎斯特采样定律可知,当以频率fs对输入信号进行采样时,能够正确还原的信号的最高频率为fs/2,对于频率超过fs/2的输入信号,如果不在A/D转换之前加以滤除,都将以“合法”的身份呈现在0到fs/2频谱范围内,从而造成频率混叠,消除这种混叠现象的唯一办法是在信号到达A/D转换器之前先对其进行低通滤波,滤除其中的高频噪声和一些峰值噪声[1,2,3,4]。

1 无源低通滤波器

传统方式的低通滤波器设计常采用无源器件,利用电阻和电容来实现,图1(a)为简单低通滤波器的实现电路。它的电压传递函数为:

undefined。 (1)

截止频率fc为:

undefined。 (2)

其频率响应如图1(b)所示,虽然这种电路能执行基本的滤波功能,但在实际应用中存在如下几个缺点:①输出阻抗很高,负载效应大,当输出端有负载时,截止频率fc可能会改变;②最大增益将降低到小于1。

2 有源低通滤波器

与无源滤波器相比,有源滤波器有2个突出的优点[5]:①最大增益或传递函数的最大值可以大于1;②负载效应小,这意味着滤波器的输出响应基本上与滤波器驱动的负载无关。

2.1 单极点低通滤波器

图2(a)为单极点有源滤波器的实现电路。该滤波器的输入阻抗很高,等于运放的输入阻抗,对于CMOS运放,其输入阻抗在1013数量级;与无源滤波器相比,该滤波器电路的输出阻抗很低,典型值为几十欧姆至几百欧姆。它的电压传递函数为:

undefined。 (3)

截止频率fc为:

undefined。 (4)

其频率响应如图2(b)所示,在低于fc的频段内,直流增益A=1+R2/R1,也就是说该滤波器在滤除噪声的同时还能将其通带内的信号按指定比例放大,这一点很有实际意义。在实际应用中,为了减少输入偏置电流的影响,往往在同相输入端串联一个补偿电阻Rc[6,7]:

Rc=(R1‖R2)-rs 。 (5)

其中:rs为信号源阻抗。

2.2 双极点Butterworth低通滤波器

图3为双极点Butterworth低通滤波器,直接采用频域分析方法得到其传递函数为[8,9]:

undefined。 (6)

截止频率fc为:

undefined。 (7)

Butterworth低通滤波器是幅值最大的平坦滤波器,传递函数的设计应使其幅值在滤波器通带内尽可能地平坦。通过取传递函数对频率的导数,使导函数在通带中有尽可能多的等于0的点,这些等于0的点就是低通滤波器的零点频率。直流增益A=1+Rf/R1,但是为了使传递函数的幅值在滤波器通带内尽可能地平坦,A只能取undefined,所以在实际应用中存在很大的局限性。

3 设计实例

在微机综合保护系统设计中,为了提取工频分量,并滤除高次谐波分量的影响,需要在A/D转换之前添置模拟低通滤波器。本设计实例分别选取单极点有源滤波器和双极点Butterworth滤波器来实现所需的设计要求。

对于周波24点采样系统,即采样频率fs=1.2 kHz的数据采集系统来说,只要滤波器的截止频率fc满足fc≤600 Hz,即可滤除不需要的信号。为了达到更好的滤波效果,本实例选取fc=100 Hz,直流增益A的选取可以根据实际需要设定,在此为方便比较两种不同滤波器的性能,选取直流增益A=1.6。

3.1 选用单极点有源低通滤波器

由fc=100 Hz,A=1.6可得:

undefined

选C2=1 μF,则有:R2=1.59 kΩ≈1.6 kΩ,R1≈2.7 kΩ。在忽略信号源阻抗的前提下,补偿电阻Rc=R1‖R2≈1 kΩ。

该滤波电路的幅频特性和相频特性如图4所示。

3.2 选用双极点Butterworth低通滤波器

由fc=100 Hz,A=1.6可得:

undefined

选C=1 μF,Rf=6 kΩ,则有:R≈1.6 kΩ,R1=10 kΩ。该滤波电路的幅频特性和相频特性如图5所示,单位阶跃响应曲线图如图6所示。

假若fc=100 Hz保持不变,把直流增益A改为2.3,则易得在该条件下,单极点滤波器与Butterworth滤波器的单位阶跃响应曲线图,见图7。

分析比较单极点滤波器与双极点Butterworth滤波器的Bode图及单位阶跃响应曲线图可知:①单极点滤波器的系统稳定性更好,但幅频特性较差;②双极点Butterworth滤波器幅频特性较好,通带更为平坦,并且在过渡带的衰减比单极点滤波器快,只是该滤波器系统稳定性较差;③当增益A改变时,双极点低通滤波器的系统超调量增大,阶跃响应的振荡性变强,稳定性明显变差,而单极点低通滤波器的阶跃响应特性基本不受增益A的影响,仍然保持良好的系统稳定性。

综合上述分析可以得出:单极点低通滤波器在满足一定滤波效果的同时,又可通过调节电阻R1改变直流增益A的值,以达到我们所需的输出信号范围。凭借这一特点,单极点低通滤波器在电网数据采集中得到了广泛的应用。

4 结论

在数据采集系统中,模拟低通滤波器是关键的组成部分,用以滤除或衰减高频噪声的影响,提高系统的精度。本论文先从理论角度剖析了无源滤波器与两种常见有源滤波器的优缺点,然后给出两种常见有源滤波器的设计实例,通过详细地对比分析得出:单极点低通滤波器的适用范围更广,更具有现实应用价值。

参考文献

[1]Bonnie Baker.嵌入式系统中的模拟设计[M].李喻奎,译.北京:北京航空航天大学出版社,2006.

[2]彭永胜,王太勇.测控系统中的低通滤波技术[J].精密制造与自动化,2003(S1):108-110.

[3]唐振.模拟低通滤波器的设计[J].安徽水利水电职业技术学院学报,2008(1):56-57.

[4]黄知涛,郑龙席.高性能数据采集系统中信号的低通滤波原理及实践[J].测控技术,1999(5):55-56.

[5]Donald A Neamen.电子电路分析与设计[M].赵桂钦,卜艳萍,译.北京:电子工业出版社,2003.

[6]Theodore F Bogart Jr,Jeffrey S Beasley,GuillermoRico.电子器件与电路[M].蔡勉,王建明,孙兴芳,译.第6版.北京:清华大学出版社,2006.

[7]Li Zhongshen.New study on butterworth low pass filter[G]//Proceedings of the First International Symposiumon Test Automation&Instrumentation.Beijing:BeijingWorld Publishing Corporation,2006:1532-1535.

[8]李钟慎,洪健.基于改进型Butterworth传递函数的高阶低通滤波器的有源设计[J].电子测量与仪器学报,2008(1):86-89.

[9]林祥金,张志利,朱智.Butterworth有源抗混叠滤波器设计[J].电子测量技术,2008(2):66-69.

数据采集滤波 篇2

外测数据处理中小波滤波的鲁棒性算法研究

为消除外测数据处理中异常值和噪声信号对处理结果的影响,结合数据处理的实际,给出一种基于小波变换的`鲁棒性滤波算法.首先用移动中值滤波算法剔除原始数据中的异常值,然后采用小波系数去噪算法并结合经验雏纳周值滤波算法,抑制数据中的噪声.仿真计算及实际工程应用表明,该算法在保留特征段及有用信息的同时,有效地剔除了异常值,押制了噪声,具有很好的鲁棒性.

作 者:刘海波 LIU Hai-bo 作者单位:91550部队,辽宁大连,116023刊 名:飞行器测控学报 ISTIC英文刊名:JOURNAL OF SPACECRAFT TT&C TECHNOLOGY年,卷(期):27(6)分类号:V557.5关键词:小波变换 经验维纳滤波 移动中值滤波 异常值

点云数据滤波方法综述 篇3

关键词:点云,滤波,离群点

1 网格滤波问题

目前网格的光顺算法已经得到广泛研究。网格曲面光顺算法中最经典的算法是基于拉普拉斯算子的方法[1]。通过求取网格曲面的拉普拉斯算子, 并且对网格曲面迭代使用拉普拉斯算法, 可以得到平滑的网格曲面。这种算法的本质是求取网格曲面上某点及其临近点的中心点, 将该中心点作为原顶点的新位置。Jones等根据各顶点的邻域点来预测新顶点位置, 该方法的优点是不需要进行迭代计算。但是上述两种方法的缺点是经过平滑处理后, 得到的网格模型会比原来的网格模型体积变小, 并且新的模型会出现过平滑问题, 也就是原有的尖锐的特征会消失。为了克服这两个问题, Wu等提出一种基于梯度场的平滑方法, 该方法区别于前述的基于法向或顶点的平滑方法, 而是通过求解泊松方程来得到平滑的网格曲面。等提出一种保持原有特征的网格曲面滤波算法, 这种滤波方法的目的在于提高滤波后模型的可信度;Fan等提出一种鲁棒的保特征网格曲面滤波算法, 这种算法基于以下原则:一个带有噪声的网格曲面对应的本原的曲面应该是分片光滑的, 而尖锐特征往往在于多个光滑曲面交界处[2]。

2 点云滤波问题

以上网格曲面光顺算法都需要建立一个局部的邻域结构, 而点云模型中的各个点本身缺乏连接信息, 因此已有的网格光顺算法不能简单的推广到点云模型上来如果仅仅简单地通过最近邻等方式在点云数据中引入点与点之间的连接关系, 那么取得的光顺效果很差。所以, 相对于网格模型来说, 对点云模型进行滤波光顺比较困难, 而且现有针对点云模型的滤波算法也较少。

逆向工程中广泛采用的非接触式测量仪为基于激光光源的测量仪。其优点在于能够一次性采集大批量的点云数据, 方便实现对软质和超薄物体表面形状的测量真正实现“零接触力测量”。在激光测量仪数据采集过程中, 噪声产生的主要因素是被测物体的位置、物体表面的粗糙度和波纹等反射特性、物体颜色和对比度、环境光照条件和测量系统的误差等。

3 点云滤波方法

对于不同类型的点云数据有着相对应合适的滤波方法。对于扫描线式点云数据和阵列式点云数据来说, 现有的三维点云数据的滤波光顺算法可以从以下两个方面进行分类:根据噪声在各个方向上的扩散方式不同可分为各向同性和各向异性算法;根据算法的复杂度分析可分为基于Laplace算子的方法、基于最优化的方法和简单的非迭代方法。各向同性算法优点是算法简单, 但对噪声和模型的尖锐特征不能加以区分, 在去除噪声的同时, 尖锐特征不能得到保持。为了区分尖锐特征和噪声各向异性算法修改了扩散方程, 在去除噪声的同时, 可保持模型的尖锐特征。这些算法需要计算大量的模型结构信息以保持细节, 因此计算量非常大。其他可以采用的滤波算法有:最小二乘滤波、卡尔曼滤波和平滑滤波等。针对于散乱点云数据, 许多相关学者也进行了深入的研究, 提出了拉普拉斯 (Laplacian) 算子、平均曲率流、移动最小二次曲面等方法。

4 点云滤波中的离群点检测

离群点检测问题越来越受到重视, 出现了很多有效的算法, 本节将分别介绍基于统计的方法, 基于距离的方法和基于密度的方法。

基于统计方法的离群点检测基本思想为:对于整个点集来说, 假设其分布符合某种统计模型, 那么离群点就是点集中那些不符合该种统计模型的一些点。

这种基于统计的方法的前提假设是数据点集基本符合某种统计模型, 离群点严重地偏离这个统计模型。因此基于统计的方法具有很多缺点。首先, 这种算法鲁棒性不强, 均值$mu$和协方差矩阵$Sigma$的计算受离群点影响很大, 所以得到的模型不一定真实地反映数据分布情况。之后再用这个误差很大的分布去判断离群点, 必将导致判断的不准确。该方法的第二个缺点是对数据分布的先验知识过于依赖, 如果预先不能正确设定数据分布模型, 则检测结果会有极大的误差。

基于距离的离群点检测方法基本思想为, 通过一个点与其周围相邻点的距离来判断该点是不是离群点。这种判断方法的最基本假设是正常数据点周围存在许多距离较近的数据点;离群点远离它们的最近的邻居。

这种基于距离的方法当数据点集的密度十分不均匀时, 就会得到错误的检测结果。

考虑到基于距离的方法在数据点集的密度不均匀时容易导致离群点检测错误breunig等提出一种基于密度的离群点检测方法。该方法与基于距离的方法根本区别在于, 一个数据点的是否为离群点, 不再是一个布尔型的属性, 而是一个介于0和1之间的有理数, 这个数值越大, 该点就更可能是离群点。这个数值被称为“局部离群系数” (local outlier factor, LOF) 。

5 结论与展望

点云数据滤波问题在逆向工程、三维重建等问题中具有重要的意义。本文研究了点云数据滤波问题及离群点检测问题分析了离群点检测的三种方法。

点云数据的滤波和离群点检测问题还有很多难点没有克服, 未来的研究方向主要包括: (1) 根据目前的点云数据量越来越大, 考虑到现有计算机系统的效率, 寻找快速有效的滤波方法具有重要的意义。 (2) 随着kinect等设备的应用, 动态点云数据的滤波问题显得越来越重要。对动态点云数据开展滤波和离群点检测研究具有重要意义。 (3) 目前的滤波和离群点检测方法主要表现为无监督学习方法[3], 开展半监督和全监督的滤波和离群点检测算法研究有着广泛的应用前景。

参考文献

[1]Vollmer, J.and Mencl, R.and Mueller, H.Improved Laplacian smoothing ofnoisy surface meshes[J].Wiley OnlineLibrary, 1999, 10.

[2]罗大兵, 高明, 王培俊.逆向工程中数字化测量与点云数据处理[J].机械设计与制造, 2005, 4.

数据采集滤波 篇4

课程 数字图像处理 名称 数字图像变换

实验名称: 邻域平均法(box模板)和中值滤波处理

一、实验目的

图像变换是数字图像处理中的一种综合变换,如直方图变换、几何变换等。通过本实验,使得学生掌握两种变换的程序实现方法。

二、实验任务

请设计程序,分别用邻域平均法,其模板为:

111

111*1 9111 和中值滤波法对testnoise图像进行去噪处理(中值滤波的模板的大小也设为3×3)。

三、实验环境

本实验在Windows平台上进行,对内存及cpu主频无特别要求,使用VC或者MINGW(gcc)编译器均可。

四、设计思路

介绍代码的框架结构、所用的数据结构、各个类的介绍(类的功能、类中方法的功能、类的成员变量的作用)、各方法间的关系

试验要求中以给出大致的编程思路和源代码以及代码注释,只有黑框部分需要自己填写。在此不进行赘述。

五、具体实现

实现设计思路中定义的所有的数据类型,对每个操作给出实际算法。对主程序和其他模块也都需要写出实际算法。

注意:源代码中要加上注释。代码:(红色为重点代码)<邻域平均法>(3*3)/*------利用第一次实验课提供的 dhc.h 和 dhc.c文件以获取位图的高 宽 以及从文件头到实际的位图数据的偏移字节数,从而实现对位图实际数据的操作。------*/ #include #include #include #include “hdr.h” /*------定义结构指针------*/ struct bmphdr *hdr;//定义用于直方图变量

unsigned char *bitmap,*count,*new_color;/*------main()函数编写------*/ int main(){ //定义整数 i,j 用于函数循环时的,nr_pixels为图像中像素的个数

int i, j ,nr_pixels,nr_w,nr_h;//定义两个文件指针分别用于提取原图像的数据和生成直方图均衡化后的图像

FILE *fp, *fpnew;//定义主函数的参数包括:输入的位图文件名和输出的位图文件名,此处内容可以不要,在DOS下执行命令的时候再临时输入也可,为了方便演示,我这里直接把函数的参数确定了。

// argc=3;// argv[1]=“test.bmp”;// argv[2]=“testzf.bmp”;

//参数输入出错显示

/* if(argc!= 3){ printf(“please input the name of input and out bitmap filesn”);exit(1);}*/ // 获取位图文件相关信息

// hdr = get_header(argv[1]);hdr = get_header(“testnoise.bmp”);if(!hdr)exit(1);//以二进制可读方式打开输入位图文件

fp = fopen(“testnoise.bmp”, “rb”);if(!fp){

printf(“File open error!n”);

exit(1);} // 文件指针指向数据区域

fseek(fp, hdr->offset, SEEK_SET);

//计算位图像素的个数 nr_pixels = hdr->width * hdr->height;nr_w = hdr->width;nr_h = hdr->height;bitmap = malloc(nr_pixels);new_color = malloc(nr_pixels);count = malloc((nr_w+2)*(+nr_h+2));//读取位图数据到bitmap中

fread(bitmap, nr_pixels, 1, fp);fclose(fp);

//因为图像边缘无法使用邻域平均,所以根据邻近颜色填补图像的周围一圈,存入count[]数组中

//中心图像存入count[] for(i=nr_w+3;i<(nr_w+2)*(+nr_h+2)-nr_w-3;i++){

j=i/(nr_w+2);

if(i%(nr_w+2)!=0&&(i+1)%(nr_w+2)!=0)count[i]=bitmap[i-nr_w-1-2*j];} //填补第一排

for(i=1;i

count[i]=bitmap[i-1];} //填补最后一排

for(i=1;i

count[(nr_w+2)*(nr_h+1)+i]=bitmap[nr_w*(nr_h-1)+i-1];} //填补左边一排

for(i=0;i

count[i*(nr_w+2)]=count[i*(nr_w+2)+1];} //填补右边一排

for(i=0;i

count[(i+1)*(nr_w+2)-1]=count[(i+1)*(nr_w+2)-2];}

//邻域平均3*3 for(j=nr_w+3,i=0;j<(nr_w+2)*(+nr_h+2)-nr_w-3;j++){

if(j%(nr_w+2)!=0&&(j+1)%(nr_w+2)!=0)

new_color[i]=(count[j]+count[j-1]+count[j+1]+count[j-nr_w-2]+count[j-1-nr_w-2]+count[j+1-nr_w-2]+count[j+nr_w+2]+count[j-1+nr_w+2]+ count[j+1+nr_w+2])/9,i++;}

//结果存入bitmap[]中

for(i = 0;i < nr_pixels;i++)

bitmap[i]=new_color[i];

// 打开一个以输出文件名命名的文件,设为可写的二进制形式

fpnew = fopen(“test_lynoise.bmp”, “wb+”);

//由于位图文件的头部信息并没有因直方图均衡化而改变,因此输出图像的头部信息从原位图文件中拷贝即可:

fwrite(hdr->signature, 2, 1, fpnew);fwrite(&hdr->size, 4, 1, fpnew);fwrite(hdr->reserved, 4, 1, fpnew);fwrite(&hdr->offset, 4, 1, fpnew);fwrite(&hdr->hdr_size, 4, 1, fpnew);fwrite(&hdr->width, 4, 1, fpnew);fwrite(&hdr->height, 4, 1, fpnew);fwrite(&hdr->nr_planes, 2, 1, fpnew);fwrite(&hdr->bits_per_pixel, 2, 1, fpnew);fwrite(&hdr->compress_type, 4, 1, fpnew);fwrite(&hdr->data_size, 4, 1, fpnew);fwrite(&hdr->resol_hori, 4, 1, fpnew);fwrite(&hdr->resol_vert, 4, 1, fpnew);fwrite(&hdr->nr_colors, 4, 1, fpnew);fwrite(&hdr->important_color, 4, 1, fpnew);if(hdr->offset > 54)

fwrite(hdr->info,(hdr->offset54), 1, fpnew);

//直方图均衡化的数据(bitmap)赋值 fwrite(bitmap, nr_pixels, 1, fpnew);//关闭

fclose(fpnew);//释放内存(优化程序必需)free(hdr);free(bitmap);free(new_color);free(count);return 0;

得出实验结果图像后,比较这两种方法去噪的效果好坏,并分析具体原因。

通过比较,邻域平均法在降低噪声的同时,会使图像产生模糊;中值滤波在降低噪声的同时,能够较好的保持图像边缘,不过我感觉有点水粉画的效果,让图像有点失真。

完成上述工作后,使用程序进行验证分析:使用邻域平均法时,3×3和5×5模板大小对图像进行处理的效果有何差别?并分析原因。

程序及源代码都放在文件夹中,不放进报告了。上面是对比图,显然5×5模板比3×3模版模糊,因为使用邻域平均法时,模版尺寸越大,则图像模糊程度越大。

六、心得体会

这次实验是对两种去噪方法的比较。而在书本中,我们已经看过两种去噪方法的效果了,通过上机验证,果然如此。

数据采集滤波 篇5

1 信号不稳定及失真的分析

⑴电磁干扰造成模拟量不稳定或失真的常见原因主要有传感器的信号地和模拟量信号输入模块的电源地没有连接, 从而产生了一个很高的上下振动的共模电压, 影响模拟量输入值稳定。具体处理方法一般应将模拟量模块公共地M端和输入信号的负端连接到一起, 以消除共模电压过大而带来的干扰。

⑵模拟量信号传输距离过长造成信号衰减, 或绝缘屏蔽不好引入干扰。电压型的模拟量信号, 由于输入端的内阻很高 (模拟量模块为10兆欧) , 极易引入干扰, 所以用在控制设备柜内电位器设置, 或者距离非常近、电磁环境好的场合。电流型信号不容易受到传输线沿途的电磁干扰, 应用较为广泛。对于传输线路应使用有屏蔽层的信号线, 屏蔽层应保证良好接地。

⑶现场干扰也是造成信号不稳定或失真的重要原因, 因为外界输入的模拟信号比较容易受现场电磁波动、噪声的干扰如动力电路、变频器、变压器、镇流器等大功率有电磁波辐射的干扰源极易引起信号的不稳定和失真, 所以信号传输线路与动力线路应分开布置, 且尽量远离变频器等大功率有电磁波辐射的干扰源。必需对变频器、变压器、镇流器等强磁部分进行金属屏蔽。PLC的机壳最好也实行屏蔽, 即将PLC机壳与电气柜浮空, 在PLC机壳板上加装等电位屏蔽外壳, 来有效的消除电磁干扰。另外, 在必要情况下, 对外界输入信号连接适当的滤波电路, 比如:RC或LC低通滤波电路。

2 滤波技术

为了最大程度消除现场对模拟信号的干扰, 除了采取一定的硬件措施外, 还可以根据不同信号自身的特点采取各种数字滤波方法。其本质就是编制一段程序通过判断和计算, 降低模拟信号中干扰成分的比重。与模拟滤波器相比, 数字滤波不需要购买新硬件, 可靠性稳定性高, 不受现场环境、温度及湿度的影响。模拟滤波器对频率很低的信号由于电容容量制约不能处理, 而数字滤波对于此类信号处理效果也很好, 多通道共享, 降低成本, 没有阻抗匹配问题。针对不同的信号, 数字滤波可以设计不同的滤波参数。

2.1 高速变化信号

高速变化信号不适合设定比较复杂、需要时间较长的滤波方法。以现场选用S7-200PLC的用户为例, 模拟量滤波功能可不必再另行编制滤波程序[1]。因为其内部带有平均值滤波和死区值设定功能, 可供用户选用。如果对某个通道选用了模拟量滤波, CPU将在每一程序扫描周期前自动读取模拟量输入值, 这个值就是滤波后的值, 是所设置的采样数的平均值。另外还设置有一个模拟量采样数及死区值, 这个参数的设置, 定义了计算模拟量平均值的取值范围。如果采样值都在这个范围内, 就计算采样数所设定的平均值;如果当前最新采样的值超过了死区的上限或下限, 则该值立刻被采用为当前的新值, 并作为以后平均值计算的起始值。这就允许滤波器对模拟量值的大的变化有一个快速响应。死区值设为0, 表示禁止死区功能, 即所有的值都进行平均值计算, 不管该值有多大的变化。对于快速响应要求, 不要把死区值设为0, 而把它设为可预期的最大的扰动值。这个设置对所有模拟量信号输入通道有效。某个通道如不选滤波, 则CPU不会在程序扫描周期开始时读取平均滤波值, 而在用户程序访问此模拟量通道时, 直接读取当时实际值。

2.2 变化缓慢信号

⑴限时滤波。对于来自现场的输入信号的干扰, 可以通过对PLC的CPU单元上的全部或部分数字量输入点, 合理地定义输入信号延迟时间, 如西门子的某款PLC, 输入延迟时间的范围为0.2~12.8ms, 系统的默认值是6.4ms。通过定义延迟时间, 可以有效地抑制或消除输入噪声的影响。

⑵限幅滤波法。根据具体情况和经验判断, 设定两次采样允许的最大偏差值 (设为Max) 若采样的新值与上次值之差<=Max, 则本次值有效, 否则本次值无效, 要保持原值。这种方法能有效克服因偶然因素引起的脉冲干扰, 却无法抑制周期性的非脉冲干扰。

⑶算术平均值滤波。对N个连续采样值求算术平均, 取平均值作为有效值。若N值取得太大, 信号平滑度虽高, 灵敏度却较低。此法适用于信号在某一数值范围附近上下波动的情况, 可以对具有随机干扰的信号进行滤波。

⑷滑动平均值滤波。采样到的连续取N个数, 组成一个数列, 数列的长度固定为N, 每次采样到一个新数据放入队尾, 并扔掉原来队首的一个数, 再对N个数据求算术平均运算, 这种方法对周期性干扰有良好的抑制作用[2]。平滑度高, 适用于高频振荡的系统, 但对偶然出现的脉冲性干扰的抑制作用较差。

⑸复合滤波。根据现场信号的实际情况需要, 将多种滤波方法组合在一起实现想要的滤波功能。

参考文献

[1]陶亦亦.PLC输入信号的滤波方法[J].苏州市职业大学学报, 2000 (02) .

基于卡尔曼滤波的陀螺仪数据处理 篇6

Kalman滤波是一种高性能的递归滤波器, 最大的特点是可以在一个不完全、甚至包含噪声的测量时间序列里估计出动态系统的状态。Wiener滤波是以当前和过去全部的观测值为依据, 对信号的当前状态进行估计, 它的解是以均方误差最小为目的的系统的传递函数或单位脉冲响应。而Kalman滤波器不需要过去全部的测量值。它是根据前一个估计值和最近一个测量值来估计信号的当前值, 它是用状态方程和递推方法进行估计的, 因而Kalman滤波对信号的平稳性和时不变性不做要求。[1]

1 Kalman滤波器

美国科学家Wiener和苏联科学家Kолмогоров等人是最早开始研究最佳线性滤波理论的, 后来, 人们把它称之为Wiener滤波理论。从理论上说, Wiener滤波有一最大缺点, 那就是它一定要用无限长的历史数据, 但是, 这在实时处理中往往是不能接受的。为了解决这一问题, 在60年代Kalman在滤波理论中引入了状态空间模型, 同时设计出了一套递推估计算法, 称为Kalman滤波理论。Kalman滤波是以最小均方误差为估计的最佳准则, 再寻求一套递推估计的算法, 从而实现状态的预测。它的基本思想为:采用信号与噪声的状态空间模型, 通过对前一时刻的估计值和现时刻的测量值完成对状态变量估计的更新, 求出现时刻的估计值。由于Kalman滤波对存储量和运算量的要求较小, 因此它适合于实时处理和单片机运算。

Kalman滤波是以线性代数和隐马尔可夫模型为基础的。可以用一个马尔可夫链表示它的最基本动态系统, 建立在一个含有高斯噪声的线性算子上。可以用一个实数向量来表示系统的状态。这个线性算子随着离散时间测量点的增加, 就会作用在当前状态上, 产生一个新的状态, 同时会把一些噪声带入, 并把系统的一些已知的控制器的控制信息加入。而另一个受噪声干扰的线性算子产生出这些隐含状态的可见输出。为了应用Kalman滤波器从一系列有噪声的观察数据中估计出被观察过程的内部状态, 必须要建立Kalman滤波框架下的模型。如下:

其中:Fk表示作用在xk-1上的状态变换模型;Bk表示作用在控制器向量uk上的输入-控制模型。wk表示过程噪声, 假定噪声的符合均值为零, 协方差矩阵为Qk的多元正态分布。

对于任意时刻k, 真实状态xk的一个测量zk满足下式:

其中Hk表示观测模型, 它把真实状态空间映射成观测空间, vk是观测噪声, 均值为零, 协方差矩阵为Rk, 且服从正态分布。

初始状态以及每一时刻的噪声{x0, w1, ..., wk, v1...vk}都认为是互相独立的。但是, 很多真实世界的动态系统都并不确切的符合这个模型;但是由于Kalman滤波器被设计在有噪声的情况下工作, 所以这个滤波器在这种情况下也能得到近似的结果, 所以这个滤波器的到了广泛的应用。

2 陀螺仪ADXRS150

ADXRS150是一款角速度范围为150°/S的MEMS角速度传感器。具有Z轴响应、宽频、抗高振动、噪音为0.05°/S/sqrt Hz, 2000g冲击耐受力, 温度传感器输出, 对精确应用绝对速率输出, 5V单电压操作等特点。由于其小而轻 (<0.15平方厘米, <0.5克) 常应用于辆底盘滚转传感, 惯性测量单元IMU, 平台稳定, 无人机控制, 弹道测量等场合。由于MEMS陀螺仪本身的特点, 其输出数据在长时间内温度漂移、零点漂移都相当严重, 必须使用滤波算法去除噪声干扰。由于加速度是一个瞬间变化的物理量, 对于这种长时间的温度漂移和零点漂移, 其他的滤波算法无法保证相应的及时性。所以只能选用具有估计特性的Kalman滤波器。[2]

3 Kalman滤波程序实现及处理效果

现设线性时变系统的离散状态防城和观测方程为:

其中:X (k) 和Y (k) 分别是k时刻的状态矢量和观测矢量;F (k, k-1) 为状态转移矩阵;U (k) 为k时刻动态噪声;T (k, k-1) 为系统控制矩阵;H (k) 为k时刻观测矩阵;N (k) 为k时刻观测噪声。则卡尔曼滤波的算法流程为:第一步, 预估计X (k) ;第二步, 计算预估计协方差矩阵;第三步, 计算Kalman增益矩阵;第四步, 更新估计;第五步, 计算更新后估计协防差矩阵;不断重复以上步骤即可。[3]以上运算中第一次计算中用到的第一次估计得数据对滤波的稳定会有一定影响, 选择好的话会有较好的滤波效果。图1为滤波处理后的数据和滤波前数据的比较。

4 结语

从滤波的图像可以看出, Kalman滤波能较好地滤除陀螺漂移中的随机噪声。该实验程序的算法部分的运算开销主要在矩阵的转置、相乘上, 序列的长度也会影响速度, 整体运算复杂度为О (n, 3) , 相对来说不高, 适用于目前流行的各种高速8位单片机使用。

参考文献

[1]郑天明.船舶智能监控导航技术研究.华南理工大学硕士论文.

[2]熊海林, 邓方林.陀螺静态漂移系数的两种估计方法[J].上海航天, 2002, 1:39-42.

数据采集滤波 篇7

小波分析是20世纪80年代兴起的新的信号处理方法。由于小波分析较传统的傅里叶分析有着显著的优势,自它兴起的二十几年来,在信号和图像处理领域的应用越来越广泛,如信号奇异性检测、信号去噪、多尺度边缘检测、图像分割及图像编码等。

Donoho D L提出的基于小波分析的阈值去噪方法因其良好的时频特性得到了广泛应用。1999年,Bhavik R B首次将离线使用的小波阈值去噪方法推广到在线数据校正,提出了OLMS(On-line Multiscale)算法[3]。Xia R等也对小波的在线使用进行了详细的探讨[6]。Xia R和Bhavik R B提出的方法都是使用传统的小波,没有深入关注在线滤波的速度问题。Xia R和Bhavik R B都提到使用TI变换解决出现的伪吉布斯效应,但使用TI变换方法却进一步加大了运算量。Bhavik R B提出通过延迟数据输出,改善边界效应对滤波结果造成的影响,同时提出使用边界校正滤波器对边界点数据进行处理,消除边界效应。Xia R等为了解决边界效应,详细比较了将离线去噪时使用的边界扩展方法用于在线小波去噪时的效果,但是并没有指出离线扩展与在线扩展的不同。Ercelebi E等将基于提升格式的小波阈值去噪方法在线使用[7,8],分别针对PQ(Power Quality)和ECG(Electrocardiogram)信号的奇异值检测取得良好效果。针对工业现场信号,高东等将提升小波去噪的方法扩展到在线数据监测[9],针对小波去噪的边界效应,在边界处使用复杂的边界插值小波对边界点另行处理,该算法在不同的尺度下的滤波系数均要重新计算,极大增加了计算的复杂度和运算量。

笔者综合已有的在线小波阈值去噪思想,提出一种新的、简单的、基于提升格式的小波在线滤波方法。由于采用提升算法,该方法的运算速度比OLMS算法快了很多。为了不增加计算的复杂度,同时消除边界效应对滤波结果的影响,提出一种新的边界扩展方式,该方法为了最大程度地还原边界处的信息,利用过去时刻的滤波结果预测边界点后的纯净信号,利用过去时刻的噪声信息预测边界点后的噪声信息。这种处理方法简单易行,同时更好地减小了边界效应的影响。仿真结果表明:如果系数调整适当,该方法还能在一定程度上消除伪吉布斯效应的影响。

1 提升算法

由于传统的小波分析存在大量卷积的运算,因此其运算量很大。1998年,学者Daubechies I和Sweldens W提出一种不依赖于傅里叶变换的小波变换,称之为提升格式[10],该方法能减少运算量,提高变换速度。众所周知,在线去噪的速度直接决定了能否实现实时处理,因此笔者将提升格式引入在线去噪,以便更好地实现在线数据滤波。 提升格式(图1)分为分裂、预测和更新3个步骤,具体如下:

a. 分裂过程。将低频系数cj的奇数序列合成一组得到dundefined,将偶数序列合成一组得到cundefined(惰性小波变换)。

b. 预测过程,又称为偶提升过程。用偶数组cundefined预测奇数组dundefined得到dundefined,即dundefined=dundefined-P(cundefined),其中P为预测算子。

c. 更新过程,即原始提升过程。用对偶提升过程得到的奇数组dundefined更新偶数组cundefined得到cundefined,即c1j=cundefined+U(dundefined),其中U为更新算子。

最后做归一化处理,得到小波分解的低频系数和高频系数,低频系数由偶数组构成,高频系数由奇数组构成(如果提升方案不同,也可以相反),即:

cj+1=Kcundefined

undefined

式中 K——归一化系数。

重构过程则是上述过程的逆过程,如图2所示。

提升小波是构造第二代小波的基础,1998年Daubechies I和Sweldens W证明了任何正交小波都可以用提升方案来实现[10]。不同小波基提升方案的相异之处在于预测算子和更新算子的不同(预测算子和更新算子实际上是对序列的滤波),一般都要经过多次对偶提升和原始提升才能完成一次分解。Daubechies I和Sweldens W详细介绍了通过多相位矩阵的因子分解得到离散小波变换的提升格式,并给出了“db4”小波基的提升方案:

cundefined=x2l,dundefined=x2l+1(2l为偶时刻,2l+1为奇时刻)

undefined

2 基于滑动窗体的在线小波去噪

将离线形式的小波降噪在线使用,其基本原理是Bhavik R B提出的滑动窗体模型。关于小波在线使用的文献都是基于这一基本思想,文献[3]与文献[10]都有详细介绍。

2.1 滑动窗体原理

滑动窗体的工作原理是:在确定滑动窗体的长度后,如果采样的数据点数小于窗体长度则保持采样数据不变,直接输出;当采样点数满足窗体长度时,则进行小波阈值去噪处理,把处理结果的最后一点作为此时刻的实时输出,同时窗体向前移动一个单位,接收下一时刻的采样值,丢弃窗体的第一个采样值。如此循环,实现在线处理。假设滑动窗体的长度为L,在第i时刻滑动窗体内的数据为:

undefined

根据Bhavik R B的方法,滑动窗体内的数据个数选择2n个(n∈Z)。

2.2 边界效应

从式(1)可以看出,每个时刻得到的新数据x(i)都在滑动窗体的最后,由于边界点处信息不完整,不能在边界处得到精确重构,因此在第i时刻的去噪效果肯定会产生较大的误差,从而影响整个去噪效果。图3是原始含噪声信号(heavy sine),图4是离线去噪结果与基于滑动窗体模型的在线小波去噪输出比较。图5是含噪声blocks信号,图6是对该信号进行离线去噪后和在线去噪得到的结果。

由图3~6可以看出,在线去噪因边界效应而导致去噪性能明显降低。从数据上看,以heavy sine信号为例,离线去噪结果的均方差为0.180 3,而在线去噪结果的均方差(从有滤波效果开始计算)为0.459 8,边界效应明显地降低了滤波性能。

2.3 边界扩展

在离线处理时,针对边界效应现象,通过边界扩展能使边界精确重构[11]。很自然的想法是在在线情况下,仍然通过边界扩展来提高去噪性能。常见的边界扩展方式有补零扩展、周期扩展、平滑扩展和对称扩展[6],具体如下:

a. 常见边界扩展方式的补零扩展为undefined,其中m+n=L,n为补零扩展的个数;

b. 常见边界扩展方式的周期扩展为undefined其中m+n=L,n为循环的周期;

c. 常见边界扩展方式的平滑扩展为undefined,其中m+n=L,n为扩展个数;

d. 对称扩展有两种扩展方式,点对称扩展,undefined和线对称扩展undefined。

分别对以上4种扩展方式进行仿真,以说明离线去噪扩展与在线去噪扩展的异同,以及在线去噪扩展应遵从的原则。图3、5分别是含噪声heavy sine和blocks的测试信号。

按以上扩展方式,对信号进行在线去噪,选择“db4”小波,分解尺度为5层,滑动窗体长度为512,信号长度2 048。用均方误差RMSE作为滤波性能评价指标,其结果为:

undefined (2)

表1为按以上扩展方法得到的滤波结果。

分析去噪结果可知,补零扩展、周期扩展和平滑扩展不能得到太大的RMSE值,未能有效去除噪声,而线对称扩展和点对称扩展获得的RMSE值较小,能有效消除噪声,而且扩展的点数越多得到的去噪结果越好。

离线去噪作边界扩展是为了能精确重构出原始信号,在线边界扩展的目的是为了尽量准确地获得第i时刻点的周围信息,其中包含重要的噪声信息,这样才能更好地消除噪声。补零扩展和周期扩展实际上是在该点处人为地加入了高频信息,这不仅不能得到该点处未来时刻的噪声信息,反而引入了更严重的干扰,出现的跳跃点使得在该点处出现伪吉布斯现象,这会严重影响去噪效果;平滑扩展实际上是对该时刻的点做了平滑处理,相当于将噪声信息也做了平滑处理,即把该点处的一部分小波系数转换成了近似系数,这样显然不能达到去噪的目的;对称扩展则较好地保留了噪声信息,因而取得了明显优于其他扩展方式的滤波结果。从上述分析来看,要对离线去噪的边界点进行扩展,关键是要尽可能地扩展出实时处理的点附近的噪声信息,这直接决定了去噪性能的优劣。

2.4 新的扩展方法

设采样信号x(n)为:

x(n)=y(n)+σ(n) (3)

式中 y(n)——不含噪声的纯净信号,也是去噪后希望得到的理想信号;

σ(n) ——噪声信息。

去噪就是希望通过x(n)得到最接近y(n)的信号。

第i时刻的采样值x(i)为:

x(i)=y(i)+σ(i)

依照2.3节的分析,如果扩展点的值与第i时刻后的真实采样值相似程度越大,则在线去噪的效果就越好。扩展的关键是在扩展后的窗体序列Wi中,x(i)附近既不能引入较大的噪声信息也不能消除噪声信息。基于此,可以对扩展点x(i+k)中的y(i+k)和σ(i+k)分别进行扩展,然后合成x(i+k)。

于是扩展就变为对y(i+k)和σ(i+k)的预测估计。对y(i+k)的估计并不要求十分精确,但是不能引入高频信息。y(i+k)的值可以直接取y(i)的估计值,假设undefined是第i-1时刻的去噪输出值,笔者对y(i)的估计提出两种方法:

a. 方法一,直接取undefined,得到undefined;

b. 方法二,用undefined和undefined的直线拟合点估计y(i),得到undefined。

第i+k时刻的扩展点处噪声信息σ(i+k)的值是随机的,不易估计。但在假设噪声信息是均匀分布,且无关(这符合大多数工业现场的实际情况)的情况下,完全可以用过去时刻的噪声信息来模拟σ(i+k),笔者把这种新的扩展方式称为“仿噪”扩展。由式(3)可知,σ(n)=x(n)-y(n)就是该时刻的噪声值,实际上并不知道原始未受干扰的真实值y(n)是什么。因此,用去噪输出值undefined(n)来代替y(n),那么该时刻的噪声值为:

undefined

式中 a——仿噪系数。

于是,用σ(i-k)模拟σ(i+k)可得:

undefined

至此,得到仿噪扩展的表达式如下:

方法一undefined

undefined

以上便是新的扩展方法。

3 结果分析

为了检验笔者提出的新的扩展方式的有效性,仍以图3、5的信号作为测试信号,以式(2)作为去噪性能评价指标。选择“db4”小波,分解尺度为5层,采用硬阈值处理方法,滑动窗体长度为512,扩展40点,信号长度2 048。用均方误差RMSE作为滤波性能评价指标。表2记录了heavy sine信号的去噪指标对比。

分析表中数据可知:仿噪扩展方式有着优于Xia R等[6]提出的扩展方式的去噪性能,特别是对于blocks信号表现更为明显。同样,与文献[11]的在线小波相比,笔者提出的方法由于充分利用噪声信息也表现出较强的去噪能力。同时,文献[11]的方法由于要计算边界处的预测和更新算子,从而增加了计算的复杂度。y(i+k)按i-1时刻直线拟合估计得到的去噪性能优于y(i+k)直接取i-1时刻去噪估计值的去噪效果。其中,系数a的取值应根据不同的信号选取,但需注意的是,仿真结果表明a值过大时达不到消除噪声的目的。

表3记录了blocks信号的去噪指标对比,运用仿噪扩展方法在一定程度上能改善伪吉布斯现象。以blocks信号为例,它在第512时刻出现由-2~3的跳跃点,分别取表3中方法一(a=3)和点对称两种扩展方式的去噪结果中510~600的点绘图,得到如图7所示的输出曲线。

图7清晰地反映出仿噪扩展在改善伪吉布斯现象上体现的优势。实际上,随着仿噪扩展表达式中仿噪系数a的增加,去噪输出能较好地跟踪跳跃点的变化,因为a的增加意味着引入更多的高频信息,引入高频信息可以降低伪吉布斯现象的影响。文献[12]证明了高频系数的个数趋于无穷大时,不存在吉布斯现象。但是增加高频信息将使去噪信号的平滑度降低,甚至达不到消除噪声的目的,因此再次说明a的选取应该根据实际情况折中选取。

为了说明笔者提出的在线小波的快速处理能力,对比文献[10]的方法(仿真软件采用Matlab R2009b,系统平台Windows7旗舰版,CPU 2.0GHz),得到表4的结果。可以看出,在线小波在采用提升格式之后速度有了显著提高,证明了这种方案的可行性,有效扩大了在线小波去噪的应用范围。

4 实时提升仿噪小波实际应用

应用提升仿噪小波需要经过的步骤有:选择小波基,确定分解层数和阈值处理方式;合理选择滑动窗体长度;选择扩展方法,根据现场情况调整系数a。

为了说明实时提升仿噪小波在现场的可操作性,采集某工业现场压力传感器的7 501个压力测量值,采样间隔0.500 0s。实时去噪用“db4”小波基,分解层数为7,硬阈值处理,滑动窗口长度为1 024,用方法二扩展方式,扩展220点,扩展系数3。与现场采用的一阶滞后去噪方式进行对比,一阶滞后的参数a为0.9。图8截取了5 500~6 100时刻的去噪值。此次去噪耗时9.324 0s,每次有效去噪时间为1.439 6ms,采样间隔为0.500 0s,完全能够实现实时去噪的要求。

5 结束语

通过滑动窗体可以将离线小波阈值去噪推广到在线去噪,这种简单的推广因边界效应的存在不能获得理想的去噪性能,而且计算量大、实时处理速度小,不利于在线去噪的实现。笔者用提升仿噪小波有效解决了上述问题,仿真与实际应用结果均说明该方法具有实时性、去噪性能高及简单易行等品质。

摘要:小波变换用于在线数据能提高去噪性能。针对传统小波在线使用时运算慢的问题,将基于提升格式的小波用于在线滤波。相比传统小波,基于提升格式的小波运算更快,能更好地满足实时性的要求。为了降低小波分析中边界效应的影响,提出一种新的简单数据扩展方法,该方法用先前时刻的滤波输出和噪声信息预测边界点后的数据信息。仿真结果表明:新方法运算速度快,满足实时处理的要求,能降低信号均方误差值并改善伪吉布斯效应。工业现场的在线滤波实例证明了该方法的可行性和良好的性能。

关键词:在线数据滤波,小波去噪,提升格式,边界扩展

参考文献

[1]Gryzlov A,Leskens M,Mudde R F.A Semi-implicitApproach for Fast Parameter Estimation by Means ofthe Extended Kalman Filter[J].Journal of ProcessControl,2011,21(4):510~518.

[2]Chen T,Morris J,Martin E.Dynamic Data Rectifi-cation Using Particle Filters[J].Comp&ChemEng,32(3):451~462.

[3]Bhavik R B.Multiscale Analysis and Modeling UsingWavelets[J].Journal of Chemometrics,1999,13:415~434.

[4]Mohamed N N,Bhavik R B.On-line Multiscale Fil-tering of Random and Gross Errors without ProcessModels[J].AIChE Journal,1999,45(5):1041~1058.

[5]Vogt F.Data Filtering in Instrumental Analyses withApplications to Optical Spectroscopy and ChemicalImaging[J].Journal of Chemical Education,2011,88(12):1672~1683.

[6]Xia R,Meng K,Qian F.On-line Wavelet Denois-ing via Moving Window[J].自动化学报(英文版),2007,33(9):897~901.

[7]Ercelebi E.Electrocardiogram Signals Denoising UsingLifting-based Discrete Wavelet Transform[J].Comput-ers in Biology and Medicine,2004,34(6):479~493.

[8]Yilmaza A S,Abdulhamit S,Bayrak M,et al.Appli-cation of Lifting-based Wavelet Transforms to Char-acterize Power Quality Events[J].Energy Conver-sion and Management,2007,48(1):112~123.

[9]高东,张贝克,吴重光.基于提升格式的过程数据在线去噪方法及其应用[J].计算机应用研究,2008,25(10):3198~3200.

[10]Daubechies I,Sweldens W.Factoring WaveletTransforms into Lifting Steps[J].Journal of Fou-rier Analysis and Applications,1998,4(3):247~269.

[11]樊启斌,石丽君.Two Perfect Reconstruction Algo-rithms for Boundary Processing in Wavelet Trans-form[J].数学杂志,2010,30(5):768~774.

数据采集滤波 篇8

金属材料在外力作用下所表现出的各种特征, 如弹性、塑性、韧性、强度等统称为力学性能指标, 是机械设计的主要依据。获得力学性能指标的唯一可靠的方法是进行测试。拉伸试验法就是检验金属材料力学性能的一种极为重要的方法。由拉伸试验所确定的金属力学性能四大指标:抗拉强度δb、屈服强度δs、伸长率δ和断面收缩率ψ最具代表性, 是设计制造的主要依据[3]。

在金属拉伸实验中, 通过压力传感器将材料所受的拉力经A/D采样得到离散的载荷数据, 将这些离散数据拟合成载荷曲线, 并从曲线中按照一定的原则找到金属的性能指标。采样数据由于各种原因会迭加各种干扰, 为了满足测量数据的准确性和快速性, 必须采用适当的方法对采样数据进行快速数字滤波处理。目前常用的方法有傅里叶变换数字滤波、中值平均滤波、移动平均滤波等方法, 这些方法在处理金属拉伸实验数据时并不是最好的, 针对这一问题, 提出了采用小波变换对采样数据进行滤波处理的方法, 取得良好效果。

1 拉伸实验数据小波变换分析方法

1.1 拉伸实验测量数据

图1为温度与拉伸速度均恒定的条件下, 圆型低碳钢沿轴向拉伸时得到的位移-载荷典型曲线。曲线由4部分组成, (1) 弹性阶段:oa段, 位移与载荷呈线性关系。载荷在a点突变, 称为上屈服限, 记为σsu。 (2) 屈服阶段:ac段, 材料出现微量塑性变形, 即载荷增加不大, 但位移出现较大变化, 这一现象称为屈服现象。不计初始瞬时效应b点的最低点, bc段载荷最低点b′称下屈服限, 记为σsl。 (3) 塑变阶段:cd段, 随着塑性变形的增加金属材料产生硬化, 材料的抵抗力持续增加, 在d承受的载荷达到最大, 称为抗拉强度限, 记为σb。 (4) 局部变形阶段:de段, 材料出现“缩颈”现象, 随着位移的增加, 到达e点时材料被拉断, e点称为断裂强度, 记为σe。金属的主要性能指标的确定方法见表1[2]。

金属材料在拉伸实验过程中, 受机械振动、夹具滑溜等原因会使采样的数据迭加强烈的干扰信号, 通过对实际数据进行分析, 干扰信号相当于最大幅值为0.6KN的白噪声, 如图2 (a) 所示。由表1中计算金属力学性能指标的方法可知, 求取金属性能指标所需的几个数据均处于实验数据曲线的突变点位置, 为了精确得到这些数据, 需要选择合适的滤波方式。采用的滤波器不但要能滤除信号中的噪声, 最关键的问题是在对信号滤波后能保留采样数据曲线中的这些突变点特征。

1.2 滤波方法选择

根据干扰信号的统计特征和频谱分布的规律, 可以有很多种滤除信号噪声的方法。传统的方法是根据噪声能量一般集中于高频, 而信号频谱分布于一个有限区间的特点, 采用傅里叶变换将含噪的时域信号变换到频域, 然后采用低通滤波器进行滤波。这种方法在有用信号与噪声的频带相互分离时, 滤波效果十分明显;但当有用信号和噪声的频带相互重叠时, 比如噪声为白噪声, 滤波效果则不尽理想。因为低通滤波器在滤除噪声的过程中, 也同时将信号的突变部分变的模糊, 丢失了有用信号的特征;而高通滤波器虽然可以使突变部分得到清晰表现, 但高频量噪声却不能被很好滤除。因此, 传统的傅里叶变换滤波方法存在着保护信号局部性特征和滤除噪声之间的矛盾。

小波变换具有自适应的时-域局部化功能, 在信号的突变部分, 某些小波分量表现幅度突出, 它与噪声的高频部分的均匀表现正好形成明显的对比, 因此小波分解特别是正交小波分解能有效的区分信号中的突变部分和噪声, 达到消噪的效果, 为解决上述的矛盾提供了有力的工具。小波去噪之所以取得成功是因为小波变换具有以下重要特点: (1) 时频局部化特性, 小波变换可在时间轴上准确的定位信号的突变点位置; (2) 多分辨性质, 由于采用多尺度分解方法, 可以很好表现信号的非平稳特点, 如边缘、尖峰、突变点等, 有利于特征提取和保护; (3) 去相关性, 小波变换具有很强的去数据相关性, 使信号的能量集中于少数几个小波系数上, 而噪声能量分布于大部分小波系数上; (4) 小波基选择多样性, 有各种各样的小波基可供选择, 针对不同应用场合选用最合适的小波函数, 可以使去噪性能达到最优。

对图1 (b) 所示含噪信号采用小波变换滤波, 就是利用了小波变换优良的时域局部化能力, 既能滤除干扰, 又能保留突变信号。

1.3 小波阈值去噪方法

信号与噪声在小波域有不同的性态表现, 它们的小波系数随尺度变化的趋势不同。随着尺度的增加, 噪声系数的幅值很快衰减为0, 而有用信号系数的幅值基本保持不变。采用阈值滤波方法的实质在于减小甚至完全剔除由噪声产生的系数, 同时最大限度保留有用信号的系数, 最后由经过处理后的小波系数重构原信号, 得到真实信号的最优估计。“最优”的精确定义依赖于具体的应用要求。

小波变换阈值滤波的步骤一般为:

(1) 首先对一维含噪信号进行小波分解, 选择一个合适的小波基并确定具体的分解层数, 然后进行分解计算;

(2) 对小波分解高频系数进行阈值量化, 对各个分解尺度下的高频系数选择一个软阈值或硬阈值进行量化处理;

(3) 一维小波重构, 根据小波分解的最低层低频系数和经过量化处理后各层细节系数进行一维信号重构。

小波阈值滤波不仅能几乎完全滤除噪声, 而且可以很好地保留反映原始信号的特征信息, 如边缘及突变点信息, 因而具有良好的滤除噪声效果。事实上, 人们已经证明在均方误差意义上阈值法能得到信号的近似最优估计, 且采用软阈值所得到的估计信号至少与原信号同样光滑。

1.4 小波基选择

小波阈值去噪的滤波效果强烈依赖于所选的小波基。经大量分析知道, 如果用和信号形状相近的小波进行滤波时, 会得到较好的滤波效果。具有正交和紧支撑性质的Symlets小波比较适合实时小波滤波要求, 因此选择Symlets小波对实验数据进行滤波处理。在Sym N系列中经常用的是Sym4和Sym8, 而Sym8的正则性优于Sym4, 所以采用Sym8小波基。

2 采用小波变换方法对拉伸实验数据滤波

2.1 对采样数据的处理流程

如图1 (b) 是在拉伸实验过程中经A/D采集的离散数据, 系统采用CS5532作为外接A/D转换器, 该器件应用电荷平衡技术和极低噪声的可编程增益斩波稳定测量放大器, 内部集成了放大和滤波功能, 可得到高达24位分辨率的输出结果, 转换速率最高可达3200Hz。图1 (b) 中数据的采样频率f0=3KHz。无论采用傅里叶变换还是小波变换进行数字滤波都需对采样数据进行实时性处理。用滑动数据窗可解决实时性问题, 其软件实现流程如图2所示。

2.2 用傅里叶变换与小波变换对采样数据进行滤波的结果比较

如图1 (b) 所示, 拉伸实验开始时, 微处理器将采样数据依次放入预先定义的32位宽、长度为128的内存空间 (构成移动数据窗) , 数据采集达到128时采用傅里叶变换或小波变换对窗内数据进行数字滤波, 并输出最后一个滤波值。然后再采样新数据并更新内存空间, 并再次采用傅里叶变换或小波变换对数据窗中数据进行滤波。从而可得到如图1 (c) 所示的傅里叶变换滤波后波形及图1 (d所示的小波变换滤波后波形。

从图1 (c) 处理结果看, 经傅里叶变换滤波后, 含噪信号的滤波效果在信号光滑局域是相当不错的, 但在屈服阶段体现着信号几个关键突变信息也变得非常平坦 (采用中值平均滤波、移动平均滤波等方法时, 会使突变信息变得更加平坦, 这种结论比较容易理解, 不再重述) , 这使得这一阶段中需要的载荷数据采集产生较大误差。从图1 (d) 处理结果看, 经小波变换滤波后的去噪效果在光滑局域甚至弱于傅里叶变换滤波, 但在屈服阶段的突变信息几乎完全得以保留, 这是我们希望看到的结果。

对滑动数据窗中128个采样点进行离散小波分解时其最大分解尺度为7层。从分解得到的细节信号可以看出, 信号在第5层基本达到稳定状态。而随着分解层次的增加, 计算量也相应增加, 因此从尽可能提高运算速度方面考虑, 仅对第5层的尺度系数进行分析。根据小波阈值滤波方法, 将第5层以下的细节系数均置为0, 然后对由第5层低频信号及处理后细节系数对信号进行重构, 就能得到图1 (d) 所示波形。

数据的采样频率为3KHz, 根据Nyquist定理知道采样数据中包含的有效信号最高频率为1500Hz。因此对该信号进行小波分解时, 各层细节信号所占频带第1层为750~1500Hz;第2层为375~750Hz;第3层为187~375Hz;第4层为94~187Hz;第5层为47~94Hz。采用小波变换阈值滤波时, 将第5层以下的细节系数均置0, 这一过程的实质是强制滤除了47Hz以上的所有频率;而采用傅里叶变换滤波时, 先用离散傅里叶变换将时域信号转换至频域, 再将频谱中所有频率范围在47Hz~Nyquist频率与Nyquist频率~2953Hz内的频率全部滤除, 就能得到图1 (c) 所示波形。也就是说, 经傅里叶变换或小波变换滤波后得到的去噪信号中所含频段是相同的。所以, 图1 (c) 与图1 (d) 所示的结果是完全可以进行比较的, 比较结果能真实反映两种滤波方法的优劣。

3 结语

通过傅里叶变换与小波变换对同一含噪信号滤波进行分析, 小波变换的局部时-域分析能力既能滤除噪声, 又能保持信号的原貌。这对于保证拉伸实验屈服阶段信号的特征不丢失, 提高处于实验数据突变位置数据采样的精确度无疑是非常有效的, 这一结论在实践中也得到充分验证。

摘要:小波变换具有良好的时频局部化能力。当采用小波变换对金属拉伸实验数据进行数字滤波时, 不但能滤除干扰信号, 而且能很好的保留信号的突变部分, 体现信号原貌, 这一功能是傅里叶变换所无法比拟的。通过比较傅里叶变换与小波变换对金属拉伸实验数据的滤波结果, 表明采用小波变换处理含噪的实验数据, 具有良好效果。

数据采集滤波 篇9

数据泄露[1]是企业和云服务提供商面临的一个重要安全问题。在2012年,每个月有100多次数据泄露事件发生,有些事件的影响范围达上千万人。虽然采取了防火墙、IPS/IDS设备,但是由于zero-day攻击、应用层损坏、程序问题或错误配置,类似的数据泄露问题仍然时有发生。因此,有必要采取专门的安全层措施,以保护存储在云设备中的数据安全,防止数据泄露。

为了防止数据泄露,本文基于如下理念:在云网络中再设立一层防泄露(DLP)检测机制来保证敏感数据不会离开企业或云服务供应商的边界。这需要对离开网络的所有数据进行在线检查。为了获得更强的安全性,我们使用一种白名单机制,一项内容只有在确定的经过允许的白名单中才可以离开网络。理想情况下,这些检测必须精细化,管理员可以确定DLP检测时的文件白名单,因此降低了攻击者偷偷地将敏感数据传出网络边界的概率。

本文贡献如下:1)提出一种新的DLP机制,通过使用白名单,显著提高了数据传输的安全性。本文机制支持精细化数据访问控制:文件层级的访问控制,而不是网络或账户级别;2)提出一种基于文件指纹和Bloom滤波器的数据泄露检测算法。通过使用动态规划来计算最优检测位置,最大限度地降低了内存开销,支持高速部署。因此,系统使用本文算法后可以拓展至大量文件情况,且没有增加平均最大数据泄露量;3)基于多个真实文件集合展开实验(总文件量接近70 GB)。实验结果表明,使用Bloom滤波器后可将内存使用量降低50倍以上。对于一百万兆的数据,本文算法需要340 MB的内存就可实现1000比特的最差检测延时期望(即被泄露的数据量)。

1 相关工作

人们已经提出了多种基于网络的预防模型来解决数据泄露问题。例如,文献[2]对外传数据进行检测来防止内部数据泄露。它的主要思路是检测是否出现指定的关键词和数据模式,通过这些测试的所有数据都将被阻止。文献[3]使用基于相似度的内容分类器来检测与黑名单机密内容类似的其他内容,并且阻止其离开网络。文献[4]针对云存储中敏感数据的机密性保护问题,在基于属性的加密基础上提出了一种密文访问控制方法HCRE。其思想是设计一种基于秘密共享方案的算法,将访问控制策略变更导致的重加密过程转移到云端执行,从而降低权限管理的复杂度,实现高效的动态密文访问控制。实验分析表明,HCRE显著降低了权限管理的时间代价,而且没有向云端泄露额外的信息,保持了数据机密性。

另外还有,文献[5]针对用户在使用云计算时容易导致敏感数据外泄的问题,提出一种防泄露技术来保护用户数据,通过对HTTP消息的检测,可检测到用户和云服务之间的数据扩散,截获用户和云计算服务之间的文件传输并进行记录,严格执行数据扩散的预制策略。在文件被上传到云后控制文件的传播,让只有经过授权的用户可以访问。通过在Dropbox等真实云环境的应用和验证,证实了技术的有效性。文献[6]研究了云计算中大规模数据的安全传递问题,由于传递的数据信息量巨大,发生云空间不足,或者被外界恶意攻击的几率较高,容易发生数据泄漏、数据异常,造成海量数据传递的机密性和安全性不高的问题。为提高数据传递的安全性,提出一种多层防护的云计算安全数据传递方法,运用多层数据防护技术对海量数据传递时发生的异常进行检测,采用多点校验技术使得数据偏差幅度最小,保证数据的安全性,克服传统方法的缺陷。实验证明,利用改进方法能够大幅提高海量数据在传递过程的安全性,取得了令人满意的效果。文献[7]利用网络边界的一个代理进行DLP检查,它通过在哈希表中存储指纹来提高数据传输的安全性,但是该方法要消耗较多的内存。文献[8]使用基于信息流控制(或污点跟踪)的方法来防止程序泄露信息。这些方法虽然可能有效,但是它们需要整个程序重写甚至要求操作系统在客户端运行。

总的来说,以上方案还存在以下几个问题:1)攻击者仍然可以避免黑名单关键词来偷窃到其他信息。攻击者也可以对内容进行加密或转换,以逃避检测。由于合法内容也可能刚好包括类似的关键词,导致虚警率较高;2)由于该检测机制虚警率高,许多合法文件被错误拦截,同时为攻击人员掩盖关键词留下了安全漏洞。鉴于以上的不足,本文提出了一种改进的数据防泄漏方案,并通过仿真实验验证了该方案的有效性。

2 系统模型

我们的目标就是防止企业或云设备的敏感文件泄露到网络边界之外。网络管理员将该任务交给装备在网络边界处的DLP设备或软件系统,对所有外传数据进行检测,并拦截敏感数据的传输。在云计算背景下,连同其一起安装的还有防火墙、IDS和IPS,传输时需要经过机构VLSN的数据都需要通过这些防火墙、IDS和IPS。

本文系统以敏感文件(不得离开网络)和非敏感文件(由用户和网络管理员共同商议决定)的分类作为输入。以此输入为基础,本系统创建可以离开网络的文件白名单。任何将要离开网络的数据必须要通过白名单检测。

我们有两个重要设计目标:(1)它应该尽量早地发现并避免敏感数据泄露,即泄露开始点和泄露被发现点之间的间隔应该尽可能地小;(2)由于大多数企业和云数据中心存储数以百万计的文件(TB级别),系统可以拓展至大量文件情况。为了满足这些要求,本文系统从白名单内容中提取出签名,并且创建一个紧凑型指纹数据库。通过仔细选择这些签名,可以在检测延时和系统开销间进行折衷。图1描述了本文系统的架构。

该方案位于网络边界上,通过Bloom滤波器构建签名数据库来防止敏感数据流出网络。

本文模型假设合法用户可以通过执行HPPT、FTP等预先明确的协议来访问数据。只有这些协议被允许穿越网络边界进行数据传输。DLP系统可以从数据包中提取并检测有用负荷。我们假设终端主机可能被损坏,但是DLP系统在专用网关运行,不会被损坏。可能存在以下攻击:1)攻击者通过对白名单内容中的敏感数据进行混合来偷窃数据。由于白名单内容允许通过网络边界,所以敏感数据将会造成Bloom滤波器失效,进而被检测。2)攻击者通过加密、编码或其他手段来变换敏感数据,以将数据移出。这一攻击同样不会有效,因为这些经过变换的数据不是签名数据库的一部分,所以连接将被终止。3)攻击者可能会修改协议头部,使DLP系统无法正确识别协议而提取有效负荷,或者提取有效负荷的错误部分。然而,DLP系统可以检查协议字段的合法性,只允许合法协议通过。请注意,我们假设物理网络架构没有被损坏。例如,我们不得通过其他路由路径绕过DLP网关。我们不会通过非网络接口(比如USB接口)来处理数据复制问题。

3 指纹初步检测算法

现在对动态指纹检测进行简要描述。基本定义之后,首先简要描述指纹检测初步算法。虽然初步算法的内存和处理效率较低,但是可为下一节概率检测算法打下基础。

考虑一个数据库D,由n个二元字符串F1,F2,…,Fn构成。设l(Fj)表示字符串j的长度(比特数量)。设Fj[k]表示由字符串j前k个比特构成的字符串。二元字符串S以每次一个比特的速度输入系统,S的长度事先并不知晓。设S[k]表示S前k个比特构成的字符串。

定义1设有数据库D,如果存在Fj∈D满足如下条件,则认为二元字符串S为k位可行字符串:

换句话说,如果S的前k位比特与D中某个字符串的前k位相同,则认为S为k位可行。我们现在定义输入字符不可行点。

定义2设有数据库D,输入字符串S的不可行点I(S),定义为字符串S不是k位可行字符串的第一个位置k。

字符串S的不可行点是指字符串S与任何字符串Fj∈D均不匹配的第一个点。如果字符串S对部分k≤l(S)不是k位不可行,则称该字符串不可行。如果整个字符串是可行字符串,则定义字符串的不可行点无穷大,即S为l(S)位可行。总体来说,每位比特之后均检测字符串S是否可行并不现实。我们假设,通过一个确定性或概率性检测机制,对字符串进行周期性检测。如果字符串S的t比特到达后进行检测,则我们就可以知道S是不是t位可行。检测分为两种类型:

1)如果检测是确定性检测,则我们可以确切知道检测执行后,S是否是t位可行。

2)如果检测是概率性检测,且在t比特后检测S,则:

如果S为t位可行,则检测结论为它就是t位可行。

如果S不是t位可行,则我们只认为它以一定概率不为t位可行。这一概率称为检测概率。

由于我们只是周期性地检查字符串,所以在不可行点和不可行检测点间存在一个延时。即使是对确定性检测,这一延时也取决于字符串的不可行点。

定义3字符串S的检测延时表示为Δ(S),是指字符串为不可行的点到不可行被检测出来的点之间的距离。

对概率检测,检测延时期望为:

本文主要考虑概率检测,所以我们主要对检测延时的期望感兴趣。总体来说,对所有的Fj∈D,通过每个Fj[t]计算S[t]来检测每个t时S[t]是否具有可行性,这种做法并不现实。因为这一操作需要进行nt次比较,其中n是D中字符串的数量,而n和l(S)(及t)可能非常大。鉴于此,本文给出一种性能相当但处理量更小的方法,其基本思想是:创建数据库中子字符串的指纹,并将其与为输入字符串创建的指纹进行比较。此外,只需要在固定点1≤t1<t2<…<tp进行检查即可,而不需要每个比特到达之后对输入字符串进行检查,其主要步骤如算法1所示。

算法1直接指纹比对算法

Step1对每个字符串Fj∈D,计算所有tk≤l(Fj)时Fj[tk]的指纹。指纹可能是Fj[tk]128位的CRC。将该指纹表示为F[Fj[tk]]。

Step2 D中子字符串生成的所有指纹存储于指纹哈希表中。

Step3对所有的tk≤l(S),计算输入字符串S在S[tk]处的指纹。

Step4只要字符串S[tk]生成一个指纹F[S[tk]],它就被哈希到指纹哈希表中。如果F[S[tk]]将被哈希进的哈希表有一或多个元素,则对这些指纹进行比较,查看是否存在指纹匹配。

Step5如果对字符串S,在S[tk]处第一次没有指纹匹配,则认为字符串为tk位不可行。

由于字符串的指纹基于CRC,所以可以逐步计算指纹。这一方法的成功性和可行性取决于两个因素:

1)指纹长度:指纹必须足够长,使两个不同的字符串具有相同指纹的概率足够小。对大部分应用,128或256位的指纹应该足够。

2)哈希表大小:哈希表应该足够大,以避免出现太多冲突。如果冲突太多,必须进行多次比较,以确定是否存在指纹匹配。

指纹比较时间与指纹长度成正比。即使使用128位的指纹,比较开销也会非常大。此外,D中所有子字符串的指纹必须存储起来,这也增加了内存开销。对于实时应用而言,指纹直接比较方法的实用性有限,鉴于此,下面给出了一种概率方法,以确定S的不可行点。

4 基于概率的检测算法

如上节所示,直接指纹比较方法存在计算量大、内在开销大的问题。我们通过概率检测来降低这两方面的开销。对指纹比对,我们有一组整数1≤t1<t2<…<tp,且字符串只在这些点检测。与直接指纹比较方法不同的是,我们对这些检测点均关联一个Bloom滤波器(BF)[9],与tk关联的BF表示为B[tk]。概率检测的主要步骤如算法2所示。

算法2概率检测算法

Step1对每个字符串Fj∈D,计算Fj[tk]的指纹且对所有的tk有tk≤l(Fj)。对指纹匹配,我们可以使用基于CRC的指纹。将该指纹表示为F[Fj[tk]]。

Step2将指纹哈希进BF B[tk]。

Step3对所有的tk≤l(S),输入字符串S的指纹和S[tk]指纹进行比较。

Step4当字符串S[tk]生成一个指纹F[S[tk]]时,将其哈希进BF B[tk]。如果BF表明F[S[tk]]不在BF中,则我们可以确定S为tk位不可行。

与直接指纹比较方法相比,该方法大大降低了内存和处理量开销。由于指纹不需被存储,因此内存量与指纹长度无关。当在某个tk处计算出字符串S的指纹时,它将被哈希进BF B[tk]中。在该点,确定相关比特是否为0的检测只需进行一次。没有涉及指纹匹配。然而,概率检测存在的问题是它可能导致虚警,即有些情况下,S为tk位不可行,但是由于BF中的B[tk]冲突,我们可能认为存在指纹匹配。因此,需要仔细选择B[tk]中的比特数量。

4.1 定位Bloom滤波器

本节将给出概率检测的一些属性,这些属性有助于确定如何部署BF。假设有k个检测点t1,t2,…,tk。已知字符串S,定义l1=t1且lj=tj-tj-1,其中j=2,3,…,k且lk+1=l(S)-tk。请注意,lk+1=l(S)-tk表示lk+1=l(S)-tk和tj两次检测间的比特数量。考虑到一个字符串的检测延时为字符串成为不可行字符串到不可行被检测出来之间的间隔。一般来说,检测延时取决于字符串从哪个点开始成为不可行字符串。由于我们是周期性地检测字符串,所以用θ(S,k)表示字符串S在比特k处成为不可行字符串时的检测延时。因为我们使用的是概率检测策略,所以θ(S,k)是一个随机变量。因此,E[θ(S,k)]表示字符串S在比特k处成为不可行字符串时的检测延时期望值。最差期望泄露表示为maxkE[θ(S,k)]。我们规定,最坏期望检测延时应该小于δ。换句话说,希望提出一种消耗内存最小的概率检测机制,以保证:

下面将定义检测点的检测概率,这对确定内存分配具有重要作用。

定义4检测点tk处的检测概率定义为在tk处为不可行的字符串可以被检测出来的概率。我们将tk处的检测概率表示为pk。

请注意,任一检测点的检测概率将取决于在该检测点分配给BF的比特数量。已知字符串S,考虑tk≤l(S)时字符串的最后一个检测点tk。由于tk后字符串没有被检测,所以:

由于希望实现maxkE[θ(S,k)]≤δ,于是设置lk+1=δ。从技术角度来说,lk+1≤δ,但是使用等式关系,因为这是最宽松的条件。现在考虑字符串在tk-1后才变为不可行字符串时的检测延时期望。在对tk检查时不可行性以概率pk被检测出来:

由于对min maxkE[δ(S,k)]有兴趣,所以生成pk使E[δ(S,tk-1+1)]=δ。于是,lk+(1-pk)δ=δ。为了求解pk,我们有lk=pkδ。请注意,如果在间隔lk内的任意点,字符串变得不可行,则检测延时只会降低。如果不可行比特在lk-2检测之后设置,则检测延时期望将为:

同时,我们希望该值等于δ。

将lk=pkδ和lk+1=δ代入上式并化简,有lk-1=pk-1δ。持续进行上述步骤,将会发现:

现在得到了检测点和检测概率之间的关系。同时,可以确定为了达到所要求的检测概率,需要多少个比特。

4.2 实现检测概率所需要的比特

假设需要确定到底需要多少个比特才能实现检测概率p。假设有b个比特和h个哈希函数的BF滤波器。如果数据库中有n个字符串,则基于h个哈希函数的BF滤波器的检测概率为:

已知p,并且需要确定哈希数量h,以实现内存量b的最小化。为了求解式(2)中的b,我们有:

本文不是对h微分,而是使用与文献[10]类似的方法,设置将h值代入式(3),有:

请注意,当已知哈希最优数量时,上式右侧将实现最小化,对应的最小内存量为:

式中,已经假设了哈希数量可以为分数。在计算实际内存量时,必须要考虑最优哈希数量必须为整数这一事实。有一种特殊情况就是哈希数量为1(h=1)。此时,p和b间的关系为:

总体来说,δ值确定后,式(1)将检测概率表示为一个滤波器部署位置的函数,式(4)给出了为了实现预期检测概率,D中每个字符串需要的最小比特数量。在下面两节,将讨论到底应该在什么地方进行检测,以实现内存需求量最小化。检测位置取决于数据库中字符串长度l(Fj)的分布。在讨论一般化情况前,首先讨论数据库中所有字符串长度相同这一特殊情况。

5 字符串长度相同时的检测概率

假设考虑的情况中,数据库有n个字符串,每个字符串的长度为L。对概率检测,必须要确定如下事项:1)检测数量;2)检测位置;3)每次检测时分配的比特数量。

假设δ表示最差检测延时期望。假设使用k个检测点(待定)。根据式(1),有:

由于所有字符串的长度为L:

这表明:

因为所有字符串的长度相同,可以假设所有的pj具有相同的数值比如p。假设使用k个检测点,每个检测点的检测概率为p。在上式中设置pi=p,为了求解p,有:

为了实现该检测概率所需要的比特数量已经在式(3)中给出:

比特总数量为我们希望选择合适的k使B最小化。如前文所述,上面B式只是近似表达式,因为它假设使用的哈希数量可以为分数。然而很明显,B是关于k的一个递减函数。当k较大时,p将变小,只有唯一的最优哈希函数。对单一的哈希函数,我们知道,实现给定检测概率需要的内存量在式(5)中给出,因此,使用单一哈希函数,可以将内存量计算为已知δ后,希望确定检测点的数量,使B最小化。就B对k微分,然后设置为0来求解k值,可得将其代入B表达式,可得最小内存量为因为在上一近似表达式中已经假设了于是有log B+logδ≈log(e Ln)。现在开始考虑数据库中字符串长度不一这一普遍情况。此时,因为字符串的数量随检测点而变,所以不能假设所有pj相同。首先根据讨论字符串长度相同时获得的一些结论,研究一种启发式算法;然后,提出一种基于最优动态规划的内存量最小化算法。

5.1 等距检测启发式算法

当所有字符串的长度均为L时,最差检测延时期望为δ,每次检测的检测概率为因为最优值为则每次检测时的比特数量为L。当字符串长度不同时,使用如下启发式策略:

1)设置每个滤波器的检测概率为这表明,对所有的j均有于是所有检测的间隔均为

2)对应的检测点数量为

3)每次检测j的比特数量为

于是,检测需要的比特总量为:

请注意:

其中,M是数据库所有字符串的比特总量。很明显,这表明需要的比特总量为:

或者:

式(6)给出了一种简单的经验法则,可用于确定字符串长度不同时需要的内存量。在下节,将提出一种基于动态规划的算法,用于确定字符串长度不同时需要的比特最优数量。在评估部分将会证明,上文提出的启发式算法可以有效近似几乎所有检测问题的最优解。

5.2 基于动态规划的最优算法

如上文所述,因为检测概率是检测位置的函数,所以字符串长度不同时难度很大。考虑到N(t)为长度超过t个比特的字符串数量。如果希望得到位置t处的检测概率p,则需要的比特数量为:

于是,更应该确定N(t)在什么位置变小。这必须与最大最差检测延时期望δ做出折衷。我们必须确定最优检测位置及每个检测位置BF滤波器的比特数量。由此提出了一种动态规划算法来确定最优比特数量。

算法3 Optimal Filter Placement()

该算法的主要特点如下:

1)算法对比特t维护一个状态值f(t),表示直到t比特(不包括)的比特最优数量。

2)使用辅助变量p(t)来重新计算动态规划算法。p(t)值表示在比特t右侧将要执行检测的最近位置。

3)算法从lmax开始反向运行至第1个比特。开始时对所有的1≤t≤lmax,有f(t)=0。我们知道lk+1=δ,于是设置上一次检测为lmax-δ。同时设置f(lmax-δ)=0且p(lmax-δ)=。

4)f(t)表示了直到t比特的最优比特数量:

其中,第一项表示滤波器位于位置t时,位置t+g需要的比特数量。请注意,此时滤波器间的距离为g;从式(1)可知位置t+g的检测概率为在t+g处有N(t+g)个字符串。因此,t+g需要的比特数量为第二项f(t+g)表示从t+g开始需要的比特最小数量。g的数值不得大于δ,因为如果大于δ,则会导致最差检测延时期望大于δ。

5)设下式表示实现数值最小化时的位置:

设置p(t)=t+g*。当BF滤波器的位置和检测概率已知时,便可以很轻松地确定哈希数量及BF需要的比特数量。请注意,动态规划算法的运行时间为O(lmaxδ),因为对每个比特,必须要计算δ个数量的最小值且共有lmax个比特。

6 算法部署

本节对指纹比对和Bloom滤波器算法的部署展开详细讨论。由于指纹比对算法易于分析,所以没有对其进行实际部署,而只是给出简要设计。我们已经部署了Bloom滤波器算法,并在下文详细讨论。

6.1 指纹比对算法

该算法首先需要生成所有文件的指纹。为了使检测延时为L个字节,需要对所有文件每L个字节生成一个指纹。用“渐进”策略生成这些指纹,每个指纹覆盖从开始一直到文件当前位置的所有内容。实现方法如下:

对一份给定文件,将其分为n段,每段有L个字节。设CRCi为第i段的128位校验和。第一个校验和CRC1以0作为种子整数,并且覆盖文件的第一段。校验和CRCi+1以CRCi作为种子整数,根据长度为L字节的第(i+1)段计算校验和。于是,文件前i+1段任何一处发生数据变化,都会造成CRCi+1改变。所有n段的指纹可以放入哈希表,以便在运行期间查询。所有文件可以共享相同的哈希表,为部署提供便利。

当数据流到达时,系统可以对数据的每L个字节逐步计算CRC校验和,然后查询哈希表以确定是否存在匹配的指纹。如果找到了对应的指纹,则数据流可以继续。否则,数据流必须丢弃。

6.2 基于Bloom滤波器的算法

这一算法的部署分为3个步骤:预处理,滤波器构建和在线检测。

预处理首先针对当前文件集合生成文件大小分布。然后,对给定的目标检测延时,运行动态规划算法,以计算最优滤波器部署策略,包括滤波器位置、哈希函数数量和滤波器大小。将在下节证明,目标检测延时和Bloom滤波器需要的内存总量之间往往存在直接的映射关系。

滤波器构建在这一步中,根据计算出来的最优滤波器配置来构建Bloom滤波器。对Bloom滤波器,使用基于CRC的哈希函数。总体来说,Bloom滤波器可能需要多个哈希函数。通过在数据末尾增加多个随机数然后计算与每个哈希函数对应的新的CRC的方法,可以实现这一点,如文献[11]所示。然后使用CRC模m运算来将CRC的值映射为Bloom滤波器的一个比特指数,其中m是滤波器的比特数量。对所有文件重复这一步骤,直到插入所有密钥。

在线检测滤波器构建完毕后,系统便可以进行在线检测。在这一步中,将对数据流进行处理,并且持续计算CRC校验和。然后,在事先明确的每个位置,执行Bloom滤波器检验。如果Bloom滤波器的测验结果表明存在匹配,则数据流可以继续。否则,数据流必须丢弃。为了尽量降低小型文件的泄露,规定在释放最后一个报文前必须在数据流末尾执行一次检验。通过这种方法可以保证包含在单个报文中的小型文件总可被检测。

7 性能评估

7.1 实验配置

基于3个真实文件集合(总大小达70 GB)来评估本文算法(如表1所示)。从先前文献[12,13]中获得txt和html文件。简单来说,从社交书签网站del.icio.us 454K名用户的(公开)书签中获得txt文件。在截取之后,每名用户的书签存储在一个单独的txt文件中。通过从一小组随机用户开始执行广度优先搜索(BFS)来获得这些用户。通过Wikipedia.org网站页面前500次修改内容获得html文件(Wikipedia只保存每个页面的前500次修改)。仍然从一小组随机选择的常用页面开始执行广度优先搜索(BFS)来获得这些页面。通过“Google”、“Microsoft”、“Medicine”等关键词Google搜索并且将搜索结果限制为docx、jpg、pdf等文件类型来获得混合型文件。最后,将7 KB个私人mp3文件混入到混合型文件中。

在Bloom滤波器实验中,对所有文件集合执行上节描述的3个部署步骤。在最后一步中,为了模拟数据泄露,随机选择了1000份文件,然后在每份文件中选择一个字节作为“坏字节”,并且更改它的数值。于是,对每份文件,向每个Bloom滤波器位置逐步计算CRC,并且检测该指纹在滤波器位置是否存在。如果检测失败,则认为存在坏字节。检测位置和“坏字节”位置间的差值就是被泄露的字节数量(检测延时)。

7.2 实验结果

我们将在本节给出评估结果。图2给出了3个文件集合文件大小的互补累积分布(CCDF)。因为所有分布在开始时下降很快且尾部较长,所以在这里以对数标度展现x和y坐标。与所预期类似,txt文件集合与其他两种文件集合相比,包括的小型文件的比例更高。Html集合包含更多的中型体积文件(10 KB~5 MB)。混合型文件加入了许多mp3文件,所以主要包括大型体积文件。

指纹匹配VS Bloom滤波器图3给出了不同检测延时期望时,Bloom滤波器和指纹匹配方法的内存使用量。x和y坐标均为对数坐标。很明显,Bloom滤波器对所有文件集合均将内存使用量降低了50倍左右。例如,对数据量达36.8 GB的混合型文件集合,Bloom滤波器实现1000字节的检测延时期望,只需要12 MB内存。请注意,本文的指纹匹配算法与文献[7]中的Glavlit算法类似,其主要区别在于,Glavlit使用160比特的SHA-1指纹,而不是本文指纹匹配算法的128位CRC。所以我们认为,Glavlit消耗的内存量将多于本文CRC指纹算法。

Bloom滤波器算法的最优哈希函数数量始终为1。因此,每次检测时,两种算法均需要计算一个哈希函数。指纹匹配算法需要查询哈希表以定位和匹配指纹。Bloom滤波器算法需要检测滤波器比特数组中的一个比特。此外,哈希表可能存在冲突,额外造成CPU高速缓存未命中及内存访问延迟问题。于是,Bloom滤波器的开销始终只是一个比特的内存访问,因此具有很大优势。

我们还观察到,当以对数为标度的检测延时上升时,以对数为标度的内存量呈线性下降。换句话说,无论部署了多少个检测点,内存大小和检测延时乘积保持不变。这一点对指纹匹配和Bloom滤波器算法均成立。原因如下:在指纹匹配算法中,检测点以固定间隔配置,且间隔长度等于检测延时。对每个检测点,每个文件存储了一个128位的指纹。于是,当检测延时期望增长α倍时,滤波器数量下降α倍。即使是对不同的检测延时,仍可保持每个滤波器的大小相同。式(6)对3个文件集合同样成立,通过实验也证明了这一点。由于篇幅所限,没有给出相关图形。

实际平均检测延时基于动态规划生成的滤波器部署结果来构建Bloom滤波器,通过实验仿真来测试泄露检测效果。实验覆盖txt、html和混合型3种文件集合。然而,由于实验结果类似,这里只给出html文件的实验结果。

图4给出了html文件的检测延时期望和实际检测延时比较结果。可以发现,实际检测延时总是低于期望检测延时。这是因为,在计算检测延时期望时假设了“坏字节”刚好加在上一滤波器之后,但是在仿真实验中,坏字节插入位置是从均匀分布中随机选择而得。

图5给出了html文件集合不同检测位置时1000个采样点的实际检测延时。所有情况下的检测延时期望均为200字节。虽然按照均匀分布随机采样文件和测试位置,但是测试位置倾向集中于对应的文件大小范围内。对所有文件集合,1000个采样的检测延时均值总是小于检测延时期望值,这与前文解释一致。最大检测延时大约是平均值的6倍。

与其他位置相比,开始附近的测试位置(图中左侧)的检测延时较小,具体原因与前文阐述相同,这些数据点主要对应于小体积文件。除此之外,其他测试位置范围的检测延时无明显偏差。

吞吐量评估基于Linux平台gprof技术进行初步的性能研究,以评估泄露检测步骤的吞吐量。实验平台为Intel(R)Xeon(R)E5420 CPU(2.50 GHz),6 MB L2高速缓存及16 GB内存。我们已经使用了单核及小部分内存。检测步骤的主要开销包括两个部分:(1)到达数据流的CRC计算;(2)所有检测点的Bloom滤波器检测。图6给出了html文件集合检测不同延时期望时检测步骤的吞吐量。这里,吞吐量计算为该步骤总执行时间内被处理的总数据量的比例。

总体来说,吞吐量大约为1~3 Gbps。请注意,这一结果以未经优化的代码为基础。我们认为,通过CRC汇编码计算和多核支持等优化技术,可以获得进一步的性能提升。

8 结语

上一篇:微博上的暑假下一篇:超声处理