No Description

clshuaige ed30ca9e3f update readme 6 days ago
CMakeFiles fc8ff4b819 init 6 days ago
frames fc8ff4b819 init 6 days ago
masks fc8ff4b819 init 6 days ago
proposals fc8ff4b819 init 6 days ago
vedios fc8ff4b819 init 6 days ago
.gitignore 2622e637ce Initial commit 1 week ago
CMakeCache.txt fc8ff4b819 init 6 days ago
CMakeLists.txt fc8ff4b819 init 6 days ago
Makefile fc8ff4b819 init 6 days ago
README.md ed30ca9e3f update readme 6 days ago
cmake_install.cmake fc8ff4b819 init 6 days ago
image.png ed30ca9e3f update readme 6 days ago
main fc8ff4b819 init 6 days ago
main.cpp ed30ca9e3f update readme 6 days ago

README.md

abandoned-object-detection-algo

基于双背景混合高斯建模的遗留物检测

混合高斯建模

基本原理:

假设数据由多个高斯分布的线性组合生成;

在视频图像中,利用一定数量的帧图像,为每个像素初始化由多个高斯分布线性组合的模型

对于每个新的检测帧,通过比对与初始化模型差异,判断是否属于前景,再根据策略进行背景更新

双背景建模:

图中左边部分描述了双背景建模、前景检测以及遗留物提取的过程

长时间背景(Long-Term background):预设较慢的更新速度,使得大部分新增加的物体都会被认为是前景;

短时间背景(Short-Term background):预设较快的更新速度,使得短暂静止的物体不会被检测为前景;

两者之差就认为是遗留物

alt text

背景建模基本参数:
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; // 状态,用于处理
};
  1. 初始化proposal list;

  2. 出现新的proposal时,设定life=10, status=0;

  3. 将该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);

  1. 遍历list:

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); 移除