目标追踪-背景差算法

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;
		}
	}
}

原视频
原图
检测出的前景
前景

改进

可以做一些改进,读者可以提出,

以上是关于目标追踪-背景差算法的主要内容,如果未能解决你的问题,请参考以下文章

AI简单平移追踪算法

keras-yolov3 + Kalman-Filter 进行人体多目标追踪(含代码)

实时目标追踪:ByteTrack算法步骤详解和代码逐行解析

运动目标检测跟踪主流算法

技术分享 吊舱目标追踪---deepsort原理讲解

OpenCV学习笔记15-目标跟踪算法介绍及实战