• 大小: 42.17MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-07-02
  • 语言: Matlab
  • 标签: ViBe  Matlab  运动检测  

资源简介

纯手工ViBe算法Demo,可以完整运行,很少使用循环计算,速度较快。适合调参数和修改算法使用,也可以直接用来检测现成的图像。有部分注释。

资源截图

代码片段和文件信息

clc;
clear;
close all;
imgpath = sprintf(‘egtest02/frame%s.jpg‘ ‘00000‘);
D = dir(‘egtest02/*.jpg‘);
imgnum = length(D);
num_last = sprintf(‘0%d‘ imgnum-1);
img_first = imread(imgpath);
img_last = imread(sprintf(‘egtest02/frame%s.jpg‘ num_last));
numSample = 30; %每个像素点背景模型采样点数
thres = 40;    %阈值
fresh_thres = 3;    %背景更新阈值
sz = size(img_first);
nump = sz(11)*sz(12);
% 当计算第一帧时初始化所有像素点的背景模型ind1
ind1 = randi([18] [nump numSample]);
ind1 = uint8(ind1);
% 获得每个像素点的8邻域模型中像素点的实际坐标编号
ind_nh = [1:nump]‘;
ind_nh(:2) = ind_nh(:1)-sz(12)-1;
ind_nh(:3) = ind_nh(:1)-sz(12);
ind_nh(:4) = ind_nh(:1)-sz(12)+1;
ind_nh(:5) = ind_nh(:1)+1;
ind_nh(:6) = ind_nh(:1)+sz(12)+1;
ind_nh(:7) = ind_nh(:1)+sz(12);
ind_nh(:8) = ind_nh(:1)+sz(12)-1;
ind_nh(:9) = ind_nh(:1)-1;
ind_nh = uint32(ind_nh);

tt = find(ind_nh(:1)<=sz(12));
ind_nh(tt:) = [];
ind1(tt:) = [];
tt = find(ind_nh(:1)>sz(12)*(sz(11)-1));
ind_nh(tt:) = [];
ind1(tt:) = [];
tt = find(mod(ind_nh(:1)sz(12))==1);
ind_nh(tt:) = [];
ind1(tt:) = [];
tt = find(mod(ind_nh(:1)sz(12))==0);
ind_nh(tt:) = [];
ind1(tt:) = [];

for cc = 2:imgnum
    tic;
    result = zeros(sz(11) sz(12));
    img0 = imread(sprintf(‘egtest02/%s‘ D(cc-11).name));
    img1 = imread(sprintf(‘egtest02/%s‘ D(cc1).name));
    figure(1)
    imshow(img0);
    figure(2)
    img_diff = img0-img1;
    imshow(img_diff);
    sz = size(img0);
    l1 = reshape(img0(::1) sz(11) sz(12));
    l2 = reshape(img0(::2) sz(11) sz(12));
    l3 = reshape(img0(::3) sz(11) sz(12));
    l11 = reshape(img1(::1) sz(11) sz(12));
    l22 = reshape(img1(::2) sz(11) sz(12));
    l33 = reshape(img1(::3) sz(11) sz(12));
    dist = sqrt((double(l1)-double(l11)).^2+(double(l2)-double(l22)).^2+(double(l3)-double(l33)).^2);
    % 计算每个像素点两帧之间的RGB距离
    cdist = reshape(dist‘ sz(11)*sz(12) 1);
    % 确定每个像素的背景模型中的实际像素编号 实际修正ind1这个矩阵
    indtt = int16(ind1);
    indtt(indtt==1) = -sz(12)-1;
    indtt(indtt==2) = -sz(12);
    indtt(indtt==3) = -sz(12)+1;
    indtt(indtt==5) = sz(12)+1;
    indtt(indtt==6) = sz(12);
    indtt(indtt==7) = sz(12)-1;
    indtt(indtt==4) = 1;
    indtt(indtt==8) = -1;
    ind_nht = double(ind_nh(:1))*ones(1numSample);
    ind_nht = uint32(ind_nht);
    ind_nht = double(ind_nht)+double(indtt);
    ind_nht = uint32(ind_nht);
    Bc_ind = [ind_nh(:1) ind_nht];
    % 比较每个像素点的背景模型
    Dist_ind = zeros(size(Bc_ind1) numSample);
    Dist_ind(:1:numSample) = cdist(Bc_ind(:2:(numSample+1)));
    Dist_ind(:1:numSample) = Dist_ind(:1:numSample)-thres;
    
    for i = 1:numSample
        Dist_ind(Dist_ind(:i)>=0 i) = 0;    %如果1的数量小于等于阈值 视为前景点
        Dist_ind(Dist_ind(:i)<0 i) = 1;     %如果1的数量大于阈值 则视为该像素为背景点 同时更新该像素的背景模型
    end
    mk_ind = sum(Dist_ind‘);
    mk_ind = mk_ind‘;
    result = ones(size(ind11) 1);
    ind_refresh = find(mk_ind>fresh_thres);
    result(in

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3652  2017-03-28 16:58  ViBe_DEMO.m

     文件      35783  2004-12-29 13:18  egtest02\frame00000.jpg

     文件      35868  2004-12-29 13:18  egtest02\frame00001.jpg

     文件      36376  2004-12-29 13:18  egtest02\frame00002.jpg

     文件      36376  2004-12-29 13:18  egtest02\frame00003.jpg

     文件      32299  2004-12-29 13:18  egtest02\frame00004.jpg

     文件      35674  2004-12-29 13:18  egtest02\frame00005.jpg

     文件      36004  2004-12-29 13:18  egtest02\frame00006.jpg

     文件      35325  2004-12-29 13:18  egtest02\frame00007.jpg

     文件      35379  2004-12-29 13:18  egtest02\frame00008.jpg

     文件      33709  2004-12-29 13:18  egtest02\frame00009.jpg

     文件      33736  2004-12-29 13:18  egtest02\frame00010.jpg

     文件      33736  2004-12-29 13:18  egtest02\frame00011.jpg

     文件      35932  2004-12-29 13:18  egtest02\frame00012.jpg

     文件      33533  2004-12-29 13:18  egtest02\frame00013.jpg

     文件      35188  2004-12-29 13:18  egtest02\frame00014.jpg

     文件      35806  2004-12-29 13:18  egtest02\frame00015.jpg

     文件      34872  2004-12-29 13:18  egtest02\frame00016.jpg

     文件      34872  2004-12-29 13:18  egtest02\frame00017.jpg

     文件      34793  2004-12-29 13:18  egtest02\frame00018.jpg

     文件      35207  2004-12-29 13:18  egtest02\frame00019.jpg

     文件      35207  2004-12-29 13:18  egtest02\frame00020.jpg

     文件      33280  2004-12-29 13:18  egtest02\frame00021.jpg

     文件      35258  2004-12-29 13:18  egtest02\frame00022.jpg

     文件      32130  2004-12-29 13:18  egtest02\frame00023.jpg

     文件      34699  2004-12-29 13:18  egtest02\frame00024.jpg

     文件      33150  2004-12-29 13:18  egtest02\frame00025.jpg

     文件      33150  2004-12-29 13:18  egtest02\frame00026.jpg

     文件      34429  2004-12-29 13:18  egtest02\frame00027.jpg

     文件      35674  2004-12-29 13:18  egtest02\frame00028.jpg

............此处省略1276个文件信息

评论

共有 条评论