I'm using OpenCV2.2 to implement moving objects detection with the method of Background Subtraction. And I use the Gaussian Mixture Model(GMM) method to model the background reference image.
I directly get the foreground pixels(or foreground mask) by using the class cv::BackgroundSubtractorMOG provided in OpenCV2.2. It's convenient but the foreground mask returned by cv::BackgroundSubtractorMOG is not as good as I expected. In addition, it seems that cv::BackgroundSubtractorMOG performs poorer than the method of GMM wrote in C language provided in OpenCV1.0.
The following is my code in OpenCV2.2:
cv::BackgroundSubtractorMOG mog;
mog(frame, fgMask, 0.01);
So, did I use the method in a wrong way?
By the way, does cv::BackgroundSubtractorMOG perform shadow removal on the foreground pixels?
Thank you very much.
When you create mog, you are not defining any parameters, so it is created with default parameters. Here you have a description of each parameter, maybe is just that. Try with 3, 4 5 Gaussians.
This function does not perforn shadow-removal but you have this other function that does. Good luck!