资源简介
纯手工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\fr
文件 35868 2004-12-29 13:18 egtest02\fr
文件 36376 2004-12-29 13:18 egtest02\fr
文件 36376 2004-12-29 13:18 egtest02\fr
文件 32299 2004-12-29 13:18 egtest02\fr
文件 35674 2004-12-29 13:18 egtest02\fr
文件 36004 2004-12-29 13:18 egtest02\fr
文件 35325 2004-12-29 13:18 egtest02\fr
文件 35379 2004-12-29 13:18 egtest02\fr
文件 33709 2004-12-29 13:18 egtest02\fr
文件 33736 2004-12-29 13:18 egtest02\fr
文件 33736 2004-12-29 13:18 egtest02\fr
文件 35932 2004-12-29 13:18 egtest02\fr
文件 33533 2004-12-29 13:18 egtest02\fr
文件 35188 2004-12-29 13:18 egtest02\fr
文件 35806 2004-12-29 13:18 egtest02\fr
文件 34872 2004-12-29 13:18 egtest02\fr
文件 34872 2004-12-29 13:18 egtest02\fr
文件 34793 2004-12-29 13:18 egtest02\fr
文件 35207 2004-12-29 13:18 egtest02\fr
文件 35207 2004-12-29 13:18 egtest02\fr
文件 33280 2004-12-29 13:18 egtest02\fr
文件 35258 2004-12-29 13:18 egtest02\fr
文件 32130 2004-12-29 13:18 egtest02\fr
文件 34699 2004-12-29 13:18 egtest02\fr
文件 33150 2004-12-29 13:18 egtest02\fr
文件 33150 2004-12-29 13:18 egtest02\fr
文件 34429 2004-12-29 13:18 egtest02\fr
文件 35674 2004-12-29 13:18 egtest02\fr
............此处省略1276个文件信息
相关资源
- 数字通信同步技术的MATLAB与FPGA实现—
- 经济预测方法与MATLAB实现课件PPT
- Matlab的BNT工具箱
- CNN卷积神经网络Matlab实现
- 先进PID控制MATLAB仿真.zip
- 最优化方法及其Matlab程序设计源程序
- matlab倒立摆系统
- 基于MATLAB的手机相机校正与标定实验
-
matlab/simuli
nk动力学系统建模与仿真 - 先进PID控制MATLAB仿真(4th).rar
- 基于matlab的数学建模算法与应用内以
- 卫星接收机matlab
- 纹理检测代码及论文
- MATLAB神经网络30个案例分析全书+源代
- 关于语音识别的matlab程序
- 基于MATLAB的车牌自动识别系统
- MATLAB工具包mmread函数mmread.zip
- PCA主成分分析实现方法Matlab
- MATLAB神经网络30个案例分析
- Computer Programming with MATLAB
- 基于监控视频的前景目标提取matlab
- zw_MATLAB应用精讲:图像处理与GUI设计
- MATLAB控制系统仿真与详解 夏玮
- matlab神经网络30例电子书+源代码
- Matlab图像处理-图像去噪边缘增强
- EEG脑电处理matlab工具包-eeglab
- 《卡尔曼滤波原理及应用-MATLAB仿真》
- 贝叶斯抠图算法matlab实现
- 基于BP神经网络的验证码识别matlab
- 杜勇-数字通信同步技术的MATLAB与FPG
评论
共有 条评论