邵刚
【摘要】运动物体自动识别是视觉识别中的重要研究内容之一。本文通过介绍DirectShow的视频图像处理技术,阐述了DirectShow系统架构,构造了一种目标识别运动物体系统模型。通过采用过滤技术实现复杂环境准确自动物体识别功能,结合实验论证了基于DirectShow的目标识别物体系统的可行性。最后探讨了下一步的研究方向。
【关键词】视频图像处理;DirectShow;目标识别;过滤技术
引言
在社会信息化日益发展的今天,信息技术、网络技术、通信技术以及多媒体技术已经渗透到人类生活的各个领域中,视频监控以其直观、方便和内容丰富等特点,日益受到人们的青睐。视频监控是多媒体、计算机网络、工业控制和人工智能等多种技术的综合运用,目前正从传统的图像采集朝着音视频的数字化、系统的网络化和管理的智能化方向发展。
人体检测和跟踪是智能视觉监控中的重要研究内容之一,也是近年来计算机视觉领域中备受关注的前沿方向。对图像序列中的运动人体快速而准确的检测和跟踪是一项十分重要且极具挑战性的工作,同时准确的检测和跟踪也是对行为进行有效理解的基础除了视觉监控之外,人体检测和跟踪在高级人机交互动画制作等方面也有着广泛的应用。
基于智能空间的机器视觉是计算机视觉领域一个新兴的研究方向,它与传统意义上的系统的区别在于其智能性。简单而言,不仅用摄像机代替人眼,而且用计算机替代人协助人,来完成监视或控制任务,从而减轻人的负担。本论文工作的主要任务就是基于DirectShow技术的智能识别系统对摄像机拍录的图像序列进行自动分析来对被场景中人物的变化进行定位、跟踪和识别,并结合人体朝向等分析的基础上判断有关目标的行为。
1.DirectShow系统原理
DirectShow是一套高效的多媒体开发系统,与DirectX开发包一起发布。它是建立在组建对象模型(COM)基础上的,由许多模块化的组件组成。DirectShow将应用程序、复杂的数据传输、硬件设备的差异以及同步等问题隔离开,多媒体软件开发者只需要按照统一的COM接口来编写应用程序,从而简化了在Windows平台上数字媒体应用程序的开发任务,DirectShow系统框架应用程序与DirectShow系统以及DirectShow所支持的软件、硬件之间的关系如图1所示。
图1 DirectShow系统架构
DirectShow主要由Filter Graph构成,Filter Graph中包含了各种Filter,这些Filter在Filter Graph Manager的统一控制下,按一定顺序连接在一起,从而使数据在由Filte组成的链表中流动,图1中的箭头表示Filter链表中的数据流的方向。在DirectShow系统框架外,是与用户直接交互的应用程序。应用程序要根据实际的功能需求引入相应的Filter, 建立Filter Graph, 然后通过Filter GraphManager来控制系统的数据处理过程。DirectShow通过事件通知机制,实现应用程序与Filter Graph Manager之间的交互控制。Filter Graph运行的时候接收到各种事件,通过消息的方式发送到用户应用程序,用户应用程序则根据事件类型做出相应的处理。
2.基于DirectShow目标识别系统
2.1 目标是识别系统总体框架
采集图像端创建一个Source Filter读取内存缓冲区数据,并加入到Filter Graph Manager,Filter Graph Manager负责视频信息采集,同时通过数据发送线程将从数据流发送。图像处理端接受采集端传送的视频信息,通过Filter Graph Manager创建一个filter graph来对图像帧进行控制,见图2。
图2 自动识别系统总体架构
2.2 图像过滤
图像采集和后端图像处理两个部分组成(如图2)所示。前端图像采集部分包括:高清摄像机、传输线缆、后端图像处理部分、数据管理和图像显示。采用DirectShow提供的辅助组件Capture Graph Builder来创建Filter Graph,流程如图3所示。
图3 Filter Graph Manager创建过程
在Filter Graph Manager创建完成后,调用该组件的QueryInterfaces接口,获取并存储IMediaControl、IMediaEventEx、IBasicVideo、IBasicAudio、IVideoWindow等接口对象。在多媒体软件中,利用这些接口对象可以开发出如图像预览、图片快照、音视频播放控制、屏幕控制等具体应用。
用Filter链路建立调用Capture Graph Builder组件的RenderStream接口对PIN_CATEGORY_PREVIEW类型的Pin完成后续连接,代码如下:
ICaptureGraphBuilder *pBuild;
//第二步获取的对象
Capture Graph BuilderIBaseFilter *pCap;
//第三步获取的对象
Videocapture filterhr=pBuild->RenderStream
(&PIN_CATEGORY_PREVIEW,&MEDIATYPE_Video,
pCap,NULL,NULL);
视频显示部分调用IVideoWindow对象进行指定窗口的显示,调用IMediaControl对象的Run方法控制Filter Graph开始运行, 代码如下:
RECT winRect;
//应用程序传入的窗口对象
IVideoWindow *pIVideoWin;
//第三步获取的
IVideoWindow 对象
IMediaControl *pIMediaCtrl;
//第三步获取的
IMediaControl对象
pIVideoWind->put_Left(0);
pIVideoWind->put_Top(0);
pIVideoWind->put_Width(winRect.right
-winRect.left);
pIVideoWind->put_Height(winRect.bottom
-winRect.top);
pIVideoWind->put_WindowStyle(WS_CHILD|WS
_CLIPCHILDREN|WS_CLIPSIBLINGS);
pIMediaCtrl->Run();
目标识别系统将上述开发过程的DirectShow部分封装为一个独立的类,包括Filter Graph Manager的创建、系统设备的枚举以及对设备各种控制接口的操作等,上层应用程序只需实例化该类的对象,即可调用该类提供的公共接口。
2.3 图像目标识别处理
DirectShow采集进来的图像是BMP格式的。图像处理的大致流程是:一是灰度化;二是二值化;三是标记;四是计算目标区域位置;五是判决当前目标是否被命中。本系统的图像处理采用基于DirectShow系统架构的图像处理流程。图象处理主要实现步骤如下:
(1)初始化COM。
(2)创建Capture Graph Builder组件 , 获取 CaptureGraph接口。
(3)在Filter Graph加入视频源过滤器。
(4)在Filter Graph加入AVI Decompressor Filter。
(5)在Filter Graph加入Sample Grabber Filter并设置媒体类型、缓冲模式。
(6)连接各Filter pBuilder->RenderStre
am(&PIN_CATEGORY_CAPTURE,&MEDIATYPE_Video,m_pFilter,pAviDecompressorF,pGrabberF);
pBuilder->RenderStream(NULL,&MEDIATY
PE_Video,pGrabberF,NULL,NULL);
pBuilder->Release();
(7)定义一个类 CSampleGrabberCB: public IsampleGrabberCB在该类中重载 BufferCB方法。在BufferCB中可以加入用户具体的图像处理函数。在类中可以定义一些公用属性, 用于传递相关参数。
(8)设置Sample Grabber回调模式CSample-
GrabberCB CB;//向类CsampleGrabberCB传递图像类型信息。
CB.Width = vih- >bmiHeader.biWidth;
CB.Height = vih- >bmiHeader.biHeight;
FreeMediaType(mt);
pGrabber- >SetBufferSamples(true);
pGrabber- >SetOneShot(false);
pGrabber- >SetCallback(&CB,1);
(9)用接口对Filter Graph进行控制。
3.实验结果与分析
本实验使用采集人体运动视频来验证系统的有效性,视频1是一段正对面向摄像头行进的运动人体序列。视频采集处理的图像如下图4所示。从图上可以清晰的看出人体被标黑,并且可以准确的跟踪人体运动,达到预期的目标。
图4 正对面向镜头行进的运动人体识别图
为了进一步测试自动识别系统对图像的处理识别能力,下图5所示为垂直于镜头的运动人体序列的情况,自动识别系统依然可以正确识别人体。
实验表明采用基于DirectShow的自动人体识别系统可以在不同的角度对运动的物体进行识别捕获,具有较好的识别能力和推广使用价值。
4.结束语
本文介绍了基于DirectShow的自动识别运动系统,通过分析DirectShow的视频图像处理技术,阐述了DirectShow系统架构,构造了一种目标识别物体物体系统。采用过滤技术实现复杂环境准确人体识别功能,结合实验论证了基于DirectShow的目标识别运动物体系统的可行性。下一步我们将对图像处理过滤部分进行优化设计,提高过滤效率。
参考文献
[1]Kalman R E.A new approach to linear filtering and prediction problems[J].Journal of Basic Engineering,1960,82D:34-45.
[2](美)Simon Haykin,郑宝玉译.自适应滤波器原理[M].北京:电子工业出版社,2008.
[3]DirectX 9.0 SDK Document[M].US:Microsoft Corporation,2002.