视频车辆跟踪与计数系统的MATLAB仿真研究

一、理论基础

主要是通过和提取的背景进行对比,得到汽车的基本轮廓,然后再通过视频的前后帧进行差分比对,得到运动汽车。最后对获得图片进行处理提取汽车。 其流程图如下所示:

基于MATLAB的视频车辆跟踪和计数系统仿真_车辆计数


二、思路流程

·视频读取介绍

首先MATLAB中对于视屏支持较好的格式为8bit,16bit,24bit的AVI格式,所以我们首先要将您提供的WMV文件转换为对应的AVI格式,以方便处理。此外,为了防止出现OUT OF MEMORY的问题,我们在给你做的时候,将视频的大小变小了,改为320*240.然后由于系统不要求采用实时的做法,所以我们直接压缩为没秒10帧的格式

注意,用我们提供的转换软件进行转换,转换参数配置界面如下所示。

基于MATLAB的视频车辆跟踪和计数系统仿真_理论基础_02

此外,由于源视屏时间比较长,这对于一般电脑来说,在MATLAB中会出现OUT OF MEMORY的错误,所以我们需要将视频结成不同的长度的视频,这里,我们将视频截成3s,15frame/s的视屏格式。

这里我们从你提供的视屏中截取了5个小片段,分包有摩托车,小汽车,大卡车,面包车,以及行人等各类因素。所以能说明问题了。

对应代码为

登录后复制

function [Obj,frameNum] = get_AVI(datas);Obj       = mmreader(datas);frameNum  = get(Obj,'NumberOfFrames');end1.2.3.4.5.6.7.

注意MATLAB对AVI,WMV格式的限制,所以最好先对视屏文件处理一下。



·背景的提取

本系统一个比较重要的部分就是背景的提取。

背景差分法,假设在提取运动目标的过程中其对应的背景是固定不变的,在这种条件下,该方法能精确的提取出快速、缓慢运动和静止的前景目标。正是由于这种特点,背景分差法对背景的变化非常敏感,只要背景发生较大的变化,则可能造成误检的现象。

在高速公路监控图像中,通过标定场景路面图像作为图像处理区域,其背景图像简单,而且每个背景点上的颜色分布比较集中。因此可以采用运算速度快、性能较好的统计学背景模型——序列均值法。

就是对一个视屏的像素求和再平均,由于过往的车辆是少数,所以求平均之后,其得到的像素值基本接近了背景。

登录后复制

function [back_ground,back1] = get_background(Obj,frameNum_Original);for i = 1:frameNum_Original    pixel(:,:,i)      = rgb2gray(read(Obj,i));  endrows = size(pixel,1);%240cols = size(pixel,2);%320for i = 1:rows    for j = 1:cols    back1(i,j) = 0;       endendfor k = 1:frameNum_Original    for i = 1:rows       for j = 1:cols       back1(i,j) = back1(i,j)+ double(pixel(i,j,k));         end    endend   for i = 1:rows    for j = 1:cols    back_ground(i,j) = uint8(back1(i,j)/frameNum_Original);       endend1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.



·视频预处理

登录后复制

for i = 1:frameNum    pixel(:,:,i) = rgb2gray(read(Obj,i));end1.2.3.4.5.

这个步骤比较简单,就是将每个视屏帧图片变成灰度图,一般系统处理。

三、部分MATLAB代码

顶层代码如下:

登录后复制

clc;close all;clear all;%Step1:读取视频%Step1:读取视频[Obj,frameNum_Original] = get_AVI('avi\02.AVI');%Step2:背景的提取%Step2:背景的提取%level越大,背景提取的越精确,通过序列平均法来求背景,所以对于背景的获取,%我们采用的是前面车辆较少的视频%在实际中,我们一般统计低峰期的平均值,所以这里我们使用01.AVI[Obj2,frameNum_Original2] = get_AVI('avi\01.AVI');[back_ground,back1] = get_background(Obj2,frameNum_Original2);% Step3:视屏预处理% Step3:视屏预处理frameNum       = frameNum_Original;pixel          = vedio_op(Obj,frameNum); % Step4:汽车捕获% Step4:汽车捕获 [bw,L2,L3,bws,L,pixel2] = get_car(pixel,frameNum,back_ground);%显示捕获后的汽车结果。implay(pixel2); % %车数目的计算,为了防止图像处理过程中的误差,一般我们选取图层中的合适位置进行统计车辆% %一般选取离摄像头近的区域% %检测车的数量% %检测车的密度。测试总数量/测试总时间% %计算每秒中通过车子数目。即车流密度。% [num_car,num_p] = car_number(pixel,frameNum,L2);%检测车的数量rows         = size(L3,1); %240cols         = size(L3,2); %320Length       = size(L3,3);area=0;TotalPic=0;for i =1:LengthTotalPic=car_information(bws(:,:,i),cols,rows,0.5);      if isempty(TotalPic)==0      area(1:length(TotalPic(4,:)),i)=TotalPic(4,:);      endendnum(1:size(area,2))=0;for i = 1:size(area,2)    for j = 1:size(area,1)        if area(j,i)>100        num(i) = num(i) + 1;        else        num(i) = num(i);        end     endendareas =sort(area(:,i));[Carnum,v]=max(num)% % 检测车的种类% % area=0;% % TotalPic=0;% % for i =1:Length%防止因为汽车开远,导致估计类别错误,所以只统计视频下半部分1/3的车辆面积大小% % TotalPic=car_information(bws(0.5*rows:rows,:,i),cols,rows/2,0.5);% %       if isempty(TotalPic)==0% %       area2(1:length(TotalPic(4,:)),i)=TotalPic(4,:);% %       end% % end1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.78.

基于MATLAB的视频车辆跟踪和计数系统仿真_理论基础_03

基于MATLAB的视频车辆跟踪和计数系统仿真_理论基础_04

基于MATLAB的视频车辆跟踪和计数系统仿真_车辆跟踪_05

基于MATLAB的视频车辆跟踪和计数系统仿真_车辆跟踪_06

基于MATLAB的视频车辆跟踪和计数系统仿真_预处理_07

基于MATLAB的视频车辆跟踪和计数系统仿真_理论基础_08

基于MATLAB的视频车辆跟踪和计数系统仿真_车辆跟踪_09

基于MATLAB的视频车辆跟踪和计数系统仿真_matlab_10

基于MATLAB的视频车辆跟踪和计数系统仿真_预处理_11

基于MATLAB的视频车辆跟踪和计数系统仿真_车辆计数_12

基于MATLAB的视频车辆跟踪和计数系统仿真_车辆计数_13

基于MATLAB的视频车辆跟踪和计数系统仿真_matlab_14

基于MATLAB的视频车辆跟踪和计数系统仿真_车辆跟踪_15

基于MATLAB的视频车辆跟踪和计数系统仿真_理论基础_16

基于MATLAB的视频车辆跟踪和计数系统仿真_车辆计数_17

基于MATLAB的视频车辆跟踪和计数系统仿真_matlab_18

基于MATLAB的视频车辆跟踪和计数系统仿真_车辆计数_19

基于MATLAB的视频车辆跟踪和计数系统仿真_车辆跟踪_20


基于MATLAB的视频车辆跟踪和计数系统仿真_车辆跟踪_21

基于MATLAB的视频车辆跟踪和计数系统仿真_预处理_22

四、仿真结论分析

基于MATLAB的视频车辆跟踪和计数系统仿真_理论基础_23

这个是GUI的界面,我们分别对这个界面做介绍。

第一个窗口显示的是原始的视屏

第二个窗口是提取视屏的背景。

第三个窗口是汽车跟踪,将汽车跟踪效果显示。

第四个窗口是画线,将用户画线后的区域分为两个区间,通过检测区间后,显示跟踪效果。

下面对这个GUI的操作做介绍:

操作一:”打开视频”

我们可以看到第一个画面开始播放原始的视屏文件。

基于MATLAB的视频车辆跟踪和计数系统仿真_预处理_24

操作二:”视频背景提取”

第二个窗口将显示提取的背景,显然提取的背景是正确的。

基于MATLAB的视频车辆跟踪和计数系统仿真_matlab_25

操作三:”汽车跟踪”

点击此按钮,汽车就会被跟踪。

基于MATLAB的视频车辆跟踪和计数系统仿真_车辆跟踪_26

后面的按钮“跟踪效果重复”是指将跟踪的视屏效果反复播放,

“逐帧显示”就是将跟踪效果按一帧一帧的效果显示,可以看到整个效果。

操作四:”画线(上移)” ”画线(下移)”

可以在视屏的屏幕上画一个线,用来划分区域。过了区域的车开始检测,不过的不检测。

基于MATLAB的视频车辆跟踪和计数系统仿真_车辆计数_27

操作五:“过线检测”“循环显示”

未过区域,不检测

基于MATLAB的视频车辆跟踪和计数系统仿真_matlab_28

通过区域,开始检测

基于MATLAB的视频车辆跟踪和计数系统仿真_车辆跟踪_29




免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空