2012-05-31 62 views
4

我只是想知道这个函数CvBGStatModel()是如何工作的。我的意思是说什么是用于此的算法,以及它与平均和帧差分算法相比如何给出更好的结果。opencv函数CvBGStatModel

在此先感谢。

回答

3

CvBGStatModel()是一个类,而不是一个函数。例如,你可以创建这个类是这样的:

IplImage* temp = NULL; 
temp = cvLoadImage("temp.jpg"); 
CvBGStatModel* background_model = cvCreateGaussianBGModel(temp); 

你要调用一个函数,以更新背景/前景模型(see sample):

cvUpdateBGStatModel(temp, background_model); 

“如何提供更好的结果与平均值和帧差算法进行比较“

因为它将像素信息存储为更好地表示该像素的高斯分布的混合。这意味着只要能够更好地表示它的高斯图像被认为是背景,就不会考虑在几帧内改变其值的像素。高斯是加权的。最长的高斯分布被认为是背景,它具有的权重越大。 帧差算法仅考虑帧之间的差异,但不考虑这些差异的一致性/可信度。

+0

我还有另一个疑问,我使用的是opencv 2.0,并且这个类不在其中,所以请告诉我我应该使用哪个版本?感谢您的及时答案。它真的很有帮助..我也试图计算视频中的汽车数量..我的算法是基于矩形的检测,但可悲的是它计算了一个单一的车由3个矩形组成结果是不是所需的一个..任何人都可以帮助我改进这个算法或任何更好的算法总是欢迎...提前感谢。 – user1386438

+0

我建议你总是使用最新版本的OpenCV。我使用2.3.1,但现在可以使用2.4。如果你没有这个类,你肯定会有相应的改进的接口:http://docs.opencv.org/modules/video/doc/motion_analysis_and_object_tracking.html?highlight=background#backgroundsubtractormog2 –

+0

建议一些关于算法 – user1386438