目标追踪-背景差算法
Posted qianbo_insist
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了目标追踪-背景差算法相关的知识,希望对你有一定的参考价值。
mog2 算法
MOG2算法,也是高斯混合模型分离算法,是MOG的改进,算法的重要特征是:为每个像素选择适当数量的高斯分布,可以更好地适应不同场景的照明变化等。高斯分布其实就是正态分布,(Normal distribution)。
1、混合高斯模型:
原理:将图像分为3-5个高斯模型,一个像素点来了,如果该像素点离任何一个高斯模型的距离大于其2倍的标准差,则为前景即运动物体,否则则是背景。
2、code
掌握其原理以后,下面直接用opencv来实现,这个只是应用而已。
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
VideoCapture capture("bike.avi");
if (!capture.isOpened())
{
return 0;
}
namedWindow("Extracted Foreground");
namedWindow("Source Video");
// 混合高斯物体
Mat frame, bg;
Mat kernel = getStructuringElement(MORPH_RECT, Size(2, 2));
Ptr<BackgroundSubtractor> mog2 = createBackgroundSubtractorMOG2();
bool stop(false);
while (!stop)
{
if (!capture.read(frame))
{
break;
}
imshow("Source Video", frame);
mog2->apply(frame, bg);
morphologyEx(bg, bg, MORPH_OPEN, kernel);
threshold(bg, bg, 128, 255, THRESH_BINARY);
imshow("Extracted Foreground", bg);
// show foreground
//imshow("Extracted Foreground", foreground);
//imshow("Source Video", frame);
if (waitKey(10) == 27)
{
stop = true;
}
}
}
原视频
检测出的前景
改进
可以做一些改进,读者可以提出,
以上是关于目标追踪-背景差算法的主要内容,如果未能解决你的问题,请参考以下文章