From ca40d635e41f2a8bde27458d5d8fe78942820d1a Mon Sep 17 00:00:00 2001 From: Hernan Badino Date: Mon, 19 May 2014 10:12:07 -0400 Subject: [PATCH] Switched insertion of connected components in filterSpecklesImpl --- modules/calib3d/src/stereosgbm.cpp | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/modules/calib3d/src/stereosgbm.cpp b/modules/calib3d/src/stereosgbm.cpp index 0de9189b9e..01661813a2 100644 --- a/modules/calib3d/src/stereosgbm.cpp +++ b/modules/calib3d/src/stereosgbm.cpp @@ -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;