-
meanShift
- 我们有一堆点(比如直方图反向投影得到的点),和一个小的圆形窗口,我们要完成的任务就是将这个窗口移动到最大灰度密度处
- 示意图
- cv39_meanshift.py
-
Camshift
- 与 Meanshift 基本一样,但是返回的结果是一个带旋转角度的矩形
(这是我们的结果),以及这个矩形的参数
- cv39_camshift.py
-
光流
-
概念
- 目标对象或者摄像机的移动造成的图像对象
在连续两帧图像中的移动被称为光流。
-
应用领域
- 由运动重建结构
- 视频压缩
- Video Stabilization
-
光流基于的假设
- 在连续的两帧图像之间(目标对象的)像素的灰度值不改变
- 相邻的像素(3x3)具有相同的运动
-
opencv中的光流 cv2.calcOpticalFlowPyrLK()
- 使用函数 cv2.goodFeatureToTrack() 来确定要跟踪的点
- 在视频的第一帧图像中检测一些 Shi-Tomasi 角点
- 使用 LucasKanade 算法迭代跟踪这些角点
- 给函数 cv2.calcOpticlaFlowPyrLK() 传入前一帧图像和其中的点,以及下一帧图像
- cv40_opticalflow.py
-
opencv中稠密光流
- 计算图像中的所有点的光流
-
背景消除
-
BackgroundSubtractorMOG
-
算法原理
- 1. 以混合高斯模型为基础的前景/背景分割算法
- 2. 使用 K(K=3 或 5)个高斯分布混合对背景像素进行建模
- 3. 使用这些颜色(在整个视频中)存在时间的长短作为混合
的权重。背景的颜色一般持续的时间最长,而且更加静止
-
使用
- 有些可选参数,比如要进行建模场景的时间长度,
高斯混合成分的数量,阈值等。将他们全部设置为默认值
- 然后在整个视频中我们是需要使用 backgroundsubtractor.apply()
就可以得到前景的掩模
- cv41_BackgroundSubtractorMOG.py
-
BackgroundSubtractorMOG2
-
算法原理
- 它为每一个像素选择一个合适数目的高斯分布。
(上一个方法中我们使用是 K 高斯分布)。
- 就会对由于亮度等发生变化引起的场景变化产生更好的适应
-
BackgroundSubtractorGMG
-
算法原理
- 结合了静态背景图像估计和每个像素的贝叶斯分割
- 使用前面很少的图像(默认为前 120 帧)进行背景建模
- 使用了概率前景估计算法(使用贝叶斯估计鉴定前景)
- 是一种自适应的估计,新观察到的对象比旧的对象具
有更高的权重,从而对光照变化产生适应
- cv41_BackgroundSubtractorGMG.py