标题：运动侦测
什么是运动侦测
运动侦测，英文翻译为“Motion detection technology”，一般也叫移动检测，常用于无人值守监控录像和自动报警。通过摄像头按照不同帧率采集得到的图像会被CPU按照一定算法进行计算和比较，当画面有变化时，如有人走过，镜头被移动，计算比较结果得出的数字会超过阈值并指示系统能自动作出相应的处理。移动侦测技术是运动检测录像技术的基础，现在已经被广泛使用于网络摄像机、汽车监控锁、数字宝护神、婴儿监视器、自动取样仪、自识别门禁等众多安防仪器和设施上。常见的移动侦测系统还允许使用者可以自由设置布防撤防时间、侦测的灵敏度、探测区域。当触发时应可联动录像、联动报警输出、联动摄像机转到相应的预置位。运动侦测原理运动侦测允许在指定区域能识别图像的变化，检测运动物体的存在并避免由光线变化带来的干扰。但是如何从实时的序列图像中将变化区域从背景图像中提取出来，还要考虑运动区域的有效分割对于目标分类、跟踪等后期处理是非常重要的，因为以后的处理过程仅仅考虑图像中对应于运动区域的像素。然而，由于背景图像的动态变化，如天气、光照、影子及混乱干扰等的影响，使得运动检测成为一项相当困难的工作。
早期的运动检测如MPEG1是对编码后产生的I帧进行比较分析，通过视频帧的比较来检测图像变化是一种可行的途径。原理如下：MPEG1视频流由三类编码帧组成，它们分别是：关键帧（I帧），预测帧（P帧）和内插双向帧（B帧）。I帧按JPEG标准编码，独立于其他编码帧，它是MPEG1视频流中唯一可存取的帧，每12帧出现一次。截取连续的I帧，经过解码运算，以帧为单位连续存放在内存的缓冲区中，再利用函数在缓冲区中将连续的两帧转化为位图形式，存放在另外的内存空间以作比较之用，至于比较的方法有多种。此方法是对编码后的数据进行处理，而目前的MPEG1/MPEG4编码都是有损压缩，对比原有的图像肯定存在误报和不准确的现象。
实际应用运动侦测可以降低公共机构和企业场所的人工监控成本，并且避免人员长期值守疲劳导致的监察失误，可以极大地提高监控效率和监控精度。主要被用于以下场合
1、远程无线婴幼儿监护
2、家庭、企业、银行、码头、仓库防盗
3、设备智能启动、自动触发门禁
4、交通、铁路等违规拍摄和记录
5、教学取样、实验室数据无人值守采集
6、保育、医疗、养老等护理机构和场所的监控报警
目前常用的方法1.背景减除（Background Subtraction ）
背景减除方法是目前运动检测中最常用的一种方法，它是利用当前图像与背景图像的差分来检测出运动区域的一种技术。它一般能够提供最完全的特征数据，但对于动态场景的变化，如光照和外来无关事件的干扰等特别敏感。最简单的背景模型是时间平均图像，大部分的研究人员目前都致力于开发不同的背景模型，以期减少动态场景变化对于运动分割的影响。
2.时间差分（Temporal Difference ）
时间差分（又称相邻帧差）方法是在连续的图像序列中两个或三个相邻帧间采用基于像素的时间差分并且阈值化来提取出图像中的运动区域。时间差分运动检测方法对于动态环境具有较强的自适应性，但一般不能完全提取出所有相关的特征像素点，在运动实体内部容易产生空洞现象。
3.光流（Optical Flow）
基于光流方法的运动检测采用了运动目标随时间变化的光流特性，如Meyer[2] 等通过计算位移向量光流场来初始化基于轮廓的跟踪算法，从而有效地提取和跟踪运动目标。该方法的优点是在摄像机运动存在的前提下也能检测出独立的运动目标。然而，大多数的光流计算方法相当复杂，且抗噪性能差，如果没有特别的硬件装置则不能被应用于全帧视频流的实时处理。
当然，在运动检测中还有一些其他的方法，运动向量检测法，适合于多维变化的环境，能消除背景中的振动像素，使某一方向的运动对象更加突出的显示出来，但运动向量检测法也不能精确地分割出对象。运动检测的实现作为国内知名的视音频编解码卡的生产商，依靠中电集团第52研究所强大的技术研发力量，在DSP（数字信号处理器）上完成MPEG4/H264实时编码，在给用户的SDK的接口中，提供了有效的运动检测分析功能。其过程如下图：
· 信号输入处理模块：标准模拟视频信号（CVBS彩色或黑白）是亮度信号和色度信号通过频普间置叠加在一起，需经过A/D芯片（如philips7113）的解码，将模拟信号转成数字信号，产生标准的ITU 656 YUV格式的数字信号以帧为单位送到编码卡上的DSP和内存中。
·ICP(Image Coprocessor图像协处理器)处理模块：YUV数据在DSP中加上OSD（字符时间叠加）和LOGO（位图）等，复合后通过PCI总线送到显存中，供视频实时预览用，还将复合后的数据送到编码卡的内存中，供编码使用。
·ENCODER（编码）模块:将编码卡内存中的YUV数据送到MPEG4/H264编码器中，产生压缩好的码流，送到主机内存中，供录像或网络传输使用。
·MOTIONDETECT处理模块：对编码卡内存中的以帧为单位YUV数据进行处理。目前，我们采用的是背景差分和时间差分相结合的一种帧差分的算法。通过计算两个有一定时间间隔的帧的像素差分获得场景变化。主要分以下几个步骤：
1.设置运动检测区域等参数：
用户可以通过SDK中的函数，来设置1-99个有效的矩形，还可以设置快速和慢速两种运动检测状态。快速检测是对每隔两帧的两帧数据进行差分运算，慢速检测是指对相隔12帧以上的两帧数据进行差分运算。
2.启动运动检测功能：
因为经过A/D转换后的数据是标准的ITU 656 YUV 4:2:2格式，而人眼又是对亮度最敏感，为了简化算法，提高效率，直接对亮度（Y）值进行处理。对于某个检测区域内每个象素点（x,y），T时刻与 T－n时刻亮度（Y）的差值为Mx,y(T)=||Yx,y(T) Yx,y(T-n)||，IF ||Mx,y(T) Mx,y(T-n)||≥Ta THEN L=TRUE，得到区域差分系数IMsum=ΣL。实际决定是否报警。
在CIF格式下，整个画面的分辨率是352*288（PAL），按16*16像素宏块大小来划分整个检测区域，宏块内的像素点是逐点从左到右，从上到下进行差分运算并得到宏块差分系数。整个检测区域又是按16*16的宏块从左到右，从上到下进行扫描，最后计算出整个区域的差分系数。
3.返回运动检测结果
如果整个区域的差分系数大于设定的阀值，置报警状态并实时将每个检测区域的宏块差分系数都返回。根据预先设置的快速和慢速两种检测状态，对画面进行不间断的分析处理，并返回结果，直到停止运动检测。
如果整个区域的差分系数小于设定的阀值，复位报警状态。这种基于帧差分算法的运动检测完全独立于编码，可以灵活的任意启动停止。实现“动则录，不动则不录 ”。配合其他接口函数，还可以实现预录像功能，即通常状态下只是进行画面预览监控和运动检测，编码后的数据不写入文件，只暂时写入一个FIFO缓冲区里，一旦发生运动检测报警，可以先将报警之前缓冲区的数据写入文件，然后再实时将编码后的数据写入文件，报警解除后，延时一段时间再停止写文件，转入写缓冲区状态。实现运动检测报警的全过程录像。这样既可以完整获取整个报警事件的过程，又可以节约系统的资源，在相同的存储空间下，可以大大延长保存录像的时间。运动检测技术评估要对运动检测技术的性能进行评估并不容易，特别是要进行定量的分析时，必须提供一个供作比较、研究的标准视频序列，它应该包括突然场景变化，摄像机移动以及光线明暗变换等特殊效果。检测方案可用多种参数来评估，比如检测成功率、检测失败率等等。在实际应用环境中，可以通过调节阀值对室内普通环境，室外环境获得比较好的监测效果。还可根据功能实现的方法分类，主要是对软件和硬件两大类实现方法进行一些定性的分析。采用硬件来实现监测功能，不占用CPU，拥有较快的处理速度，因而可以采用一些较为复杂的算法以获得更为准确的监测结果，并且有很好的实时性。譬如有些摄像机内置VMD（Video Motion Detector视频移动探测器）电路可以当报警探头使用。检测电路首先会将静态图像贮存起来，之后，如果发现画面的变化量超过了预先设定的值，系统就会发出报警信号，以提醒安防人员或启动录像机。然而硬件实现也意味着较高的成本，而且一旦系统对动态监测功能提出了更新更高的要求，那么原来的硬件系统只能弃而不用，必须采购新的硬件，造成浪费。用软件实现的监测功能，如果用主机的CPU来完成数值计算，算法不能太复杂，而且计算量不宜太大，否则会影响监控系统其他功能（如显示、录像等）的实现。如果算法下载到DSP上运行，就可以解决这个问题，首先它的功能扩充非常容易，算法的优化不会造成不必要的浪费，可以生成新的微码下载到DSP上，就可以提升性能，并且可以根据用户不同的需求提供一些个性化的功能组合。我们认为，用DSP加软件来实现系统的动态监测功能，是一种眼光更为长远的选择，而且也是运动检测技术发展的必由之路。实际上我们在Philips 的Trimedia1300芯片上完成MPEG4/H264 CIF/2CIF编码加运动检测功能，在TI的DM642芯片上完成了MPEG4/H264的4CIF/2CIF/CIF编码加运动检测功能。