- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
OpenCV视频监控(VideoSurveilance)的算法体系
OpenCV 视频监控(Video Surveilance)的算法体系
OpenCV VS与普通OpenCV函数不同在于:普通cxcore、cv函数均是C函数,而VS是利用C++的接口、多态、继承等技术构建起来的体系,由一些类、结构、全局函数组成。所以要学习和使用VS,要有较强的C++基础。“勿在浮沙筑高台”,如果不懂接口、多态、继承等C++的基本技术,还是去恶补一下再回来。
VS中的很多类并没有直接提供给用户使用,多数只提供一个全局函数作为唯一的用户接口,这种思想也大量应用于COM技术中,是模式设计中类工厂的思想。感兴趣的读者可以查阅模式设计方面的图书和资料。
打开opencv.dsw工程,可以在CVAUX下看到许多结构和类定义,VS部件多数以CvBlob开头,如图所示。这么庞杂的数据结构和类,理清头绪并不是一件容易的事情。我简单的归纳了一个UML图,虽然有很多不完善,但是可以方便读者们从全局看清VS的架构。
类似于MFC中的CObject,VS中的所有的类都有一个共同的父类CvVSModule,主要提供参数的读写、拷贝等功能。另外还有几个算法接口类,分别是:CvFGDetector,CvBlobDetector ,CvBlobTracker,CvBlobTrackGen,CvBlobTrackPostProc,CvBlobTrackAnalysis,分别代表:前景检测、新目标检测、目标跟踪、轨迹生成、跟踪后处理、轨迹分析等几组算法的接口,这些类是绝大多数VS类的父类。另外还有一个CvBlobTrackerAuto接口,其功能是对以上算法的链接、调度,即对整个算法流程的控制。
如前面说到的,OpenCV VS提供了6组算法的接口,分别是:前景检测、新目标检测、目标跟踪、轨迹生成、跟踪后处理、轨迹分析,除了轨迹生成用于轨迹数据的保存以外,其他5个部分都是标准的视频监控算法体系中不可或缺的部分。
OpenCV在Blob_Tracking_Modules.doc文档中,提供了算法的关系图,如下。
图中唯独缺少了轨迹分析部分,可能是因为在该文档形成的时候轨迹分析部分还没有完成。重新整理后如下。下面针对VS算法体系中的各个算法接口进行介绍,并给出算法的参考文献。1 算法流程控制(CvBlobTrackerAuto)整个视频监控算法流程的设置和数据的传递在接口类CvBlobTrackerAuto的子类中完成,VS中提供了一个范本,就是CvBlobTrackerAuto1,该类是接口CvBlobTrackerAuto的子类,通过查看CvBlobTrackerAuto1::Process(),可以洞悉整个算法的标准流程。当然您也可以在遵循接口CvBlobTrackerAuto的基础上进行扩展。用户调用接口:CvBlobTrackerAuto* cvCreateBlobTrackerAuto1(CvBlobTrackerAutoParam1* param);2 前景检测(CvFGDetector):CvFGDetector是前景检测类的接口,前景检测一般是指提取固定场景中运动部分的像素,比较常用的一大类方法是背景差。在其子类CvFGDetectorBase中包含了两种背景差方法的实现:(1)《Foreground Object Detection from Videos Containing Complex Background》2003(2)《An Improved Adaptive Background Mixture Model for Real-time tracking with shadow detection》 2001后者就被广泛研究和应用的混合高斯模型背景差(MOG-Mixture Of Gaussians),其开创者是MIT的著名学者Chris Stauffer,可参考文献《Learning patterns of activity using real-time tracking》2000。OpenCV中还实现了一种基于码本的背景差方法,《Real-time foreground–background segmentation using codebook model》2005,可以参考例程bgfg_codebook.cpp,只是这种算法还没有整合进VS架构中,这个扩展工作有待完成。用户调用接口:CvFGDetector* cvCreateFGDetectorBase(int type, void *param);3 新目标检测(CvBlobDetector):CvBlobDetector在前景掩模的基础上检测新进入场景的Blob(块),子类有两个,分别是CvBlobDetectorSimple和CvBlobDetec
文档评论(0)