简介

最近开始上手运动目标检测和跟踪,对于传统的目标检测算法比如帧差法、背景差分法、光流法之类的,从理论上学习了无数次,但是从来没有见到过程序长什么样。导致学一遍忘一遍。准备把这几类方法和程序归纳和学习一下,好记性不如烂笔头,有备无患。

背景差分法

转自:https://www.jianshu.com/p/58c6ca1b66af

1. 原理

背景差分法的思想是用图像序列中的当前帧和背景参考模型比较来检测运动物体。其核心是背景的建模方法。这里实现一种简单的背景建模方法,即对视频的全部帧取像素平均值得到背景。
当然,这种简单的算法局限性很大,视频的时长,光线与背景的变化都会对检测效果产生极大的影响。

2. 实现步骤

  • 背景建模: 对视频的全部帧取像素平均值得到背景
  • 比较: 当前帧与背景做差,差值大于一定阈值的像素点识别为前景
  • 提取:在原始帧上扣取出前景

3. 源代码


import matplotlib.pyplot as plt
import numpy as np
from PIL import Image# 读取帧数
img_number = 48# 各帧的集合
all_img = [np.array(Image.open('F:/input/'+str(i+1)+'.jpg', 'r')) for i in range(img_number)]# 帧的宽高
h = all_img[0].shape[0]
v = all_img[0].shape[1]# 计算得到背景
back_img = np.zeros((h, v))
for single_img in all_img:back_img += single_img
back_img /= img_number# 保存背景
Image.fromarray(back_img).convert('RGB').save('F:/output/background.jpg')# 原视频与背景逐帧相减后取绝对值 得到前景
front_img = np.array([i - back_img for i in all_img])
front_img = front_img.__abs__()# 前景二值化 设定阈值将前景像素值化为0或1
threshold_level = 50
threshold = np.full((h, v), threshold_level)
front_img = np.array([i < threshold for i in front_img], dtype=np.int8)*255# 在原帧上抠图 得到真实的前景
front_img = np.fmax(np.array(front_img), all_img)# 保存
for i in range(img_number):Image.fromarray(front_img[i]).convert('RGB').save('F:/output/'+str(i+1)+'.jpg')# 显示
loc_h = 6
loc_v = int(img_number / loc_h)
for i in range(loc_h * loc_v):plt.subplot(loc_v, loc_h, i+1)plt.imshow(front_img[i], cmap='gray')
plt.show()

视频转为图像是使用matlab实现的。


%将视频转换为图片
clear
clcfile_name = 'F:\input.avi';       %视频所在文件夹
obj = VideoReader(file_name);     %读取视频文件numFrames = obj.NumberOfFrames;   %视频总的帧数
for k = 1: numFramesframe = read(obj,k);%imshow(frame);                gray_frame = rgb2gray(frame); %若每一帧为彩色图片,转换为灰度图imshow(frame);                %显示每一帧图片%保存每一帧图片imwrite(gray_frame,strcat('F:\input\',num2str(k),'.jpg'),'jpg');
end

CV | 运动目标检测 之 背景差分法相关推荐

  1. 背景差法目标识别python_运动目标检测(4)—背景差分法

    背景减法利用图像序列中的当前帧和事先确定的背景参考模型间的差异比较,来确定运动物体位置,是一种基于统计学原理的运动目标检测的方法.这种方法的性能取决于背景建模技术,Gloyer等人使用单高斯模型的思路 ...

  2. 基于运动信息的物体检测(背景差分法、帧间差分法和光流法)。

    1.背景差分法: 它的基本思想是将输入图像与背景模型进行比较,通过判定灰度等特征的变化,或用直方图等统计信息的变化来分割运动目标. 首先建立好背景模型,存储背景图像.当当前帧与背景图像相减大于一定的阈 ...

  3. 运动目标检测(背景建模)

    高斯背景建模 高斯背景模型是由Stauffer等人提出的经典的自适应背景建模方法,假设每个像素在时域上符合正态分布,在一定阈值范围内 的像素判定为背景,并用来更新模型,不符合该分布的像素即为前景. 高 ...

  4. python图像差分法目标检测_运动目标检测(2)—帧间差分法

    帧差法依据的原则是:当视频中存在移动物体的时候,相邻帧(或相邻三帧)之间在灰度上会有差别,求取两帧图像灰度差的绝对值,则静止的物体在差值图像上表现出来全是0,而移动物体特别是移动物体的轮廓处由于存在灰 ...

  5. Python与OpenCV(二)——基于背景差分法的运动目标检测程序分析

    背景差分法是传统运动目标检测算法中最常用的方法.其基本原理如图所示. 从图中可知,背景差分法是通过建立背景模型,比较当前帧与背景模型对应像素的差异点来检测运动目标的方法. 背景模型的建立主要通过两种方 ...

  6. 静态背景下运动目标检测

    前言:运动对象常用在视频监控领域,目的是从序列图像中将变化区域从背景图像中提取出来,运动区域的有效检测对目标分类.跟踪.行为理解等后期处理非常重要.根据摄像机与运动目标之间的关系可分为静态背景下的运动 ...

  7. 基于opencV的动态背景下运动目标检测及跟踪(修改版)

    基于openCV的动态背景下的运动目标检测 from: http://www.mianfeiwendang.com/doc/89c6692a222a84b2ced0d502/1 摘要:介绍在动态背景下 ...

  8. 背景差分法android代码,【学术论文】基于背景差分法的尾气烟度检测系统设计...

    摘要随着机动车尾气的大量排放,为减少大气污染,对尾气进行相关的检测也越来越重要.为自动检测机动车尾气黑度,设计并实现了一种对尾气图片使用图像处理的方法进行林格曼级数检测的系统.通过对汽车尾气进行拍照处 ...

  9. 目标检测(一):背景差分法

           目标检测是将运动的物体从背景中检测出来,人们希望设计能适用于各种监控环境,不受光照.天气等外界因素影响的目标检测算法.但这种算法难免复杂度大,现有一些算法大多是针对某一类问题提出的,主要 ...

最新文章

  1. 在技术圈混,不知道这些你就 OUT 了
  2. hdfs/hbase 程序利用Kerberos认证超过ticket_lifetime期限后异常
  3. Scale-up(纵向扩展) vs Scale-out(横向扩展)
  4. 驱动级模拟驱动级模拟:直接读写键盘的硬件端口!
  5. CreateMainWindow 创建主窗口属性
  6. SQL Server里一些未公开的扩展存储过程
  7. this.$router 的三种跳转页面方法
  8. MB_LEN_MAX常数,带C ++示例
  9. 2021年中国少儿编程行业报告
  10. 1个月时间整理了2019年上千道Java面试题,近500页文档!
  11. mysql怎么获得权限_mysql怎么给用户加权限
  12. 重构Webpack系列之六 ---- 配置文件
  13. 纳什均衡定义、举例、分类
  14. 文件服务器整机克隆,云服务器镜像克隆
  15. 为什么要做小程序?90%的商家不知道的好处!
  16. 一阶常微分方程(二)|全微分方程+线性方程+常数易变法+伯努力方程
  17. Win10如何使用win7的照片查看器
  18. Android实现手机静音
  19. 智能座舱域控制器功能自动化测试方案
  20. 在Latex论文下方添加copyright

热门文章

  1. python 自动化 mysql 部署_Python自动化管理Mysql数据库教程
  2. 用友U9 SOA引领企业IT架构全面升级
  3. 增长或下降的百分比计算以及同比环比概念
  4. 4g+uim卡是什么卡_你知道SIM卡是什么吗?
  5. 华为鸿蒙朱丹丹,周一围心疼老婆?朱丹二胎产后憔悴臃肿却忙复出:这一年太痛苦...
  6. 专访卜茂霞:嵌入式汽车开发潜力巨大
  7. Win10邮箱管理QQ邮箱+163邮箱
  8. 【Win】KMS 激活命令记录
  9. Scala编程学习之三-运算符篇
  10. 连接 蓝牙HC - 05 模块 读写操作