資源簡介
車流量統計matlab程序,可以對每輛車進行標號,親自測試過,絕對可用
代碼片段和文件信息
function?multiobjectTracking()
%?創建用于讀取視頻,檢測運動物體的系統對象,
%顯示結果。
obj?=?setupSystemobjects();
tracks?=?initializeTracks();?%?Create?an?empty?array?of?tracks.
nextId?=?1;?%?ID?of?the?next?track
%?Detect?moving?objects?and?track?them?across?video?frames.
while?~isDone(obj.reader)
????frame?=?readframe();
????[centroids?bboxes?mask]?=?detectobjects(frame);
????predictNewLocationsOfTracks();
????[assignments?unassignedTracks?unassignedDetections]?=?...
????????detectionToTrackAssignment();
????updateAssignedTracks();
????updateUnassignedTracks();
????deleteLostTracks();
????createNewTracks();
????displayTrackingResults();
end
function?obj?=?setupSystemobjects()
???????%?初始化視頻?I/O
????????%創建對象用于讀取視頻??繪制每一幀的跟蹤目標?播放視頻
??????
????????%?創建視頻讀取器.
????????obj.reader?=?vision.VideoFileReader(‘11.avi‘);
????????%?創建兩個?視頻播放窗口?一個用于播放視頻
????????%?一個用于播放前景掩模.
????????obj.videoPlayer?=?vision.VideoPlayer(‘Position‘?[20?400?700?400]);
????????obj.maskPlayer?=?vision.VideoPlayer(‘Position‘?[740?400?700?400]);
????????%創建用于前景檢測和斑點分析的系統對象
????????
????????%?The?foreground?detector?is?used?to?segment?moving?objects?from
????????%?the?background.?它輸出二值掩模?前景為1?背景為0.
????????obj.detector?=?vision.ForegroundDetector(‘NumGaussians‘?3?...
????????????‘NumTrainingframes‘?5?‘MinimumBackgroundRatio‘?0.7);
????????%?Connected?groups?of?foreground?pixels?are?likely?to?correspond?to?moving
????????%?objects.??The?blob?analysis?System?object?is?used?to?find?such?groups
????????%?(called?‘blobs‘?or?‘connected?components‘)?and?compute?their
????????%?characteristics?such?as?area?centroid?and?the?bounding?box.
????????obj.blobAnalyser?=?vision.BlobAnalysis(‘BoundingBoxOutputPort‘?true?...
????????????‘AreaOutputPort‘?true?‘CentroidOutputPort‘?true?...
????????????‘MinimumBlobArea‘?400);
end
function?tracks?=?initializeTracks()
????????%?create?an?empty?array?of?tracks
????????tracks?=?struct(...
????????????‘id‘?{}?...
????????????‘bbox‘?{}?...
????????????‘kalmanFilter‘?{}?...
????????????‘age‘?{}?...
????????????‘totalVisibleCount‘?{}?...
????????????‘consecutiveInvisibleCount‘?{});
end
function?frame?=?readframe()
????????frame?=?obj.reader.step();
end
????function?[centroids?bboxes?mask]?=?detectobjects(frame)
????????%?Detect?foreground.
????????mask?=?obj.detector.step(frame);
????????%?Apply?morphological?operations?to?清除噪聲?填補空洞.
????????mask?=?imopen(mask?strel(‘rectangle‘?[33]));
????????mask?=?imclose(mask?strel(‘rectangle‘?[15?15]));
????????mask?=?imfill(mask?‘holes‘);
????????%?進行斑點分析?找到連接部件.
????????[~?centroids?bboxes]?=?obj.blobAnalyser.step(mask);
????end
?function?predictNewLocationsOfTracks()
????????for?i?=?1:length(tracks)
????????????bbox?=?tracks(i).bbox;
??????????????%?預測軌道當前位置.
????????????predictedCentroid?=?predict(tracks(i).kalmanFilter);
????????????%?矩形框隨質心移動而移動
????????????predictedCentroid?=?int32(predi
- 上一篇:用于時頻分析的廣義s變換變換代碼時頻分析特別有用
- 下一篇:MIMO 成像算法
評論
共有 條評論