• 大小: 16KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-10
  • 语言: Matlab
  • 标签:

资源简介

卡尔曼滤波跟踪视频目标matlab程序,简单易懂

资源截图

代码片段和文件信息

function multiobjectTracking()

% create system objects used for reading video detecting moving objects
% and displaying the results
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


%% Create System objects
% Create System objects used for reading the video frames detecting
% foreground objects and displaying results.

    function obj = setupSystemobjects()
        % Initialize Video I/O
        % Create objects for reading a video from a file drawing the tracked
        % objects in each frame and playing the video.
        
        % create a video file reader
        obj.reader = vision.VideoFileReader(‘atrium.avi‘);         %读入视频
        
        % create two video players one to display the video
        % and one to display the foreground mask
        obj.videoPlayer = vision.VideoPlayer(‘Position‘ [20 400 700 400]);   %创建两个窗口
        obj.maskPlayer = vision.VideoPlayer(‘Position‘ [740 400 700 400]);
        
        % Create system objects for foreground detection and blob analysis
        
        % The foreground detector is used to segment moving objects from
        % the background. It outputs a binary mask where the pixel value
        % of 1 corresponds to the foreground and the value of 0 corresponds
        % to the background. 
        
        obj.detector = vision.ForegroundDetector(‘NumGaussians‘ 3 ...   %GMM进行前景检测,高斯核数目为3,前40帧为背景帧,域值为0.7
            ‘NumTrainingframes‘ 40 ‘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

%% Initialize Tracks
% The |initializeTracks| function creates an array of tracks where each
% track is a structure representing a moving object in the video. The
% purpose of the structure is to maintain the state of a tracked object.
% The state consists of information used for detection to track

评论

共有 条评论