资源简介
ViBe是一种像素级视频背景建模或前景检测的算法,效果优于所熟知的几种算法,对硬件内存占用也少。
代码片段和文件信息
%% Parameters
numberOfSamples = param.numberOfSamples;
matchingThreshold = param.matchingThreshold;
matchingNumber = param.matchingNumber;
updateFactor = param.updateFactor;
numberOfHistoryImages = param.numberOfHistoryImages;
%% Initialize ViBe
% originalImage=vidframe;%%开辟一块存储用于保存各像素点的原始背景模型
% flags=unit8(zeros(height width));%%为每一个像素设置一个标志只是该像素点是否保存有原始背景模型,1为保存了原始背景模型,初始化为0
% counters=unit8(zeros(heightwidth));%%为每一个像素点设置一个计数器,用来统计该像素点连续被判为前景的帧数
historyImages = cell(1 numberOfHistoryImages);
for ii = 1:length(historyImages)
historyImages{ii} = vidframe;
end
hsvImage=hsvframe;
historyBuffer = cell(1 numberOfSamples - numberOfHistoryImages);
for ii = 1:length(historyBuffer) %% 通过人为地对图像加入一定范围内的随机噪声构建样本集,这也时官网代码中的做法。
% historyBuffer{ii} = vidframe + double(floor(rand(height width))*20 - 10);
historyBuffer{ii} = vidframe + double(floor(rand(height width)*20- 10) );
end
%% Random Part
% 对于时间取样和空间邻域更新策略,在官网代码实现的时候确实很巧妙,
% 个人觉得很体现代码功力。实现的时候,如果对每一个点都进行概率判断,
% 就相当于遍历了每一个像素点,复杂度为O(height*width);换个角度思考,
% 每个点都有一定概率(比如1/rate)才更新,等同于整幅图图像每次会更新
% 一定概率部分个点,即1/rate*height*width个点更新,这样整体的计算复
% 杂度就会降到O(1/rate*height*width)。
size =2*max(height width) + 1;
% jump[] from 1 to 2*updateFactor
% 官网在实现的时候是通过随机步长的方式,
% 比如,步长为1~(2*rate - 1)之间的一个随机数,
% 每次更新一个点就向前移动一定步长。(假设整幅
% 图像存储为一个一维数组,每次通过加步长计算索
% 引)这样计算下来,平均每次移动的步长约等于rate,
% 那么整幅图像就会有1/rate*height*width进行更新,等价实现
jump = floor(rand(1 size)*2*updateFactor) + 1;%%随机步长
% neighborX Y represent the neighbor index
neighborX = floor(rand(1 size)*3) - 1;% -1~1
neighborY = floor(rand(1 size)*3) - 1;
% position[] from 1 to numberOfSamples
position = floor(rand(1 size)*numberOfSamples) + 1; %1~20
disp(‘Initialize ViBe‘)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2460 2017-02-21 18:00 vibeSegmentation.m
文件 4330 2017-02-21 17:08 vibeUpdate.m
文件 2187 2017-02-21 11:00 initViBe.m
文件 2676 2017-05-10 09:18 main.m
----------- --------- ---------- ----- ----
11653 4
- 上一篇:GN算法实现
- 下一篇:动态模式分解-一种矩阵降阶方法
相关资源
- Leach协议在MATLAB下面仿真的源代码
- 他励直流电动机启动的MATLAB仿真
- 对整个DS-CDMA系统进行仿真MATLAB
- ekf matlab仿真
- 基于小波变换多尺度边缘检测
- 基于RSSI的距离测量 matlab
- 多目标优化粒子群算法MATLAB
- 模拟退火算法的matlab程序,简单易懂
- MATLAB退火算法
- matlab遗传算法程序
- 水温计算机控制系统设计+Matlab仿真
- 电力系统潮流计算仿真
- Fanuc M10IA12机器人DH模型 matlab程序
- MATLAB编写的基于DCT变换的图像编码
- 谱聚类算法、K均值算法的matlab实现
- chan-vese的matlab代码实现
- 802.11a OFDM MATLAB仿真代码!(推荐)
- 在matlab中运行的zigzag扫描程序
- matlab rssi定位代码
- Huffman编解码算法及matlab实现
- 基于DCT数字水印算法的Matlab实现源代
- 粒子群算法详解+matlab代码说明
- 费诺编码fanomatlab程序
- 图像NMF分解MATLAB代码
- PID控制程序 matlab
- Matlab高阶统计量工具箱
- GA matlab算法程序
- EMD工具箱matlab
- 非局部去噪算法,matlab实现
- 特征检测小波包matlab程序与数据
评论
共有 条评论