ML0008基于Matlab用vibe算法完成视频前景提取

2021年10月19日 0 条评论 773 次阅读 1 人点赞

clear; clc; close all;

%% Parameters
param.numberOfSamples           = 10;
param.matchingThreshold         = 10;
param.matchingNumber            = 2;
param.updateFactor              = 5;
param.numberOfHistoryImages     = 2;
param.lastHistoryImageSwapped   = 0;

%% Video Information
filename = 'video.avi';
vidObj = VideoReader(filename);
numFrames = vidObj.NumberOfFrames;   %视频总的帧数

firstFrame = true;
height = vidObj.Height;
width = vidObj.Width;

param.height = height;
param.width = width;

%% ViBe Moving Object Detection
for k=1:numFrames
    vidFrame = read(vidObj,k);
%     figure(1), imshow(vidFrame), title('Original Image');
    vidFrame = rgb2gray(vidFrame);
    vidFrame = double(vidFrame);

    tic;
    if firstFrame
        firstFrame = false;
        initViBe;
    end
    segmentationMap = vibeSegmentation(vidFrame, historyImages, historyBuffer, param);    
    [historyImages, historyBuffer] = vibeUpdate(vidFrame, segmentationMap, historyImages, historyBuffer, param, ...
        jump, neighborX, neighborY, position);
    segmentationMap = medfilt2(segmentationMap);
    toc;
    
    figure(2), imshow(segmentationMap), title('Segmentation');
    
end

提取码:jy5f

极寒钛

别给思维设限