视频编码

·视频读取介绍

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

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

 

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

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

对应代码为

function [Obj,frameNum] = get_AVI(datas);

Obj       = mmreader(datas);

frameNum  = get(Obj,'NumberOfFrames');

end

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

·背景的提取

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

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

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

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

function [back_ground,back1] = get_background(Obj,frameNum_Original);

for i = 1:frameNum_Original

    pixel(:,:,i)      = rgb2gray(read(Obj,i));  

end

rows = size(pixel,1);%240

cols = size(pixel,2);%320

for i = 1:rows

    for j = 1:cols

    back1(i,j) = 0;   

    end

end

for k = 1:frameNum_Original

    for i = 1:rows

       for j = 1:cols

       back1(i,j) = back1(i,j)+ double(pixel(i,j,k));  

       end

    end

end   

for i = 1:rows

    for j = 1:cols

    back_ground(i,j) = uint8(back1(i,j)/frameNum_Original);   

    end

end

 

·视频预处理

for i = 1:frameNum

    pixel(:,:,i) = rgb2gray(read(Obj,i));

end

 

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

·核心部分,汽车识别和提取

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

    其流程图如下所示:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值