·視頻讀取介紹
首先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
這個步驟比較簡單,就是將每個視屏幀圖片變成灰度圖,一般系統處理,
·核心部分,汽車識別和提取
主要是通過和提取的背景進行對比,得到汽車的基本輪廓,然后再通過視頻的前后幀進行差分比對,得到運動汽車,最后對獲得圖片進行處理提取汽車,
其流程圖如下所示:

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/161929.html
標籤:其他
下一篇:3:bond定價基礎之收益率曲線
