主页(http://www.pttcn.net):基于DSP智能视频监控系统的软硬件设计(2) · 自动跟踪:自动跟踪实现对于运动对象的连续检测,通过对运动物体的跟踪,获得其位置、速度、运动轨迹等运动信息。使用卡尔曼滤波的方法进行目标跟踪,输出运动物体的位置及中心坐标等; · 摄像机模糊、遮挡及非法移动检测:摄像机模糊、遮挡及非法移动检测是需要发现影响监控摄像机正常工作或者威胁监控摄像机自身安全的活动。使用DCT变换,统计全局的图像变化信息,判断摄像机是否模糊;利用图像灰度直方图变化信息,判断摄像机是否被遮挡;使用模板匹配的方法,判断摄像机是否非法移动,输出模糊、遮挡及非法移动情况信息和程度。 系统优化 1、三缓冲结构 设置三缓冲组成缓冲区队列。在实际处理过程中,使用其中两个缓冲区进行数据接收,另外一个缓冲区进行图像处理等(具体的三缓冲区结构如图5所示)。
图5 三缓冲结构 利用回调函数对缓冲区进行管理,每接收完一整幅图像后产生一次回调。使用三个变量维护当前缓冲区状态,Frame Buffer1和Frame Buffer2用于维护在循环中接收的两个缓冲区,Frame Counter为当前最新接收到的缓冲区。每次接收数据的存储位置根据Frame Buffer1和Frame Buffer2的值决定。 在主循环过程中,使用一个变量Active Index维护当前处理中的缓冲区。每当开始处理新的一帧时,交换Frame Counter和Active Index的值,并同时更新Frame Buffer1和Frame Buffer2。实现将上一帧处理结束的缓冲区加到输入缓冲中,而将最新一帧缓冲并进行处理的目的。 2、算法优化 系统对大部分的功能实现算法进行了优化。在物体检测、数量统计、自动跟踪、入侵检测、遗留物体检测等算法中都需要使用背景模型。因此,系统重点对背景建模算法进行了优化。 背景建模主要包括两个部分:一是用当前图像和背景模型的均值和方差矩阵进行比较,得到前景图像和更新后的背景模型;二是对前景图像进行膨胀、腐蚀的形态学运算。 · 背景模型更新:模型更新过程涉及的数据有:当前图像帧缓冲(8位)、当前前景帧图像(8位)、背景均值模型(32位)、背景方差模型(32位)、前景驻留时间矩阵(16位)。为了提高运算速度,需要首先将内存搬运到L1中再进行处理。其步骤如下: 第一步:在L1内存中分配行缓存区用于计算,采用PINGPONG结构设计双缓冲区。 第二步:使用两个DMA通道用于输入和输出。首先使用异步DMA方式输入一行输入图像、均值和方差矩阵及驻留时间矩阵,交替使用current和bck指针分别指向输入和处理缓冲区,并不断更新实现双缓冲结构。这里要求从第二行输入起使用同步DMA方式进行传输,因此使用了回调函数Line In Caqll Back和input_index变量,实现依次输入4个缓冲区。 由于这里要求将输入并计算后的新均值、方差和驻留时间行矩阵传回SDRAM中,因此输出DMA采用异步方式,等待完成后才会开始下一次的DMA输入。这样,在一定程度上,可避免同时向一个SDRAM区读/写内存。 · 膨胀、腐蚀算法:这里同样也使用行处理方式进行膨胀、腐蚀两步运算。根据膨胀、腐蚀算法的特点,需要输入3行缓冲,然后进行一行的处理。因此,需设计使用6行输入的前景缓冲和两行膨胀、腐蚀处理结果作为3行输入和1行输出双缓冲。由于输入和输出的缓冲区没有冲突问题,因而输入和输出均采用同步模式,并注意输入缓冲增量设为一行。 (中国集群通信网 | 责任编辑:陈晓亮) |