图 2.7 运动物体跟踪处理流程
Fig. 2.7 Moving objects tracking process
OpenCV的模块中集合了一个可以用于研发人员运动物体的跟踪基本模块cxcore。根据不同的要求和不同的场景,环境的切换、变换,研究人员只需要对其进行二次开发就能够达到不同的效果。其所提供了一个基本的模块,设置其不同的参数,再对于所需要的模块进行扩展就能满足具体实际应用的要求。这就体现了OpenCV算法的通用性和可移植性。本章中,将基于上述的模块,根据所需的特殊要求进行开发,满足本论文中的跟踪移动物体的要求。
1)前景的检测模块:对于组成图像信息的许多像素,都不要分析其是前景还是背景。获取的是实时的一帧帧图像,输出为此帧图像的前景掩码。OpenCV算法的优势在于并不是只有运动的物体能检测出来,当设定好其参数后,对于完全静止的背景也可以精确的检测。
实现其功能的函数:创建CvFGDetector的子类,实现函数cvFGDetector中所包含的虚函数。
2)团块的检测模块:运用了前景检测的结果去检测场景中的目标移动物体,将其像素集合成一个团块,输入的数据为当前帧图像的掩码和原本的旧团块,输出的数据为新的检测到的团块。这种运动物体的检测可以用于雷达系统,对于检测的团块图形特征和运动的相关性分析都是需要考虑其中的,当然对于团块团块之间以及团块和背景像素融合之后,产生的检测的不确定性都需要分析和处理[18]。
实现其功能的函数类:CvBlobDetector:作为描述团块检测的接口虚类。
3)团块的跟踪模块:将运动物体的像素点集合成一个模块,输入的检测数据为当前帧、当前帧的掩码以及之前检测出的团块信息,在检测视频中能够输出当前帧以及当前团块的信息:ID、位置、跟踪轨迹等等。
实现其功能的函数类:cvBlobTracker:作为描述团块跟踪的接口虚类。
4)轨迹的处理模块:对于检测出团块后,同时会出现团块的跟踪轨迹,为了检测和跟踪的精准,需要对于物体的标定信息进行必要的处理:比如,去抖动,平滑处理等等。
实现其功能的函数类:CvBlobTrackGen:作为实现轨迹的生成模块虚类;CvBlobTrackPosProc:作为实现轨迹的处理虚类。此模块的作用是去抖动、平滑处理(Kalman滤波)。
2.7 计算机视觉三文技术
计算机视觉邻域中的的核心问题包括:分割问题;3D立体场景的重构;运动分析。立体的视觉指的是从多幅图像参照比较的过程中获取到目标物体的三文几何的信息。在生物学中,生物的视觉系统几乎都是由两个眼睛来组成。两个眼睛在同一时间不同角度观察物体的时候,就会产生远近和深度景深的感觉。当下十分流行的3D立体电影就是模仿了生物学中的立体视觉原理,从而使得二文的画面拥有了逼真的深度的感觉。3D立体电影的实质是:拍摄的过程中,利用两台摄像机在同一时间不同角度共同拍摄画面;播放时,将处于不同位置的两台摄像机播放的图像画面又同时叠加投影到大屏幕上。借用了物理学中光的偏振光理论,从而让观众的双眼同时能够看到左右摄像机拍摄的图画面,就如同真实场景中人的双目所看到的画面信息,仿佛身临其境[19]。所以,计算机视觉系统中,想模拟出三文的立体画面,只需要利用两台摄像机从不同的角度同一时间针对同一物体捕获到的两幅图像。接着,由2D的信息根据3D重建原理,又计算机程序重建真实场景中的三文图像,从而恢复了物体真实的空间位置信息。 OpenCV移动目标物体的检测跟踪的研究(10):http://www.youerw.com/jisuanji/lunwen_524.html