自动侦测(精选7篇)
自动侦测 篇1
在近日举行的日本电子高新科技博览会(CEATEC)上,日立展出的最引人注意的产品是一款人脸识别电视,这台电视最奇特处在于它可以在用户不看的时候自动关闭画面节约电能。
日立此次在CEATEC展示的原型等离子电视是内置了一个摄像头。这个摄像头可以侦测出用户是否在凝视它,或者用户在走神看屏幕以外的其他地方,摄像头发现用户在看屏幕以外的其他地方,电视的节能模式被激活,屏幕就会切换到黑屏状态。
日立的人脸识别电视在节能环保上是相当有意义的。
自动侦测 篇2
关键词:串行通信,波特率,自动侦测,仿真结果
0引言
串行数据通信是应用极为广泛的技术, 通过数据传输控制或监测中心可以对远端设备进行控制和监测设备的工作状态。串行外设都会用到RS-232C异步串行接口。传统上采用专用的集成电路即UART实现, 如TI, EXAR, EPIC的550, 452等系列, 但是我们一般不需要使用完整的UART的功能, 而且对于多串口的设备或需要加密通讯的场合使用UART也不是最合适的。如今的许多电器都有串口, 主要用于软件的升级或者用于自诊断。通常单机设备的串行通信波特率设置都是采用硬件拨码的方式进行的, 对于一些拨码开关特别多的设备来说难于记忆, 因此能否寻求一种波特率自适应的方法来解决这个问题。回答是肯定的, 本文就介绍一种用复杂可编程逻辑器件来实现波特率自动侦测的方法。系统只设计了数据接收模块, 利用VHDL语言对其进行编程, 最后给出其仿真结果。
1系统设计
1.1 系统介绍
图1为数据接收模块结构框图, 数据接收模块由波特率发生基准时钟、开始位下降沿检测、接收控制、串并转换器、锁存器、缓冲器等部分组成。为了能准确地侦测出接收数据的波特率, 数据接收模块中采用了波特率发生基准时钟, 首先用基准时钟对RXD端的数据进行接收采样, 然后按波特率自动侦测原理进行波特率自动侦测, 最后产生一个与发送端发送的数据相同的波特率, 利用波特率进行通信。
1) 串行数据接收采样。
为了能对位进行正确的操作, 以基准波特率16倍的速率采样RXD端的电平, 这就把接收一位的时间分成16份, 当检测到开始位的下降沿时, 就开始进行数据采样。采样的数据为一个位的第6, 7, 8三个状态, 然后从三个里面取两个以上相同的值作为采样结果, 这样可以避免干扰。
2) 串行数据接收控制。
当开始位的采样结果不是0时就判定为接收出错, 把串行接收控制器的位计数器复位。在波特率未侦测之前, 当接收完波特率自动侦测原理需要的位数后就进行数据的输出, 并把串行数据接收控制器的位计数器复位, 等待正式数据的传输开始。当波特率确定之后, 按照设计的数据传输格式 (开始位、8位数据、停止位、无校验位) , 当接收完10位数据后就进行数据的输出, 并把串行数据接收控制器的位计数器复位, 等待下一数据的到来。
1.2 波特率自动侦测原理
众所周知, 微机键盘中的回车键 (CR) 常用于命令的执行, 许多程序中的命令都是以回车键来结束的, 因此在波特率自动侦测中也采用回车键。因为回车键在ASCII码中的值为0X0D (十六进制) , 用二进制来表示即为00001101B, 在异步传输过程中, 数据的传输是以高电平来代表‘1’, 用低电平来代表‘0’, 在10位数据 (1个起始位、8位数据、1个停止位) 的格式下传输回车键的传输格式如图2所示。所以规定在数据发送前, 先发送回车字符, 数据在传输过程中, 低位在前, 高位在后, 再加上开始位和停止位其二进制表达式为0101100001 (开始位加数据加停止位, 其中数据低位在前, 高位在后) , 根据数据传输格式可看出, 只要能测出开始位和数据位的最低位之间的时间间隔, 即可知道数据传输的波特率 (由波特率的定义知每位数据传输的时间为波特率的倒数, 又每位数据的传输时间即为两位数据传输的时间间隔) 。因此我们采用一种以“帧” (此处的“帧”为在数据传输过程中, 每发送一个字符加上开始位和停止位) 为单位来进行波特率自侦测的方法, 同样是以回车字符为先导。我们假设设备的通信速率在9 600 bps~115 200 bps之间, 系统时钟频率为44 MHz。根据设备通信的波特率都有一定的规律性, 所以我们在9 600 bps~115 200 bps之间列出所有常用的波特率:9 600 bps, 14 400 bps, 19 200 bps, 28 800 bps, 38 400 bps, 57 600 bps, 76 800 bps, 115 200 bps。在这些波特率当中把9 600 bps, 19 200 bps, 38 400 bps, 76 800 bps归为第一组;把14 400 bps, 28 800 bps, 57 600 bps, 115 200 bps归为第二组, 在第一组中使用一个波特率基准发生时钟把它称之为基准时钟1, 在第二组中也使用一个波特率发生基准时钟把它称之为基准时钟2。两组基准时钟同时对系统接收端的数据进行接收, 当任一组接收完10位数据之后, 取中间的8位数据 (除数据位0和数据位9) , 然后再根据这8位数据确定发送数据的波特率, 其具体过程如下。
取第一组中的基准时钟的波特率为76 800 bps, 第二组中的基准时钟的波特率为115 200 bps 。以第一组为例, 假设发送数据的波特率为76 800 bps, 则接收的数据为回车字符 (0X0D) 。若发送数据的波特率为38 400 bps, 则因基准时钟的周期为发送数据的波特率时钟周期的1/2, 所以基准时钟每两个时钟周期接收一个数据, 故所接收的数据用二进制表示为00110011110000000011B (低位在前, 高位在后) , 取前10位 (0011001111) , 除去第一位和最后一位所得数据为01100111B (0XE6) , 其他波特率以此类推。
第一组中的波特率为9 600 bps的2n倍 (其中, n=1, 2, 4, 8) ;第二组中的波特率为14 400 bps的2n倍 (其中, n=1, 2, 4, 8) 。虽然第一组和第二组中接收的字节当n相同时是一样的, 但是若发送数据的波特率在第一组所列的波特率中, 则按第一组来锁定波特率, 这时第二组接收的字节就不是关系图中所列的字节。同理, 第二组也是一样。其算法如图3所示。在算法中设置标志位FLAG, 程序初始化时就设置FLAG为‘1’ (默认设置) , 当接收完10位数之后, 取中间的8位数据 (除数据位0和数据位9) 用第一组所列波特率来判断, 若不满足就设置FLAG为‘0’, 启用第二组所列波特率来判断。这样便能侦测出第一组和第二组中所列的所有波特率。
2功能编译、设计仿真与硬件下载
本系统采用Altera公司生产的FLEX10K系列的CPLD芯片, 应用该公司的MAX+PLUS Ⅱ软件完成设计后, 需对各种源文件从底层到顶层逐个编译, 再进行逻辑仿真。选择器件后, 打开检查项目中所有设计文件, 通过检测发现在编程器件中可能存在的不可靠性不好的逻辑器件引脚分配。Altera 公司推荐的编译器可自动为项目进行引脚分配, 也可人工调整引脚。在编译器窗口选择Start按钮, 将对所有设计的项目进行处理, 出现错误将给出具体错误提示。为了保证设计的正确性, 在编译通过后, 还需要进行逻辑仿真。仿真通过后再运用MAX+PLUS Ⅱ的编程器对所选可编程逻辑器件下载编程, 便完成了数据接收模块的ASIC芯片设计和硬件固化。最后给出数据接收仿真波形图。
从数据接收仿真波形图可看出, 外围系统发送过来的数据为“0X0D” ( 回车符) , 系统接收解码之后, 自动侦测出发送来的数据的波特率, 然后锁定波特率继续接收下一个字符“0XF8”, 从接收的结果可以看出, 数据接收正确。
参考文献
[1]周立功.单片机与CPLD综合应用技术[M].北京:北京航空航天大学出版社, 2003.
[2]诸振勇.FPGA设计及应用[D].西安:西安电子科技大学, 2002.
[3]黄正瑾.CPLD系统设计技术入门与应用[M].北京:电子工业出版社, 2002.
[4]陈耀和.VHDL语言设计技术[M].北京:电子工业出版社, 2004.
[5]林明权.VHDL数字控制系统设计范例[M].北京:电子工业出版社, 2003.
自动侦测 篇3
异常用电广义而言包括用户有意识地通过非法手段减少抄表电量和电费(即窃电),也包括用户突然改变用电规模或者用电习惯而导致的用电量突增、功率因数突变等情况[1]。对上述异常用电情况的侦查、判断、跟踪、分析,对电力部门预测营销收益、实施能耗监测、规避电费损失具有重要意义。
目前国内外基于数据挖掘的窃电侦查方法主要可归结为基于聚类分析[2,3]和基于分类分析[4,5,6,7,8,9]两大类方法。无论是聚类算法还是分类算法,其优点都是准确度高、节省人力资源、耗时短。缺点是需要大量准确的历史数据和当前数据,对计量装置的稳定性提出了很高的要求。另外,在上述两类方法的应用中,往往以用户在过去一年中逐月的用电量数据作为样本,根据月用电量波动曲线的异常性来判别用户是否是窃电可疑用户。这种做法并没有充分利用智能电表的数据定时回传特性。由于窃电往往具有时段性(夏季高发),基于整年逐月用电量的侦查方法不利于供电企业及时发现和制止窃电、及时规避电费的流失。如何提出实时性更高的在线稽查分析方法是一个值得探讨的问题。
有利用数据挖掘的异常用电侦查方法主要基于多月用电量数据,针对这些方法时效性低的缺点,本文提出面向用户日用电量序列的异常用电在线分析方法。本文以居民窃电侦查为例,首先分析异常用电用户日用电序列经平稳化处理后的特点,提出水平迁移的概念;其次针对一定时间跨度的平稳化后的日用电量序列,提出判定水平迁移的累计和值方法;最后将累计和值方法应用于异常用电的在线侦查情况,提出在线侦查流程。
1 日用电量时间序列的特征分析
在进行异常用电侦测之前,首先要确定的是异常用电侦测指标。换言之,需要明确正常用电和异常用电的区别,正常用电和异常用电用户负荷曲线的主要特征。
1.1 正常用电
对于正常用电的用户,采用一定的平稳化方法处理后的日用电量时间序列X呈平稳时间序列的表象,如图1所示。对窃电用户历史日用电量数据的分析表明,用户窃电通常是持续性行为,日用电量短时间(通常为1、2天)水平下降往往并非由窃电引发,而是可能源于用户的偶然生活行为(如出差)或者计量仪器的故障。这些短时期的水平突升/突降,从时间序列来看,构成一些离群点(outliers)[10]。这些离群点,并不影响其用电水平大致保持平稳的特性。因此离群点并不作为异常用电侦测指标,例如图1中的用户属于正常用户。
1.2 异常用电
在时间序列的某一时刻T,系统发生了某种变化,使得T时刻之后所有的或者一段时间内的数值均值发生了变化,称为水平迁移[11]。从窃电行为定义推测,异常用电用户表现为骤然出现持续一段时间的、明显持续性地低于该用户一般水平的负荷数据,即用户日用电量时间序列发生水平迁移。平稳化处理后的时间序列中仍保留这种水平迁移特性,如图2所示。这种水平迁移特性是由异常用电行为导致的干扰分量引起的。
此外,水平迁移分为向上水平迁移和向下水平迁移两种。显然,窃电行为的表现是日用电量曲线发生向下水平迁移。向上水平迁移虽然也可能暗示着某种异常用电事件,但暂不作为本文研究内容。为此,在判定水平迁移后,若仅关心窃电问题,则还需要结合水平迁移是向上、向下来判断是否窃电嫌疑。
根据现有窃电用户日用电特征,可以总结为以下几类:
1)单次下降型:单次下降型的主要特征是日用电量水平突降后,较低值一直持续到时间跨度的结束点。日用电量水平突降可能下降为零,也可能下降为一个较低的值(如图3所示)。
2)低谷型下降:即日用电量水平的突降仅维持一段时间(几天或几周),然后日用电量水平又有突升。用电量突降前的用电水平可能是比较平稳的,也可能是波动比较大的(如图4所示),这与用户的生活习惯有关。这一段时间的用电量突降也可能由非窃电因素引起(如出差、旅游等),但本文研究的是异常用电嫌疑用户,故在人工目测时将此类情况也作为异常用电处理。对于该情况需结合外场检查、当场举证后才能判定是否窃电,本文算例中暂作为窃电处理。
3)特殊型:主要特征是日用电量曲线整体持续低水平,但又偶尔出现单个或多个离群点,如图5所示。
2 基于累计和值的水平迁移判断方法
本节将基于累计和值[12]的水平迁移判定方法应用于固定时间跨度日用电量序列中异常用电的侦查,细化相应的方法。为便于表述方法思想,举例说明整个算法过程。所举用户在固定时间跨度(111天)下经平稳化后的日用电量序列如图2所示。可见该用户的日用电量在大约第20至第60个数据点间发生了明显的水平迁移。
2.1 时间序列的累计和值定义
设已知日用电量数据的时间跨度中包含n个数据点,即对应n天的日用电量数据,记日用电量在平稳化处理后所得的时间序列为X1,X2,X3…Xn。为侦查出水平迁移,累计和值法的判定步骤如下。
首先按下式计算出n个数据的平均值:
进而定义累计和值为各点数值与上述平均值差值的累积,即:
以图2中的用户为例,该用户在n=111天中的平稳化后日用电量时间序列数据如表1所示,易知111天中的均值为0.018 6,进而可以算得累计和值如式(3)所示。
将这些值按时间顺序绘制出来,得到累计和值图,如图6所示。需要注意的是,累计和值不是字面上的各点数值的累积,而是各点数值与数据平均值差值的累积。因为各点数值与数据平均值差值总和为0,所以累计和值总是以0为结束(Sn=0)。
2.2 水平迁移判断判据
判断水平迁移首先需要读懂累计和值图并挖掘其背后的信息。
假设在一段时间内的所有数值都大于数据平均值,也即:
那么这段时间内差值保持为正数,累计和值持续上升,可以计算累积和值的斜率为:
累计和值图中向上倾斜的部分线段意味着这段时间内的数据点数值全都大于数据平均值。相应的,累计和值图中向下倾斜的部分线段意味着这段时间内的数据点数值全都小于数据平均值。累计和值图中相对平直的部分线段意味着这段时间内的数据点没有发生突变,而累计和值图中的拐点意味着数据点出现了突然的水平变化。
以此方法来分析一下示例用户日用电量时间序列的累计和值图。图2在20左右的时间点发生了方向上的变化。这意味着在这个时间点上,时间序列值相对于均值的大小关系发生了变化。在这个变化发生之前,累计和值线段呈向上倾斜状,表明这段时间内的数据点数值全部大于数据平均值;在这个变化发生之后,累计和值线段向下倾斜状,表明这段时间内的数据点数值全部小于数据平均值。同理,累计和值图在60左右的时间点上也发生了方向上的变化。这意味着在20左右和60左右的时间点上都发生了水平迁移,进一步说,前者是水平向下迁移,后者是水平向上迁移。在80到120这个时间段内,累计和值线段相对平稳,表明这一时间段内数据点数值相对平稳。依据累计和值图做上述分析,获知该用户日用电量时间序列至少发生了两次水平迁移。
3 在线异常用电分析的初步算法流程
将固定窗口水平迁移侦测运用到在线异常用电分析,固定窗口水平迁移侦测的缺点是只能侦测到目前窗口中迁移幅度最大的水平迁移,解决的办法是缩小窗口,并不断移动窗口进行水平侦测。
设窗口大小为W,移动间距为I。初步的移动窗口水平迁移侦测算法流程如图7所滇池。
首先导入经过平稳化处理后的用户数据,设定窗口的大小和移动间距后,开始以固定窗口大小循环对整个数据序列进行水平迁移侦测,直至整个数据序列全部侦测完,之后根据是否在各个窗口内侦测到水平迁移,从而判断该用电用户是否有异常用电嫌疑。
4 结束语
本文首先研究了异常用电用户平稳化后日用电量时间序列的特点,提出了水平迁移的概念。根据异常用电用户平稳化后日用电量序列存在水平迁移的特点,进一步提出了运用累计和值方法判定平稳化后日用电量序列是否存在水平迁移、进而判定其是否异常用电可疑的方法。最后将上述判定思想推广到移动窗口的情况,使判定过程适用于对居民日用电量时间序列的在线分析,提出了具体的算法流程。从示例用户的侦测情况来看,本文提出的基于水平迁移侦测的异常用电在线分析方法可靠、有效。
参考文献
[1]DEPURU S S S R,WANG L,DEVABHAKTUNI V.Electricity theft:Overview,issues,prevention and a smart meter based approach to control theft[J].Energy Policy,2011,39(2):1007-1015.
[2]WAGSTAFF K,CARDIE C,ROGERS S,et al.Constrained k-means clustering with background knowledge[C]//ICML.2001,1:577-584.
[3]窦全胜,史忠植,姜平,等.调和聚类-分类方法在电力负荷预测中的应用[J].计算机学报,2012,35(12):2645-2651.
[4]胡琛.数据挖掘技术在电量管理与反窃电系统中的应用与研究[D].武汉:武汉大学,2004.
[5]FOURIE J W,CALMEYER J E.A statistical method to minimize electrical energy losses in a local electricity distribution network[C]//AFRICON,2004.7th AFRICON Conference in Africa.IEEE,2004,2:667-673.
[6]NIZAR A H,DONG Z Y,ZHAO J H,et al.A data mining based ntl analysis method[C]//Power Engineering Society General Meeting,IEEE,2007:1-8.
[7]SAFAVIAN S R,LANDGREBE D.A survey of decision tree classifier methodology[J].IEEE transactions on systems,man,and cybernetics,1991,21(3):660-674.
[8]BRUN A D M,PINTO J O P,PINTO A,et al.Fraud detection in electric energy using differential evolution[C]//Intelligent System Applications to Power Systems,2009.ISAP'09.15th International Conference on.IEEE,2009:1-5.
[9]NAGI J,YAP K S,TIONG S K,et al.Detection of abnormalities and electricity theft using genetic support vector machines[C]//TENCON2008-2008 IEEE Region 10 Conference.IEEE,2008:1-6.
[10]ALARCON AQUINO V,BARRIA J A.Change detection in time series using the maximal overlap discrete wavelet transform[J].Latin American applied research,2009,39(2):145-152.
[11]MAS J F.Monitoring land-cover changes:a comparison of change detection techniques[J].International Journal of Remote Sensing,1999,20(1):139-152.
自动侦测 篇4
跳频通信技术具有优良的抗截获、抗干扰性能, 在数字通信中得到了广泛应用。随着技术的进步, 跳频通信系统的跳频速率越来越高, 为实现对高速跳频SDPSK调制信号的侦察及干扰, 需要在非合作状态下实时检测信号, 实现解跳频, 并准确得到信号参数。为此, 采用高速采样器对目标信号进行采样, 在FPGA中进行实时处理, 实现了对该跳频信号的实时解跳和参数测量。
1 SDPSK信号特征分析
常规DPSK调制, 由于相邻符号间可能发生180°相移, 经限带后会出现包络为零的现象, 这在非线性信道中是不希望出现的。SDPSK (Symmetrical DPSK) 调制样式使用±90°的相差, 包络起伏小, 因此更适合在非线性信道中使用。SDPSK调制信号可表示为:
式中, ωc为载波频率, Ts为符号时间, g (t) 为脉冲函数, φk为第k位数据的调制相位。满足下式:
式中, , am为第m个基带码元。
提取常规PSK信号的调制参数, 多采用平方或多次方处理。若对式 (1) 进行平方处理, 其相位项变为2ωct+2φk, 其中2φk=2φk-1+πδm, 将2φk当作平方后调制信号第k位数据的调制相位, 可看出, 信号相邻码元相位均发生跳变, 且跳变值为π, 可认为信号变为基带信号为0、1码交替的特殊BPSK调制信号, 其频谱存在离散谱线, 且幅度最高的2根离散谱线以载频位置为中心对称, 2根谱线间距在数值上等于码速率。再次平方后, 相位跳变消除, 信号变为单频信号。
2 跳频信号检测及解跳
2.1 信号检测与载频粗测
检测SDPSK信号可采用平方或四次方处理, 考虑硬件实现难度, 在此选用平方处理方法。SDPSK信号经平方处理后, 其频谱出线2根离散谱线。通过搜索离散谱线的存在, 可实现SDPSK信号的检测及识别。FPGA实现时首先将高速采样数据进行缓存, 再以某一固定速率读出, 并进行2倍插值、滤波, 以避免平方处理时可能造成的频谱混叠。平方后进行FFT运算, 对FFT结果进行峰值提取后, 搜索2个高于检测门限的离散谱线, 如果存在, 则认为检测到SDPSK信号。记录2个谱峰位置为p1和p2, 计算信号载频值如下:
式中, fs是ADC采样率, N是FFT计算点数。在跳频信号解跳处理中, 载频的估计精度不要求太高, 适当选取FFT的点数N对载频粗测, 即可满足测量要求。
2.2 双滑动窗能量检测
双滑动窗能量检测算法是寻找2个相邻窗内能量差最大的时间点作为信号结束点的算法。跳频信号依据某跳信号粗测的载频值搬移到零中频, 并逐点滑过相邻的2个能量窗, 2个窗中信号能量差最大的时刻点, 即为该跳信号的结束点, 也就是下一跳信号的起始点。
具体实现方法如下, 首先假设零中频数据为r (n) , 然后将r (n) 通过2个长度均为W的滑动窗, 2个滑动窗内信号的能量分别为:
式中, k≤n-2*W+1。
2个滑动窗内信号的能量差为:
连续移动滑动窗, 当ΔE取最大值时, 就获得了信号的结束点。
利用结束点信号再去启动信号检测模块, 进行下一跳数据的检测。这样, 就可以使整个检测过程自动进行。为了保证环路工作稳定可靠, 并且在信号短暂中断情况下不受较大影响, 可以引入锁相环路, 实现如图1所示。
本地用直接频率合成 (DDS) 产生频率等于跳频速率的信号, 与双滑窗每次检测到的跳频结束点信号进行鉴相, 鉴相误差经过环路滤波后修正本地DDS信号的相位, 达到修正错误结束点, 补出漏检结束点的效果。
2.3 解跳过程的FPGA实现
高速跳频信号检测及解跳算法实现如图2所示。整个算法在一片FPGA中实现, 包括信号检测、数字正交下变频、结束点检测等主要模块。信号检测模块用来检测信号是否存在, 粗测每跳数据的载频, 数字正交下变频将中频数据转换成零中频数据, 结束点检测模块用来检测每跳数据的结束点。
3 SDPSK调制参数测量
3.1 SDPSK信号参数测量
准确测量SDPSK信号的调制参数, 对信号侦察和干扰具有重要意义。如前所述, SDPSK调制信号经过平方处理后变为基带信号为0、1码交替的特殊BPSK调制信号。利用其频谱中2根最高的离散谱线, 可计算得到信号的载频与码速率, 对于采样率fs, FFT点数N, 已知2个谱峰位置为p1和p2 (p1
为实现高精度参数测量, 利用之前信号检测模块频率粗测结果, 将高速采样数据经过正交下变频, 滤波, 抽取后, 得到低速采样率的零中频数据。此时fs/N值相比变频滤波前大大减小, 利于精确测量。
3.2 参数测量的FPGA实现
参数测量实现框图如图3所示。整个算法在一片FPGA中实现, 承接之前信号检测解跳模块, 包括数字正交下变频、载频与码速率测量、载频合成等主要模块。数字正交下变频在一跳起始时刻将高速采样数据转换成零中频数据, 载频与码速率测量模块用来精确测量每跳数据的码速率和载频偏差, 载频合成模块将之前载频粗测结果与载频偏差相加, 得到每跳数据的精确载频。
4 测试结果
首先使用MATLAB软件生成跳频SDPSK信号数据, 再将数据以文件形式载入泰克公司的任意信号发生器AWG7122B, 模拟产生目标信号, 信号跳速设为12 000 hops/s, 码速率设为16 Mbps, 载频为210 MHz和610 MHz交替。使用高速采样板处理信号, 为了便于观察处理结果, 使用Xilinx公司的在线逻辑分析仪软件Chip Scope获取FPGA内部处理数据, 并导入MATLAB软件绘图分析。
图4所示为一跳数据2倍内插平方后的FFT结果, 其中横坐标表示频率 (单位:MHz) , 纵坐标表示功率谱幅度 (单位:d Bm) 。由图4可见, 在610 MHz载频的2倍频 (1 220 MHz) 两边对称存在2根离散谱线, 表明信号存在。
图5所示为2个相邻滑动窗内的信号能量比值, 横坐标表示采样点数, 纵坐标表示能量比, 从图5中可见明显的峰值点, 即为一跳信号结束点, 也是下一跳信号的起始点。
图6所示为一跳数据经过正交下变频降采样率后的平方谱, 横坐标表示频率 (单位:MHz) , 纵坐标表示功率谱幅度 (单位:d Bm) 。离散谱峰位置在图中以星号标出, 根据其位置可计算信号精确的载频值和码速率值。
4 结束语
论述了一种FPGA可实现的高速跳频SDPSK信号实时检测算法。经过试验证明, 该算法可以对宽带高速跳频信号进行实时的解跳, 并能够对信号参数进行准确测量, 可应用于针对特定目标的通信侦察系统, 具有较高的应用价值。
参考文献
[1]曹志刚.现代通信原理[M].北京:清华大学出版社, 1992.
[2]UWE M B.数字信号处理的FPGA实现[M].刘凌, 译.北京:清华大学出版社, 2006.
[3]梅文华.跳频通信[M].刘凌, 译.北京:国防工业出版社, 2005.
[4]王甲峰.SDPSK调制参数的盲估计[J].无线电工程, 2008, 38 (6) :21-24.
[5]宋文政, 彭华.一种基于滑动窗能量检测的OFDM符号同步算法[J].通信技术, 2009, 42 (6) :31-33.
自动侦测 篇5
信息化技术已持续发展十余年,各种网络已经过了多年的漫长建设周期,而在建设过程中由于功能需求不断的变化,会出现大量不同的业务系统、应用组件以及不同版本的操作系统、硬件等设备的不断叠加[1]。这种叠加导致的往往是网络内部IT资产的管理混乱,而从安全角度来说,由于更新换代的速度过快,一些大型网络中往往会出现照顾不到的信息孤岛。这样的信息孤岛多是已经不再使用的老旧业务系统,但由于内部网络的复杂性而被忽略,而这样的孤岛却又是日常安全问题中最薄弱的点,最容易被黑客突破的点。例如随着智能电网的建设和发展,其在线监测系统的不断增加导致“信息孤岛”问题愈发突出,使管理复杂度增加[2,3]。
另一方面,随着互联网技术的不断发展和开发,各类因应用组件造成的安全事件或由应用组件所造成的服务中断等事故,只能是依靠于反馈的方式逐级进行问题提交。对于各类不同应用组件的使用,我们在某一应用组件出现安全风险时只能进行单一的针对性修复或防御策略追加,而无法有效匹配全网中所有的受影响系统,并进行统一的安全修复和防御策略追加,只能被动防御。对于应用组件的变更、系统升级等变化无法进行有效探测和追溯以及安全预警,为改变被动防御的现状,实现资产的有效识别、追溯,建立有效的积极防御体系,需要建立长期的资产全状态管理及预警能力,通过周期化、自动化的软硬件资产普查,掌握各类资产的安全属性,并在漏洞爆发时可以做到有效应对,从而更符合各种政策规范的要求,为网络及业务的稳定运行提供技术保障[4]。
目前,现有设备缺乏对资产的自主发现能力,难以发现网络中存在的“信息孤岛”。从扫描设备来说,扫描设备往往只兼顾其漏洞库所涵盖的设备,对于一些“设备未能识别”的资产缺乏持续的发现能力,因此某些信息孤岛难以被捕获到;而对于事件管理平台来说,若资产不出现可被拦截或捕获的安全事件,资产便永远不会被平台所发现。同时,现有设备缺乏对资产的全方位信息定位能力[5]。一个IT资产,除了其所属管理范围和业务系统外,还具备相当多的外围属性,如:设备类型、组件类型、各类应用版本信息等等[6,7]。而目前互联网上常见的漏洞都是针对特定类型及版本的组件或应用产生的,所有这些信息一旦能够被识别并存储下来进行持续跟踪,便可以实现对漏洞危害范围的持续跟踪。
针对以上问题,本文研究并设计了基于指纹采集的网络空间大规模侦测系统,通过采集网络空间的指纹信息,对网络设备组件进行识别,利用分布式调度和分布式存储技术[8,9,10],设计并实现了大规模分布式侦测,极大提升了侦测速度和侦测效率。本系统具备对IT资产的自主发现能力,并对IT资产进行全方位信息定位,实现对网络空间的全面、实时、精确侦测。
1 系统设计
网络空间是由无数节点构成,每个节点都是一个接入网络的物理设备。多数网络设备内部都装有特定的组件,自主研发或者使用第三方组件。每个网络设备会使用到多款组件,组件是构成网络空间的最小组成单元。基于指纹采集的网络空间大规模侦测系统通过调用调度服务器、UI(User Interface,用户界面)服务器、数据库服务器和网络设备指纹获取服务器,对服务器、应用程序服务器、路由器、防火墙、网络摄像头和交换机等网络空间设备进行大规模侦测,其具体结构如图1所示。
调度服务器采用分布式调度技术,对多个节点实现智能的任务分发、负载均衡、异常处理、进度汇总、结果汇总等。为实现分布式调度技术,公用的中间层采用高效内存存储方案,存储任务队列、异常信息、进度信息、结果信息等,调度与每个节点通过公用的中间层来交换相关数据。
UI服务器为界面有关的软件人机交互、操作逻辑等提供服务,包含了报表、站点管理、系统管理等的操作界面。UI服务器为操作界面提供后台支持,以实现用户友好交互,在系统中起着重要的衔接作用。
数据库服务器为应用提供服务,服务包括查询、更新、事务管理、索引、高速缓存、查询优化、安全及多用户存取控制等。数据库服务器提供了用于数据操纵的标准接口API,并提供监控性能、并发控制等工具,由DBA(Database Administrator,数据库管理员)统一负责授权访问数据库及网络管理。数据库服务器提高了系统性能,降低了网络开销,同时便于平台扩展。
网络设备指纹获取服务器通过对网络设备的特定端口进行请求,判断端口是否开放;并根据端口返回信息,利用指纹比对技术,结合指纹数据库,对网络设备所使用的组件类型进行识别,从而完成对网络空间的侦测。
2 系统架构
网络空间大规模侦测系统组成如图2所示,分布式调度模块管理各个端口探测引擎,针对侦测目标对象,结合指纹库,进行周期性的组件指纹探测,并将结果数据存储入库,供数据展示模块调用,进行查询、统计、导出等操作。监测结果存储在监测结果数据库中,通过数据展示模块对数据进行处理,可以实现数据查询、数据统计和数据导出等功能。综合管理模块负责任务管理、引擎管理以及日志管理,保证系统的正常运转。
用户建立任务后,UI通过API接口传递到后台数据库,由调度引擎获取任务并将任务按一定规则先后分配给各检测引擎,检测引擎接收任务后执行检测功能,通过命令行参数驱动Xmap、Wmap和POC(Proof of Concept,验证测试)功能的执行,获取到相应数据后,以IP或域名的方式归类到相应字段,再通过调度程序将获取数据入库到Mongo DB。最终由UI接口从数据库提取相应数据完成信息的展示。
基于指纹采集的网络空间大规模侦测系统核心主要分为权限控制、UI展示、数据库、任务调度、核心检测组件五层。权限控制定义了用户权限范围,是系统操作功能的实现基础。报表及UI包含报表、站点管理、系统管理等界面操作,是与用户操作相关的核心模块。数据库使用My SQL及Mongo DB数据库,进行面向对象封装。其中Mongo DB是一种NO-SQL类型的数据库,具备更好的高并发读写性能,具备无限扩容能力,是目前国内外很多云系统建设的基础数据库。任务调度实现自动的任务调度功能,能够自动将检测任务分发到不同检测引擎进行并发处理。核心检测组件包括站点发现、信息探查模块、端口探测模块、指纹探测模块,是系统所有检测功能的具体执行部分。
3 系统实现
3.1 指纹探测
3.1.1 Web服务器指纹探测
Web服务器指纹探测模块主要通过探测:网站响应头部数据、网站文件类型、网站对40错误响应的返回、网站对500错误响应的返回(如果存在)、网站对超长请求的响应返回、网站对畸形请求的响应返回、服务端口标识回显等请求,并利用返回信息作为判别依据进行Web服务器的指纹判断。通过指纹解析引擎获得目标网站的Web服务器发行版本、版本号等信息。同时,这些探测信息可用于辅助判断远程服务器上运行的操作系统、Web脚本语言、Web组件及相应版本型号。
3.1.2 Web应用指纹探测
Web应用指纹探测模块利用高精度的指纹识别技术对Web应用进行精确识别。该模块主要通过探测Web应用服务器上所运行的第三方Web组件特征信息来判断其所使用的组件情况和具体版本信息,主要探测以下几个请求和返回信息进行Web应用指纹判断:网站响应头部信息、HTML页面内META标签信息、HTML内JS、CSS等链接信息、特殊URL地址及URL参数、COOKIE/Session内特征字段特定文件名、文件内容及文件MD5。将这些信息进行组合匹配,包括:网站响应头部信息、HTML页面信息、特殊URL信息、网站文件MD5哈希值信息等。这些内容中都会存在一些Web应用的唯一性特征,多种方式的组合能提高程序的检测精度,几乎不会存在误报情况,从而实现对目标Web服务器上所运行的组件精确判断。
3.1.3 操作系统指纹探测
操作系统指纹探测模块基于Nmap端口扫描工具,不断持续跟踪和分析不同版本操作系统在TCP/IP栈中的数据特征,获得网站开放端信息、端口上的协议类型和版本等信息。通过对扫描结果的处理,从Banner中获取网站使用的Web容器及类型以及其它应用信息。不同操作系统在接收TCP或UDP请求时,其返回的数据填充内容、IP头中的SEQ NUMBER等特征呈现出不同的规律,在该规律上进行深度挖掘,可以精确识别操作系统服务版本。
3.2 基于指纹库的网络设备组件识别
基于指纹库的网络设备组件识别模块是网络空间大规模侦测系统的核心。该模块通过对网络设备的特定端口进行请求,根据端口返回信息,利用指纹比对技术,结合指纹数据库,对网络设备所使用的组件类型进行识别。该模块根据TCP/IP协议规范特征进行扫描探测,由于RFC没有明确TCP连接初始序列号、TCP可选项、TCP窗口大小、TCP时间戳、TCP ECN标记、异常属性的TCP关闭端口、分片IC-MP请求、服务控制ICMP请求、异常属性的UDP关闭端口,为了获得未明确定义导致的差别,本模块采用如下方法进行探测:
①对目标端口探测,获得至少一个开放端口和一个关闭端口。
②构造16个探测报文,包含6个序列号和可选项的TCP探测报文,2个ICMP探测报文,1个ECN的TCP探测报文,6个关闭端口的TCP探测报文,1个关闭端口的UDP探测报文。
③构造的16个探测报文,确保每个报文在100ms内发送。如果某个报文没有应答,则重新发送一次。
④提取目标指纹,结合目标的已知操作系统类型,构造先验指纹库。
⑤使用构造的先验指纹库探测新的目标主机。
⑥使用HTTP协议连接远程Web服务器获取相应应答报文,通过比较应答报文特征来识别Web服务器类别与版本。
3.3 分布式数据存储及任务调度
为解决大规模数据的存储和分析问题,系统采用分布式架构,为网络空间大规模侦测提供可靠的平台支持。该架构使系统具有可扩展性,可根据需求添加不同的功能。各模块之间的低耦合性降低了系统的维护难度。针对大规模网络空间,系统将任务分解,合理分配资源,分布式并行处理提高了处理效率。当实现数据获取、处理、展示等功能时,系统调用不同的处理单元,对多个节点实现智能的任务分发、负载均衡、异常处理、进度汇总、结果汇总等,将分解的任务分配到合适的资源中,保证任务能平稳处理,任务调度使系统可以分布式的处理任务。通过使用高效内存存储方法,构建公用的中间层实现调度与每个节点间的数据交换。
3.3.1 分布式数据存储
分布式数据存储采用Mongo DB这一文档型分布式数据库,多个节点数据库服务器用于存储网站检测相关的数据及结果数据、统计数据等大量数据内容,如图3所示。
其中Mongo DB为实现分布式存储,把数据保存到其他机器当中,所用到的Mongodb Shard指的是分片,Shard为水平方向的多节点数据分散存储,通过并行计算可满足大规模网络空间数据的并发访问、处理和分析等需求。系统通过主从存储、分片存储的方法,保证了数据的安全性和可靠性,提高了数据的大规模存取能力。
3.3.2 任务调度
网络空间大规模侦测系统的任务调度模块,调用各组件指纹探测模块,对IP目标进行组件指纹探测扫描;IP目标分为境内目标和境外目标,其中境外目标在扫描时需要使用VPN代理;最后任务调度模块将扫描结果写入目标组件指纹数据库。任务调度模块完成整个系统的任务生成、任务分发、任务接收、任务执行、异常处理、数据统计、任务复杂均衡等功能,其执行流程如图4所示。
当任务下发时,检测任务自动将大的检测任务拆分为内部小任务,并将小任务存放任务队列。内部小任务按照任务下发标准接口,传递给检测模块节点。各业务层的业务检测模块均提供标准的任务接受API,任务下发子模块,验证任务参数数据的正确性,并将任务参数数据按照API规范传递到各个业务层检测节点。为保证负载均衡,任务下发算法自动在内部自动将大的检测任务拆分为小的任务,存放到队列,将队列中的任务下发给多个区域的多个业务检测单元;其间会记录各个检测单元到目标网络的速度,用于指导下一批次任务优选最快的检测单元。当下发给检测节点的任务由于检测节点服务器故障或网络故障而无法完成时,异常处理模块接受检测节点的异常报告或超出一定时间无法连接检测节点时,自动将下发给该检测节点的任务转移到其他节点继续执行。最后检测节点按照API规范汇报进度,进度汇总模块将这些进度信息汇总存储,供界面读取。
4 实验测试
网络空间大规模侦测系统包括任务调度服务器、组件指纹探测服务器、数据库服务器和系统UI服务器等,经由路由器进行连接,通过任务调度,利用分布式存储等技术,完成对境内外网络设备的指纹获取和判别。系统对境外目标进行网络设备指纹获取时,需要通过代理节点,突破自身IP访问限制,访问国外站点。网络空间大规模侦测系统部署如图5所示。
网络空间大规模侦测系统包括1台任务调度服务器、9台组件指纹探测服务器、3台数据库服务器和1台系统UI服务器,具体硬件配置信息如表1所示。
网络空间大规模侦测系统指纹库覆盖全球主流的500种网络设备组件,后续随着指纹库的持续增加,侦测系统的识别率将不断提高。当侦测周期为2天时,网络空间大规模侦测系统可覆盖100万个IP目标;当侦测周期为15天时,可覆盖1000万个IP目标。
4.1 D-Link路由器漏洞
多种网络设备,例如路由器和网络摄像头,都具有各自的固件。不同固件就是不同的操作系统,属于网络设备的操作系统。针对网络设备各自特有的固件进行分析,可以研究网络设备的安全漏洞。固件存在漏洞一般是由程序员在开发摄像头功能性程序的过程中疏忽造成,可能导致命令执行等高危漏洞,而存在的后门帐号可能是开发人员(个人行为)或者生产厂商(公司行为)预留的。
D-Link路由器的固件是指其内部运行的系统及程序,系统一般是轻量级的类Unix操作系统,而程序用于控制和实现路由器的各种功能。利用网络空间大规模侦测系统,通过基于固件分析的网络设备漏洞研究技术,可以发现D-Link路由器中存在安全漏洞的设备信息。在2013年10月份曝光的D-Link路由器漏洞中,受影响的D-LINK路由固件版本涉及DIR-100、DI-524、DI-524UP、DI-604S、DI-604UP、DI-604+、TM-G5240、TM-G5240、BRL-04R、BRL-04UR、BRL-04CW、BRL-04FWU。通过基于指纹的网络空间大规模侦测系统探测发现,世界上约63000台设备受到影响。存在漏洞的D-Link路由器分布如图6所示,图中红色圆圈代表存在漏洞的D-Link路由器分布位置。
4.2 心脏出血漏洞
心脏出血漏洞通过读取网络服务器内存,攻击者可以访问敏感数据,从而危及服务器和用户的安全。敏感的安全数据,如服务器的专用主密钥,可使攻击者在服务器和客户端未使用完全正向保密时,通过被动中间人攻击解密当前或已存储的传输数据;或在通信方使用完全正向保密的情况下,发动主动中间人攻击。攻击者无法控制服务器返回的数据,因为服务器会响应随机的内存块。
利用网络空间大规模侦测系统,扫描覆盖全球1945815个主机,侦测结果发现714828个主机处于易受攻击状态,其中33303个主机位于中国。图7为心脏出血漏洞分布热力图,图中颜色越深代表漏洞分布越多。图8为心脏出血漏洞数目随时间变化示意图,该示意图显示随着时间推移,心脏出血漏洞正逐步被修复。
5 结束语
针对现有IT资产扫描设备缺乏对资产的自主发现和全方位信息定位能力,本文设计并实现了基于指纹采集的网络空间大规模侦测系统,通过采集网络空间的指纹信息,对网络设备组件进行识别,并利用分布式调度和分布式存储技术实现网络空间大规模分布式侦测,极大提升了侦测速度和侦测效率。实验表明,本系统可以有效地对网络空间进行全面、实时、精确侦测。
摘要:随着信息化设备的更新换代,网络内部容易出现信息孤岛,造成IT资产管理混乱,进而影响信息系统的安全性和稳定性。基于指纹采集的网络空间大规模侦测系统通过采集网络空间的指纹信息,对网络设备组件进行识别,基于分布式架构设计并实现了大规模分布式侦测,极大提升了侦测速度和侦测效率。
关键词:指纹采集,IT资产,大规模侦测,分布式架构,设备识别
参考文献
[1]刘诚.浅析电力行业信息安全管理[J].计算机安全,2008(7):74-77.
[2]张洪涛,徐靖.电力企业信息集成接口技术研究,2007,35(22):45-48.
[3]刘毅,刘军,毛琛琳.基于中间件技术的电网在线监测数据集成系统设计[J].电网与清洁能源,2012,28(5):39-45.
[4]杨艳,刘建华,田东平.基于决策树算法的信息资产识别[J].现代电子技术,2010,23:77-79.
[5]刘念,张建,华张昊.网络环境下变电站自动化系统的信息资产识别[J].电力系统自动化,2009,33(13):53-57.
[6]Rahman M A,Manshaei M H,Al-Shaer E.A game-theoretic approach for deceiving Remote Operating System Fingerprinting[C].2013 IEEE Conference on Communications and Network Security(CNS):73-81.
[7]Nikiforakis N,Kapravelos A,Joosen W,et al.On the Workings and Current Practices of Web-Based Device Fingerprinting[J].IEEE Security&Privacy,12(3):28-36.
[8]张恩,张广弟,兰磊.基于Mongo DB的海量空间数据存储和并行[J].地理空间信息,2014,12(1):46-48.
[9]钟运琴,方金云,赵晓芳.大规模时空数据分布式存储方法研究[J].高技术通讯,2013,23(12):1219-1229.
潜艇反敌无线电侦测通信技术研究 篇6
1 猝发通信技术
猝发通信是利用短波无线电侦察和测向设备需要较长时间处理信号、识别信号和侧向定位这一缺点, 采用高速调制解调技术和短报文体制, 尽可能缩短通信电磁暴露时间, 降低敌方侦测可能性的通信技术[1]。
随着现代无线电侦测技术发展, 目前这一传统隐蔽通信技术主要存在以下两方面的挑战:
一是进一步缩短通信时间变得越来越困难。频带资源有限、信道恶劣, 短波信道在技术上难于实现大容量、高通信速率的远程通信。
二是随着现代无线电侦测技术的发展, 现代无线电侦测系统能对持续时间更短的信号进行精细识别、处理和测向定位, 仅仅依靠缩短高信噪比的无线电通信信号的电磁暴露时间, 对于无线电反侦测而言潜力有限。
2 跳频通信技术[2,3,4]
跳频通信的工作原理是收发双方传输信号的载波频率按照预定规律进行离散变化的通信方式。与定频通信相比, 跳频通信隐蔽性好, 同时, 跳频通信具有良好的抗干扰能力, 另外, 它易于与其他的窄带通信系统兼容, 有利于设备的更新。
跳频技术是通信抗干扰技术中应用最广泛和最为有效的手段, 但受侦测技术的不断发展, 仍有被敌方侦测的可能, 另外, 在跳频工作条件下, 很难实现高速的数据传输。众多的跳频信道中总有部分信道由于干扰严重而无法使用, 从而难以保证传输的可靠性。
3 直接序列扩频通信技术
直接序列扩频的实现原理是用一个带宽很宽的扩频信号去调制一个载波信号, 经过调制后, 载波信号的带宽会得到很大的扩展。直接序列扩频信号被认为是一种低截获概率 (LPI) 信号[5]。
扩频信号本身在技术上具有降低频谱密度的效果, 具有一定的低截获特性, 但是, 在面临强大的侦测系统时, 仍有可能被捕捉到。
首先, 目前对扩频信号盲检测技术已经达到-15d B信噪比完全检测的水平[6], 很多侦测站的检测概率都很高。由于电台、民用通信一般不会使用扩频这种手段, 扩频信号只要被检测出来, 一定就是有价值的信号, 会被优先处理。
其次, 当信号频率扩展到一定的宽度, 现代FFT技术可以在宽频带范围内同时测向, 这样一来, 相当于对同一个辐射源发出的宽带信号进行了多次窄带测向, 经过统计处理后的测向精度会有一定程度的提高。
另外, 对扩频信号这类特殊信号的截获, 主要依据其罕见性和在侦测工具上的特殊性体现;从工程意义上来看, 只要信号功率足够大, 特殊信号因其外在体现特殊, 更加容易引起侦测工作人员的注意。
4 其他通信技术
4.1 功率控制技术[7]
在实际训练和作战过程中, 潜艇可以通过分析, 预先计算出所要发报海域附近的短波侦察设备的侦察范围, 然后得出短波发信机的发射功率。采用功率控制技术, 就可以将发射功率调整到始终保持在可以满足可靠通信所需的最低电平上。
4.2 定向通信技术
定向通信技术是利用方向性天线, 特别是窄波束、低旁瓣天线, 产生方向性很强的电波辐射进行通信技术, 主要应用于微波通信和激光通信。定向通信辐射能量集中, 几何扩散传输损耗小, 有利于改善接收端信噪比。而从反侦测通信角度看, 由于电波辐射方向性强, 除了辐射方向, 其它方向电波辐射微弱。因此, 除了辐射方向外, 敌方很难侦测到信号。
4.3 抛弃式浮标通信技术
抛弃式通信浮标是一种专门为潜艇发信设计的无线电浮标。浮标内的录音或报文存储装置可存储待发射的消息, 并装配了完整的发射设备和天线。浮标从潜艇发射出去后, 潜艇离开现场, 浮标以一定速度上浮, 发射信号的时间可预置在潜艇浮出水面以后, 并且浮标可按设定时间自沉[8]。
5 结语
在未来战争中, 潜艇通信的隐蔽性将直接制约着潜艇战斗力的发挥。面对敌强大的无线电侦测系统, 完善和改进潜艇的通信技术是保持潜艇隐蔽性的关键。虽然没有一个单独技术可以完美的应对敌无线电侦测系统对信号的截获、定位和识别, 但是可以将各种技术综合运用, 来实现潜艇隐蔽的目的。
参考文献
[1]纪凌, 蒋欢.复杂电磁环境下短波通信抗干扰技术研究[J].系统平台与网络通信, 2010.07:46~48.
[2]Proakis J G.数字通信[M].北京:电子工业出版社, 2003.
[3]邹波.Simulink软件在自适应跳频通信仿真中的应用[J].通信技术, 2009.04:59~61.
[4]CABRIC D, ELTAWIL A M, ZOU H, et al.Wireless fieldtrial re-sults of a high hopping rate FHSS-FSK testbed[J].IEEE Journalon Selected Areas in Communications, 2005, 23 (5) :1113-1122.
[5]Jin Yu, Yu-Dong Yao.Detection performance of chaotic spreadingLPI waveforms.Wireless Communications, IEEE Transactionson.Vol-ume 4, Issue 2, March 2005, 390~396.
[6]沈健, 张浩, 钟子发.直接序列扩频信号的三阶相关检测[J].舰船电子对抗, 2006.09:67~69.
[7]张建华, 孙卫华.潜艇水下隐蔽通信技术研究[J].舰船电子工程, 2010.02:24~26.
自动侦测 篇7
关键词:FPGA,低成本,混合高斯模型,动目标侦测,实时性
运动目标检测作为机器视觉研究的重要研究方向之一,序列图像中动目标的侦测是目标分类、行为识别等高级算法的基础,也是智能视频监控的核心技术,其广泛应用于智能安防、自动导航及雷达探测等领域。本文采用低成本的硬件架构设计出实时动目标侦测系统,使其在民用监控上具有广泛实用的可能性。
1 研究背景
目前,常用的动目标侦测方法主要有背景差分法、帧间差分法和光流法[1]。其中背景差分法是应用最为广泛的动目标侦测算法。基于混合高斯背景模型的背景差分法是采取为每个像素构建关于其权重、均值及方差模型库,从而得到具有自适应性的混合高斯背景模型,再利用该背景模型与下帧图像的差异来进行动目标的侦测。由于混合高斯背景模型能在线学习,更新模型参数,可在一定程度上克服如光照变化、树枝晃动等因素造成的影响。
基于混合高斯背景模型的背景差分法对静态背景场合下的动目标侦测有良好的鲁棒性,但其算法计算量巨大,且需要建立较大的背景模型信息库。本设计实现的是四级混合高斯建模算法,单是针对图像上某一位置像素点的信息就包括权重、均值与方差三种16位的参数,以每点4组信息来计算,一幅720×288的图像所产生的信息量就达到16×4×3×720×288 bit,约为38 Mbit,在图像算法进行乒乓处理,至少需要76 Mbit的存储空间,而数据交换速度也需要达到38 Mbit/20 ms,即1.9 Gbit/s。因此,在PC机甚至DSP上都难以满足其算法的实时性。已有论文采用EP4SGX230芯片完成实现混合高斯建模算法的设计[2],但该芯片价格昂贵,所建高斯模型级数仍受存储容量所限,本文采用低成本FPGA与高速大容量外部存储器结合的架构来进行系统设计。
2 硬件架构
FPGA作为可重构的并行器件,在图像处理算法的硬件实现上是能独立胜任混合高斯背景模型算法所需的巨大运算能力。DDR存储器MT46V16M16拥有的256 Mbit存储空间也能满足混合高斯背景模型所需的存储空间。在运算能力与存储空间均满足要求后,FPGA与DDR之间的数据交换速率是算法硬件实现实时性的关键。DDR2控制器的控制协议分为Native interface与Avalon Memory-Mapped interface flow,前者是在Quartus II中调用,直接进行硬件设计[3],后者是在SOPC Builder进行调用,通过NIOS II对DDR进行控制,NIOS II软核CPU特性决定了其实时性不如前者。采用DDR控制器的Native interface,选择MT46V16M16芯片可看到,如图1所示,在100 MHz的工作频率Half工作模式时,数据交换最大速率能达到64×50 MHz,即3.2 Gbit/s,可满足空间与速率两方面的需求。
通过上述分析,选择CycloneIII系列FPGA加上DDR存储器作为系统硬件架构,硬件系统架构示意图如图2所示。
FPGA采用从底层直接操作DDR存储器的控制模式。采用这一设计方案会出现的问题是图像处理数据会涉及在DDR工作频率与实时图像处理像素时钟这两个时钟域。为了能达到高速交互与实时运算的效果,在DDR读写控制逻辑与图像算法逻辑之间必须加入一级FIFO以实现图像处理数据在双时钟域中的切换。
3 FPGA设计
3.1 算法流程
本系统算法流程如图3所示。
混合高斯建模相关的具体算法流程为:
1) 首次进入流程时根据灰度值初始化该坐标灰度的高斯模型。
2) 再进入流程时,先将已有模型按权重由大到小排序并且作归一化。
3) 根据权重归一化值找出能描述背景的前几个模型。
4) 根据当前灰度与模型的均值、方差的关系判断是否属于某个模型。
5) 如不属于,将权重最小的模型用初始化模型替代;如属于,判断其所属模型是否在能描述背景的模型之中。
6) 如果所属模型不能描述背景即为前景灰度;如果所属模型能描述背景即为背景灰度,并按相应方式更新模型。
7) 下次再由步骤2)进入。
3.2 状态机设计
本设计的算法工作时钟为8倍像素时钟,8步状态机完成的流水设计如图4所示。从功能上描述各自完成的主要工作有:
1) 从Cache读取下一个坐标的模型参数;
2) 将读出模型参数进行权重归一化并排序;
3) 在排序的同时开始计算各参数不同方式的更新值;
4) 在权重归一化并排序计算出所需结果后便可开始计算能描述背景的模型,并可得到当前灰度值是否属于背景;
5) 根据是否属于背景的判断结果确定更新方式;
6) 按更新方式将各参数的更新值保存到Cache中对应地址;
7) 一行结束后,将Cache的所有参数保存到DDR中,同时将下一行参数读至Cache中等待使用。
4 实验结果
本文完成的基于FPGA的实时混合高斯背景建模系统所消耗FPGA资源如图5所示。可见该设计占用FPGA资源较低,消耗其内部RAM主要是用于DDR Cache与前景形态学生长模块。
显示画面如图6所示,白色区域为实时检测标定出的运动目标。通过实验结果可以看出,该系统能在每个像素时钟内根据所建混合高期模型完成对运动目标的检测,具有良好的实时性。
5 结论
本文利用FPGA并行特性与DDR的高速数据传输设计出低成本的动目标实时侦测系统。随着FPGA与存储器的不断发展,利用并行的设计理念构建出的硬件图像处理系统,将具有更强的并行处理能力与更高的数据吞吐能力,为现有的某些数据量巨大的复杂算法提供了实时化的可能性,使其进入实用化的程度。
参考文献
[1]梅娜娜,王直杰.基于混合高斯模型的运动目标检测算法[J].计算机工程与设计,2012(8):3149-3153.
[2]孙猛,袁小龙,王丽红.基于FPGA的混合高斯背景建模实现[J].电子技术应用,2011,37(9):60-63.
[3]王然.基于高斯混合背景模型的运动目标检测技术研究[J].电子质量,2011(10):7-10.
[4]杨涛,李静,潘泉,等.一种基于多层背景模型的前景检测算法[J].中国图象图形学报,2008(7):1303-1308.
[5]高群福,陈星,程越.基于FPGA的DDR SDRAM控制器设计与实现[J].电子测量技术,2011(8):56-59.
[6]吴继化.Altera FPGA/CPLD设计(高级篇)[M].北京:人民邮电出版社,2005.