Switched insertion of connected components in filterSpecklesImpl
authorHernan Badino <hernan.badino@gmail.com>
Mon, 19 May 2014 14:12:07 +0000 (10:12 -0400)
committerHernan Badino <hernan.badino@gmail.com>
Mon, 19 May 2014 14:12:07 +0000 (10:12 -0400)
modules/calib3d/src/stereosgbm.cpp

index 0de9189..0166181 100644 (file)
@@ -913,18 +913,6 @@ namespace
                             T dp = *dpp;
                             int* lpp = labels + width*p.y + p.x;
 
-                            if( p.x < width-1 && !lpp[+1] && dpp[+1] != newVal && std::abs(dp - dpp[+1]) <= maxDiff )
-                            {
-                                lpp[+1] = curlabel;
-                                *ws++ = Point2s(p.x+1, p.y);
-                            }
-
-                            if( p.x > 0 && !lpp[-1] && dpp[-1] != newVal && std::abs(dp - dpp[-1]) <= maxDiff )
-                            {
-                                lpp[-1] = curlabel;
-                                *ws++ = Point2s(p.x-1, p.y);
-                            }
-
                             if( p.y < height-1 && !lpp[+width] && dpp[+dstep] != newVal && std::abs(dp - dpp[+dstep]) <= maxDiff )
                             {
                                 lpp[+width] = curlabel;
@@ -937,6 +925,18 @@ namespace
                                 *ws++ = Point2s(p.x, p.y-1);
                             }
 
+                            if( p.x < width-1 && !lpp[+1] && dpp[+1] != newVal && std::abs(dp - dpp[+1]) <= maxDiff )
+                            {
+                                lpp[+1] = curlabel;
+                                *ws++ = Point2s(p.x+1, p.y);
+                            }
+
+                            if( p.x > 0 && !lpp[-1] && dpp[-1] != newVal && std::abs(dp - dpp[-1]) <= maxDiff )
+                            {
+                                lpp[-1] = curlabel;
+                                *ws++ = Point2s(p.x-1, p.y);
+                            }
+
                             // pop most recent and propagate
                             // NB: could try least recent, maybe better convergence
                             p = *--ws;