- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
OpenCV VS架构\算法及应用
摘要:intel opencv vs是opencv内嵌的一个高效、通用的视频目标检测、跟踪和轨迹分析的开源平台,但由于没有相关资料而缺少研究和应用。在深入挖掘opencv vs源码的基础上,剖析了该平台的整体架构和算法体系,给出了算法描述和相应接口。在此基础上,开发了一个基于opencv vs架构的稳定、高效的行人统计系统。
关键词:opencv; 视频监控; 视频跟踪; 轨迹分析; 行人统计
引言
多年来在从事计算机视觉研究的过程中,一直需要这样一个平台,一方面可以提供众多成熟稳定的检测、跟踪、轨迹分析算法,另一方面具备良好的编程接口,这样就可以将自己的算法很方便地嫁接进这个系统,测试和对比各种算法的优劣性能。而intel opencv[1] 视频监控(video surveillance)模块恰恰提供了这样一个功能强大的平台,在下文中简称为vs。从intel opencv 1.0版本开始,其辅助库cvaux中就增加了vs模块,直至opencv 2.2版本,该模块都相对稳定的存在。然而opencv提供的vs的相关资料相当少,在官方的帮助文档中甚至只字未提,国内外也少有相关的研究和介绍,这也是vs长期未被研发人员广泛关注的原因之一。值得庆幸的,也是opencv最大的优势就在于其开源性。通过深入剖析vs的源代码,可以理清整个vs框架的脉络,探索其中的算法原理和实现方法。本文对vs的架构和算法体系进行了剖析和梳理,在此基础上给出一个该架构应用于行人统计的实例。
1opencv video surveillance的架构
opencv是intel公司开发的广受关注的计算机视觉开源库,其算法覆盖面广、实时性好。cvaux是opencv的辅助类库,vs则是其中一个重要组成部分。用vc++6.0打开opencv 1.0工程源码,可以在cvaux下看到vs结构和类定义,vs类多数以cvblob开头。通过梳理vs的各个类和结构间的关系,可以归纳得到vs的uml关系图,从整体上把握vs的架构,如图1所示。类似于ms mfc中的cobject,vs中的所有的类都有一个共同的父类cvvsmodule,主要提供各个模块通用的参数的读写、拷贝等功能。vs提供了目标检测、跟踪和轨迹分析的算法接口:cvfgdetector,cvblobdetector ,cvblobtracker,cvblobtrackgen,cvblobtrackpostproc,cvblobtrackanalysis,分别是前景检测、新目标检测、目标跟踪、轨迹生成、跟踪后处理、轨迹分析等6组算法接口,这些接口类是大多数vs类的父类。另外还有一个cvblobtrackerauto接口,其功能是对以上算法进行链接、调度,用于对整个算法流程和数据传递的控制。
vs中的很多类并没有导出用户接口,不能直接调用,而是提供了相应的全局函数作为惟一的用户接口。这是模式设计中类工厂的思想,有效地屏蔽了构建类实例的细节,这种设计思想被大量应用于com技术中。
图1opencv vs uml图2opencv video surveillance的算法体系
opencv vs覆盖了许多主流的检测、跟踪与轨迹分析方法,如前文中提到的6类算法,分别是:前景检测、新目标检测、目标跟踪、轨迹生成、跟踪后处理、轨迹分析,除了轨迹生成用于轨迹数据的保存以外,其他5个部分都是标准的视频监控算法体系中不可或缺的部分。在vs的标准应用中,算法的执行流程如图2所示。
图2vs算法流程图下面对vs算法体系进行简要介绍并给出参考文献,表1列举了各组算法和接口,方便读者查阅。
(1) 算法流程控制(cvblobtrackerauto)。整个算法流程的控制在接口类cvblobtrackerauto的子类中完成。vs中提供了一个范本,就是cvblobtrackerauto1,通过查看cvblobtrackerauto1::process(),可以洞悉整个算法的标准流程。当然用户也可以在遵循接口cvblobtrackerauto的基础上进行扩展,重载process(),构建自己的视频监控算法流程。
(2) 前景检测(cvfgdetector)。在视频监控中,前景一般是指相对于背景的运动区域,即通常关注的运动目标,如行人、车辆等。前景检测的方法大致可以分为3类:背景差法、帧差法和光流法。背景差法通过对对背景进行建模来检测运动的前景,由于其准确性、鲁棒性和实时性的优势受关注较多。
cvfgdetector是前景检测类的接口,在其子类cvfgdetectorbase中包含了[23]两种背景差方法的实现,后者是被广泛研究和应用的混合高斯模型[4](mogmixture of gaussians)。
open
文档评论(0)