clshuaige ed30ca9e3f update readme | 6 days ago | |
---|---|---|
CMakeFiles | 6 days ago | |
frames | 6 days ago | |
masks | 6 days ago | |
proposals | 6 days ago | |
vedios | 6 days ago | |
.gitignore | 1 week ago | |
CMakeCache.txt | 6 days ago | |
CMakeLists.txt | 6 days ago | |
Makefile | 6 days ago | |
README.md | 6 days ago | |
cmake_install.cmake | 6 days ago | |
image.png | 6 days ago | |
main | 6 days ago | |
main.cpp | 6 days ago |
假设数据由多个高斯分布的线性组合生成;
在视频图像中,利用一定数量的帧图像,为每个像素初始化由多个高斯分布线性组合的模型;
对于每个新的检测帧,通过比对与初始化模型差异,判断是否属于前景,再根据策略进行背景更新
图中左边部分描述了双背景建模、前景检测以及遗留物提取的过程
长时间背景(Long-Term background):预设较慢的更新速度,使得大部分新增加的物体都会被认为是前景;
短时间背景(Short-Term background):预设较快的更新速度,使得短暂静止的物体不会被检测为前景;
两者之差就认为是遗留物
double short_term_rate = 0.01; // short-term 更新速度
int short_term_history = 200; // short-term history 初始化所采用的帧数
double long_term_rate = 0.0005; // long-term 更新速度
int long_term_history = 5000; // long-term history 初始化所采用的帧数
将每一个从双背景消除中提取出来的前景物,绘制一个候选框
为每一个候选框构建以下结构体
struct proposal{
int x, y, w, h;
int life; // 生命周期,以帧为单位
int status; // 状态,用于处理
};
初始化proposal list;
出现新的proposal时,设定life=10, status=0;
将该proposal与list中的每个候选框进行iou匹配:
if iou < iou_threshold:
set proposal.status = -1;认为有重复
list[i].life++; list中重叠的候选框life+1,即重复出现一帧
if list[i].status==2:
continue; 表明该框曾经被判定为遗留物,不需要再次检测
else: set list[i].status = 1;表明该框处于活跃状态
if proposal.status==0;
list.push(proposal);
if list[i].status==1 and list[i].life > life_threshold: 认为该框存在一定时间,视为遗留物
detect(list[i]);
list[i].status=2;
else:
list[i].life--
if list[i].life==0: 认为该框不活跃,即没有重复出现该候选框
list.erase(i); 移除