视频监控智能化应用

核心提示监控系统软件部分,由上层PC监控服务软件和底层DSP监控功能软件两部分组成。上层PC部分主要进行监控功能选择和监控结果的显示,底层DSP部分主要进行智能监控和压缩编码的算法实现。视频监控系统通过使用UART和USB接口作为联系PC和DSP的

监控软件部分由上位机监控服务软件和下位DSP监控功能软件组成。上位机部分主要选择监控功能和显示监控结果,下位DSP部分主要实现智能监控和压缩编码算法。视频监控系统使用UART和USB接口作为联系PC机和DSP的通道,实现数据交换。其中,异步串口作为监控系统与上位机监控软件的通信接口,完成底层监控程序与上位机监控服务软件的通信。USB控制器作为压缩码流的数据传输接口,完成压缩码流向PC机的传输任务。

智能视频监控系统采用Blackfin 561 DSP的两个内核同时进行处理,PC服务软件和DSP监控功能软件协同工作。它的主要工作流程如图1所示。

图1智能视频监控系统工作流程

DSP接收到一帧图像后,利用Blackfin 561 DSP的两个内核完成智能视频监控和视频编码压缩。智能视频监控和处理部分采用Blackfin 561 DSP的A内核实现。首先通过UART通信模块获取PC监控功能选择模块的当前功能以及该功能对应的参数。然后根据相应的函数调用监控功能模块中相应的监控功能进行处理;最后,通过UART通信模块将处理结果传输到PC机上进行显示。视频编码压缩处理是利用Blackfin 561 DSP的B核进行的,利用ADI公司提供的H264编码函数和USB驱动函数实现,这里就不赘述了。

PC端切换不同的监控功能或调整功能参数,将在下一帧输入图像中切换监控功能和调整参数。

一.客户端软件

客户端软件是用户实现DSP监控操作的平台,主要由监控软件界面、监控功能选择模块和驱动功能模块组成。监控软件界面是监控系统与用户进行信息交互的平台,它集成了各种监控功能模块,用户可以通过它调用各个监控功能模块、选择参数、显示结果等。PC监控功能选择模块调用底层DSP的监控功能,实现用户所需的相应监控功能;驱动模块包括UART驱动和USB驱动。UART驱动用于实现上位机监控服务软件与下位DSP监控功能程序之间的UART接口通信,USB驱动用于接收下位DSP通过USB接口发送的压缩码流。

二、DSP监控功能软件

DSP监控软件是整个监控功能的核心,由监控模块、H264视频压缩模块和UART通信模块组成。DSP监控功能模块由PC机监控功能选择模块调用,直接负责完成相应的监控功能,并将结果传送给PC机。H264视频压缩模块负责对输入的视频图像进行H264压缩,并将压缩后的视频图像通过USB接口传输到PC机;UART通信模块负责使用协议与PC机进行通信。下面主要介绍DSP监控功能模块。

所设计的智能视频监控系统需要实现八种不同的智能视频监控功能。根据监控功能的性质和处理手段的不同,可以分为四种不同的功能:物体检测和数量统计、自动跟踪、入侵和遗留物体检测、摄像头模糊、遮挡和非法移动。该模块从PC端功能选择模块获取监控信息,选择单个视频监控功能进行处理。监控功能模块流程如图2所示。

图2监控功能模块流程图

监控模块中的大部分功能都需要相同的预处理过程——运动物体的提取。该系统中运动目标的提取主要包括两个部分:背景建模和连通域标注。主要流程如图3所示。

图3运动物体提取

物体检测。根据运动检测的结果,需要判断当前运动物体的类别,如人体、四足动物、四轮机动车、非机动车等。

算法分析:利用高斯背景模型进行运动检测,提取目标的形状特征并进行分类。

输入参数:输入图像的帧缓冲区和检测对象的类型。

输出:移动物体的位置和类别。

数量统计。在目标检测的基础上,统计各类目标或一类目标的数量。在统计的过程中,也需要区分个体和群体。

算法分析:在分类的基础上,用计数器统计当前帧中各种目标的数量。

输入:输入图像的帧缓冲和数量统计对象类别。

输出:各种对象的数量,如个体和群体的数量。

入侵检测。需要判断场景中的运动物体是否进入固定区域。

算法分析:在运动检测的基础上,判断目标位置与标定的“禁止”位置的相对关系,从而实现入侵检测。

输入参数:输入图像的帧缓冲区和固定区域坐标。

输出:入侵对象的位置和类别。

遗留对象检测。主要检测在固定区域非法滞留行李物品的情况。具体来说,主要检测行人在场景中遗留包等情况,也包括场景中原有物体被拿走的情况。

算法分析:通过判断一个物体在监控场景中的时间长短来判断这个物体是否是遗留物体。

输入参数:输入图像的帧缓冲区,左边物体的大小范围,与移动物体的最小距离。

输出:左侧对象的位置和大小。

自动跟踪。为了实现对运动目标的连续检测,通过跟踪运动目标,可以获得其位置、速度和轨迹等运动信息。

算法分析:卡尔曼滤波器用于跟踪目标。

参数:输入图像的帧缓冲区和对象的历史信息。

输出:移动物体的位置和中心坐标。

摄像机模糊、遮挡和非法移动的检测。发现需要影响监控摄像头正常工作或者威胁监控摄像头本身安全的活动。

算法分析:利用DCT变换统计全局图像变化信息,判断相机是否模糊;利用图像灰度直方图变化信息判断摄像头是否被遮挡;用模板匹配法判断摄像头是否非法移动。

输入参数:输入图像的帧缓冲区。

结果:模糊、遮挡和非法移动的信息和程度。

第三,系统优化

三缓冲结构。设置由三个缓冲区组成的缓冲队列。在实际处理中,两个缓冲器用于数据接收,另一个缓冲器用于图像处理。具体的三缓冲区结构如图4所示。

图4缓冲器结构

回调函数用于管理缓冲区,每次接收到完整图像时都会生成一个回调。使用三个变量来维持当前的缓冲状态,帧缓冲区!和frame Buffer2用于维护循环中收到的两个缓冲区,frameCounter是当前收到的最新缓冲区。根据帧缓冲器1和帧缓冲器2的值确定每个接收数据的存储位置。

在主循环期间,使用可变活动索引来维护当前进程中的缓冲区。每次开始处理新帧时,交换帧计数器和活动索引的值,并同时更新帧缓冲器1和帧缓冲器2。实现了将前一帧处理结束时的缓冲区添加到输入缓冲区,并缓冲处理最新一帧的目的。

算法优化。优化了系统大部分功能的实现算法。由于在物体检测、数量统计、自动跟踪、入侵检测、遗留物体检测等算法中需要用到背景模型,因此系统需要重点优化背景建模算法。

背景建模主要包括两部分:首先,通过比较当前图像和背景模型的均值和方差矩阵,得到前景图像和更新后的背景模型;其次,对前景图像进行膨胀和腐蚀的形态学操作。

①更新背景模型。模型更新过程中涉及的数据包括:当前图像帧缓存、当前前景帧图像、背景均值模型、背景方差模型和前景停留时间矩阵。为了提高运算速度,有必要在处理之前将内存转移到L1。步骤如下。

第一步:在L1内存中分配行缓冲区用于计算,设计乒乓结构的双缓冲区。

步骤2:使用两个DMA通道进行输入和输出。首先通过异步DMA输入一行输入图像、均值和方差矩阵、驻留时间矩阵,交替使用current和bck指针分别指向输入和处理缓冲区,不断更新双缓冲区结构。这里要求从输入的第二行开始使用同步DMA方式进行传输,所以用caqlback中的回调函数行和input_index变量依次输入四个缓冲区。

这里需要将输入和计算的新均值、方差、驻留时间行矩阵送回SDRAM,所以输出DMA采用异步方式,完成后才会开始下一次DMA输入。这样,在一定程度上,可以避免存储器对一个SDRAM区域的同时读/写。

②膨胀腐蚀算法。在这里,线处理方法也被用于膨胀和腐蚀。根据膨胀腐蚀算法的特点,需要输入三行缓冲区,然后处理一行。因此,需要将六路输入、两行扩展和腐蚀结果的前台缓冲区设计为三路输入、一路输出的双缓冲区。

因为输入和输出缓冲区之间没有冲突,所以输入和输出都处于同步模式,请注意,输入缓冲区增量设置为一行。

——END——

需要弱电信息可以私信我。

回复:rdzl

也就是它有海量的弱电培训学习资料。

我叫老梁。一个从业12年的弱电爱好者。

这里只有免费和分享!

 
友情链接
鄂ICP备19019357号-22