智能视频分析技术指计算机图像视觉分析技术,是人工智能研究的一个分支,它在图像及图像描述之间建立映射关系,从而使计算机能够通过数字图像处理和分析来理解视频画面中的内容。智能视频分析技术涉及到模式识别、机器视觉、人工智能、网络通信以及海量数据管理等技术。视频智能分析通常可以分为几部分:运动目标的识别、目标跟踪与行为理解。

IVS原理


视频分析技术通常采用背景分离(背景减除)技术来进行图像变化的检测(所有的视频分析模式,如入侵、丢包、逆行等都是一种模式的图像变化)。其思路是对视频帧与基准背景图像进行比较, 相同位置的像素 (区域) 变化则认为是变化了的区域,对这些区域进一步处理、跟踪、识别,得到包括目标位置、尺寸、形状、 速度、 停留时间等基本形态信息和动态信息, 完成目标的跟踪和行为理解之后, 也就完成了图像与图像描述之间的映射关系, 从而使系统进一步进行规则判定,直到触发报警。

背景减除法是目前普遍使用的运动目标检测方法, 其算法本身需要大量的运算处理资源,并且仍然会受到光线、天气等自然条件及背景自身变化(海浪、云影、树叶摇动等情况)的影响。但是,针对不同的天气以及自然干扰,已经有多种附加算法(过滤器)应用来弥补这些缺陷,随着芯片能力的提升及算法改进,相信视频分析技术会进一步成熟。

视频内容分析的关键技术


前景目标的探测是视频分析技术实施的前提条件。 背景减除法是目前视频分析技术中用于前景目标探测的最常见方法, 其原理是利用当前图象和背景图象的差分(SAD)来检测出运动目标(区域)的一种方法。此方法可以提供比较完整的运动目标特征数据, 精确度和灵敏度比较高, 具有良好的性能表现, 但对动态场景的变化,如光线变化情况也比较敏感。背景减除法的工作原理如下图所示,当前图像与背景图像模型做差后形成运动目标区域,即图中的小船。

背景模型的建立是背景减除法的关键所在。 通常, 视频分析算法需要一定的时间进行“背景学习”, 所谓背景学习, 实质上是利用时间平均图像的方法, 将背景在一个时间段(如 30 秒钟)内的平均图像计算出来,作为该场景的背景模型。那么,“背景学习”时间结束后,系统仍然需要具有“背景维护”的能力,之前建模的背景并不是一成不变的, 这样能保证系统对场景内的图像变化不那么敏感, 如光线变化、 影子等等, 因此, 开发出实用、 有效的背景模型以适应动态、复杂的场景是目标探测及视频分析技术的关键。

视频分析的工作流程


视频分析实质是人工智能的一部分,是通过模仿人类的工作过程来实现的。人类通过眼睛这个“传感器”实现视频的采集、 预处理、 处理然后将真实图像传送给大脑, 大脑并不是对所有传送过来的图像进行整体的分析处理, 而是采用多层分级,将背景、缓慢移动及远处的目标分辨率最低化,忽略一些细节;并对前景感兴趣区进行二次聚焦 (我们常说的眼前一亮就是这个意思) , 获得更多细节,然后对该区域进行判定。

如下图所展示的案例是日常生活中常见的情况,图像是一个地铁站台,画面中出现一个穿红色衣服的女子,手里拿着一个黑色包放到站台中的一个空地上,之后迅速离开。 这是一个很普通的视频场景, 值班人员对这段场景很容易迅速地提取出特征描述来,即“一个红衣女子将一个黑色包放在站台上后迅速离开”,而对这个简单的信息,值班人员利用眼睛采集到信息,首先是场景(站台),之后分离出感兴趣的前景目标(红衣女),之后对其跟踪,最后形成结论(丢下一个包),之后将整个过程的完整信息传给大脑去按规则判定。

无论采用何种视频分析架构, 其视频分析过程都是视频内容分析的算法模块“协力作业”的结果,视频分析基本过程如下图:

  • 加载算法过程:加载用户的预定义规则,如防区、分析模式等;
  • 过滤器加载:对特殊场景进行预处理如防抖动、雨雪、灯光抑制等;
  • 背景建模及更新:背景模型建立并自动学习更新背景情况;
  • 目标提取与跟踪:提取跟踪前景变化目标,检测并分析目标的活动;
  • 目标分类:对跟踪的目标进行分类,如人或车辆等;
  • 视频分析判断过程:根据规则判断是否符合预定义规则;
  • 触发报警过程:确定目标活动违反规则,根据预定义传输报警到指定的用户。

视频分析技术难点


视频分析技术本身并不是一项新技术, 但其在视频监控系统中的应用还仅仅处于起步阶段,它给视频监控系统带来了颠覆性的革命,具有美好的发展远景。目前, 视频分析系统本身有一些技术问题有待提升, 下面是一些需要克服的技术难点。

  • 光照适应性: 通常,视频监控系统需要 24 小时昼夜工作,所处环境的光照情况也是一直处于变化中,如昼夜的交替、阴晴雨雪雾等天气条件,及外界光源干扰,如照明灯光、逆光、反光、车灯,还有室外云彩、云影的动态变化等,所有这些都对视频分析核心算法的光照适应性提出了严格的要求, 优异的视频分析算法应该具有先进的背景学习、更新、维护功能。
  • 自然天气变化:雨、 雪、 雾、 沙尘天气、 烟雾、 气流、 云影等, 体现的不仅仅是光照的变化,而是真正的图像像素变化,这些“小假象”会导致系统视为场景中有物体在移动,从而干扰了真正的目标探测,浪费系统资源,因此,需要采用“过滤”机制将这些干扰做过滤处理。

  • 背景的高频率变化:在视频图像背景中,可能出现摇动的树叶、晃动的波浪、光线反射、物体的反光、 草地的微动等等现象, 这些现象都可能造成画面像素出现变化, 从而导致误报。系统需要具有先进的过滤器,实现对规则往复性、细小运动进行过滤,使其集中精力在前景。

  • 高速移动目标:视频分析系统基于自身算法及目前处理器的运算处理能力, 通常对非实时视频图像进行分析(如每秒采用 12 帧或 6 帧),这样当像素的采用频率比较低的时候, 视频分析算法需要连续分析一定数量的帧才能确定是否报警, 而这时如果需要的分析时间长于入侵者通过防范区域的时间, 入侵者可能已经完成入侵动作而导致系统漏报。

  • 视频分析的架构:目前, 在实际应用中, 视频分析产品主要有三种架构: 一种是基于后端的服务器(软件算法运行于 CPU);第二种是基于前端的 IPC 或 DVS;第三种是利用前端嵌入式视频分析设备(仅仅做视频分析,不做编码压缩工作)。其中,第三种方式是在嵌入式设备中固化视频分析模块, 利用网络客户端进行远程配置与报警管理。 三种架构也可以按照目前主流说法分成两大类, 即前端分析与后端分析。参见第上一章。需要注意的是, 对于视频分析功能, 最根本的考核是性能, 即良好的探测率和较低的误报率。 其实视频分析架构方式并不是最重要的, 其实质都是视频分析算法来完成的,只不过是运行平台不同,一个在 DSP上,一个在计算机的 CPU上,也不存在某种方式绝对好与坏, 实际应用中应该根据项目的规模、 前期设备的架构、用户的需求、网路建设等具体情况进行选择部署。

  • 视频分析技术实施误区:视频分析的设置本身并不难,通常步骤是:选择好视场、明确分析模式,然后进行防区、分辨率、灵敏度、各种过滤器的选择和使用。设置视频分析的过程很快, 但是, 对一个通道视频分析进行参数微调、 现场模拟、 参数修正、 再模拟、算法优化、效果观察等工作却是一个漫长而复杂的工作。在各环节中,要解决“提高探测率, 降低误报率”的问题, 必须长期地尝试和试验, 这也是视频分析厂家实验室产品和真正可投入应用的产品的最大区别。视频分析产品的真正考量在室外环境, 对于室内环境, 厂商基本可以进行模拟试验,问题不大。但是对于大型户外项目,环境复杂、遇到的问题比较多,系统调试阶段工作量比较大, 从调试到试运行, 可能需要不止一次的现场模拟、 参数微调、效果观察、统计、再模拟过程。每个项目有自己的特点、一个项目中各点位有自己的特点, 各点位又有不同的应用需求, 并且视频分析产品并非是“即插即用”的产品, 因此必须针对不同的项目、 不同的点位、 不同的需求进行有针对地实施。视频分析技术具有一定的复杂度, 国际上真正掌握视频分析算法的厂家并不多, 从掌握算法、 推出实验室产品到产品真正能够投入项目运行, 还有很长的路要走。 对于一些非常普遍的场景, 在实验室中进行模拟有一定困难, 因此许多厂家利用工程项目实施过程, 不断修正参数以适应不同的环境, 这并不代表厂家的产品不成熟,反而是厂家实力的体现。

参考资料


IVS_原理的更多相关文章

  1. 奇异值分解(SVD)原理与在降维中的应用

    奇异值分解(Singular Value Decomposition,以下简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域.是 ...

  2. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

  3. 线性判别分析LDA原理总结

    在主成分分析(PCA)原理总结中,我们对降维算法PCA做了总结.这里我们就对另外一种经典的降维方法线性判别分析(Linear Discriminant Analysis, 以下简称LDA)做一个总结. ...

  4. [原] KVM 虚拟化原理探究(1)— overview

    KVM 虚拟化原理探究- overview 标签(空格分隔): KVM 写在前面的话 本文不介绍kvm和qemu的基本安装操作,希望读者具有一定的KVM实践经验.同时希望借此系列博客,能够对KVM底层 ...

  5. H5单页面手势滑屏切换原理

    H5单页面手势滑屏切换是采用HTML5 触摸事件(Touch) 和 CSS3动画(Transform,Transition)来实现的,效果图如下所示,本文简单说一下其实现原理和主要思路. 1.实现原理 ...

  6. .NET Core中间件的注册和管道的构建(1)---- 注册和构建原理

    .NET Core中间件的注册和管道的构建(1)---- 注册和构建原理 0x00 问题的产生 管道是.NET Core中非常关键的一个概念,很多重要的组件都以中间件的形式存在,包括权限管理.会话管理 ...

  7. python自动化测试(2)-自动化基本技术原理

    python自动化测试(2) 自动化基本技术原理 1   概述 在之前的文章里面提到过:做自动化的首要本领就是要会 透过现象看本质 ,落实到实际的IT工作中就是 透过界面看数据. 掌握上面的这样的本领 ...

  8. CRC、反码求和校验 原理分析

    3月份开始从客户端转后台,算是幸运的进入全栈工程师的修炼阶段.这段时间一边是老项目的客户端加服务器两边的维护和交接,一边是新项目加加加班赶工,期间最长经历了连续工作三天只睡了四五个小时的煎熬,人生也算 ...

  9. 菜鸟学Struts2——Struts工作原理

    在完成Struts2的HelloWorld后,对Struts2的工作原理进行学习.Struts2框架可以按照模块来划分为Servlet Filters,Struts核心模块,拦截器和用户实现部分,其中 ...

随机推荐

  1. Spring和SpringMVC总结篇

    作者:肥宅兜链接:https://www.cnblogs.com/doudouxiaoye/p/5693399.html 1.为什么使用Spring ? 方便解耦,简化开发;通过Spring提供的Io ...

  2. 引入jquery时,页面一直加载

    注意jquery的引用位置最好放在<head>下面.

  3. 使用helm管理复杂kubernetes应用

    1. 查看仓库: $ helm repo list NAME URL stable https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/ch ...

  4. Java 并发系列之六:java 并发容器(4个)

    1. ConcurrentHashMap 2. ConcurrentLinkedQueue 3. ConcurrentSkipListMap 4. ConcurrentSkipListSet 5. t ...

  5. 一张MGR切换的图,不解释

  6. Gamma阶段第十次scrum meeting

    每日任务内容 队员 昨日完成任务 明日要完成的任务 张圆宁 #91 用户体验与优化https://github.com/rRetr0Git/rateMyCourse/issues/91(持续完成) # ...

  7. 【医学】三分钟看懂乳腺BI-RADS分级

    “BI-RADS”是指美国放射学会的乳腺影像报告和数据系统(Breast Imaging Reporting and Data System)的缩写.BI-RADS分级法将乳腺病变分为0-6级,用来评 ...

  8. expect脚本自动获取root权限

    Linux脚本中有很多场景是进行远程操作的,例如远程登录ssh.远程复制scp.文件传输sftp等.这些命令中都会涉及到安全密码的输入,正常使用命令时是需要人工手动输入密码并接受安全验证的.为了实现自 ...

  9. Qt应用程序主窗口之二:拖放操作与打印文档

    一.拖放操作 对于一个实用的应用程序,不仅希望能从文件菜单中打开一个文件,更希望可以通过拖动直接将桌面上的文件拖入程序界面上来打开,就像可以将.pro文件拖入Creator中来打开整个项目一样.Qt中 ...

  10. [JS]截取字符,中英文都可以

    //截取字符,中英文都可以,hasDot=true 返回值的最后还可以添加3个点 function subString(str, len, hasDot) { var newLength = 0; v ...