ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

提取视频中的前景物体

2021-05-15 12:32:16  阅读:199  来源: 互联网

标签:视频 提取 平均值 dst 背景 物体 像素 计算 模型


opencv 帧差法 absdiff

如果摄像机是固定的,那么我们可以认为场景(背景)大多数情况下是不变的,而只有前景(被跟踪的目标)会运动,这样就可以建立背景模型。通过比较当前帧和背景模型,就能轻松地跟踪目标运动情况了。这里,最容易想到的比较方式就是当前帧减去背景模型了

void AbsDiff( const CvArr* src1, const CvArr* src2, CvArr* dst );
  src1
  第一个原数组
  src2
  第二个原数组
  dst
  输出数组
  函数 cvAbsDiff 计算两个数组差的绝对值
  dst(I)c = abs(src1(I)c - src2(I)c).
  所有数组必须有相同的数据类型相同的大小(或ROI大小)

在实际生活中,很难有完全的背景,

因此有必要动态地构建背景模型,实现方法是观察该场景并持续一段时间。如果我们假设在
每个像素位置,背景在绝大部分时间都是可见的,那么建立背景模型的方法就很简单,只需计算
所有观察结果的平均值即可。但这种做法其实并不可行。首先,在计算背景之前需要存储大量的
图像;其次,在为计算平均值而累计图像的时候,并没有提取到前景物体。这种解决方案还需要
考虑两个问题:为了计算可靠的背景模型,需要累计何时的、多少数量的图像。另外,如果有些
图像中的某个像素正在监视一个前景物体,那么它们就会对计算平均背景产生很大的影响。
更好的策略是用定时更新的方式,动态地构建背景模型。实现方法是计算滑动平均值(又叫
移动平均值)。这是一种计算时间信号平均值的方法,该方法还考虑了最新收到的数值。假设p
是时间t的像素值,41是当前的平均值,那么要用下面的公式来更新平均值
A1=(1-a)H1-1+aP
其中参数a称为学习速率,它决定了当前值对计算平均值有多大影响。这个值越大,滑动平
均值对当前值变化的响应速度就越快;但如果学习速率太大,缓慢移动的物体就可能会消失在背
景中。实际上,应该采用多大的学习速率在很大程度上取决于场景的变化速度。为了构建背景模
型,必须在新的帧到达时对每个像素计算滑动平均值。然后就可以根据当前图像与背景模型之间
的差异,判断一个像素是否为前景像素。

如何进行背景累加

void cv::accumulateWeighted    (    InputArray     src,
InputOutputArray     dst,
//alpha*src+(1-alpha)*dst double alpha, InputArray mask = noArray() //掩码 )

即,alpha 调节更新速度(蓄能器"忘记"早期图像的速度)。该功能支持多通道图像。每个通道都独立处理

扩展:混合高斯模型:Opencv3之动态目标检测:BackgroundSubtractorMOG2参数配置_沐阳2100的博客-CSDN博客

标签:视频,提取,平均值,dst,背景,物体,像素,计算,模型
来源: https://www.cnblogs.com/KAVEI/p/14771236.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有