Fixed BackgroundSubstractorMOG2 in opencv_video.
authorGilles Rochefort <gilles@placemeter.com>
Sun, 29 May 2016 15:25:02 +0000 (17:25 +0200)
committerGilles Rochefort <gilles@placemeter.com>
Sun, 29 May 2016 15:25:02 +0000 (17:25 +0200)
The number of gaussians involved in a mixture is supposed
to be dynamically adjusted. After being increased, the number
of gaussians can't be reduced anymore.

It seems to be a regression as the legacy code
located in modules/legacy/src/bgfg_gaussmix.cpp allows to reduce
such number of gaussians.

modules/video/src/bgfg_gaussmix2.cpp

index 9700dfe..d5eff82 100644 (file)
@@ -309,7 +309,7 @@ struct MOG2Invoker : ParallelLoopBody
 
                 //internal:
                 bool fitsPDF = false;//if it remains zero a new GMM mode will be added
-                int nmodes = modesUsed[x], nNewModes = nmodes;//current number of modes in GMM
+                int nmodes = modesUsed[x];//current number of modes in GMM
                 float totalWeight = 0.f;
 
                 float* mean_m = mean;
@@ -415,8 +415,6 @@ struct MOG2Invoker : ParallelLoopBody
                     gmm[mode].weight *= totalWeight;
                 }
 
-                nmodes = nNewModes;
-
                 //make new mode if needed and exit
                 if( !fitsPDF )
                 {