diff --git a/modules/tracking/src/tldDetector.cpp b/modules/tracking/src/tldDetector.cpp index 900761bef..0443f46cb 100644 --- a/modules/tracking/src/tldDetector.cpp +++ b/modules/tracking/src/tldDetector.cpp @@ -491,6 +491,10 @@ namespace cv continue; varBuffer.push_back(Point(dx * i, dy * j)); varScaleIDs.push_back(scaleID); + + //Debug display candidates after Variance Filter + double curScale = pow(tld::SCALE_STEP, scaleID); + debugStack[0].push_back(Rect2d(dx * i* curScale, dy * j*curScale, initSize.width*curScale, initSize.height*curScale)); } } scaleID++; @@ -520,6 +524,9 @@ namespace cv //t = (e2 - e1) / getTickFrequency()*1000.0; //printf("Ensemble: %d\t%f\n", ensBuffer.size(), t); + //printf("varBuffer: %d\n", varBuffer.size()); + //printf("ensBuffer: %d\n", ensBuffer.size()); + //NN classification //e1 = getTickCount(); for (int i = 0; i < (int)ensBuffer.size(); i++) @@ -561,8 +568,11 @@ namespace cv if (maxSc < 0) return false; - res = maxScRect; - return true; + else + { + res = maxScRect; + return true; + } } bool TLDDetector::ocl_detect(const Mat& img, const Mat& imgBlurred, Rect2d& res, std::vector& patches, Size initSize) diff --git a/modules/tracking/src/tldDetector.hpp b/modules/tracking/src/tldDetector.hpp index 3e1189592..4dc433607 100644 --- a/modules/tracking/src/tldDetector.hpp +++ b/modules/tracking/src/tldDetector.hpp @@ -66,6 +66,8 @@ namespace cv static const cv::Size GaussBlurKernelSize(3, 3); + + class TLDDetector { public: @@ -79,6 +81,7 @@ namespace cv double ocl_Sc(const Mat_& patch); void ocl_batchSrSc(const Mat_& patches, double *resultSr, double *resultSc, int numOfPatches); + std::vector debugStack[10]; std::vector classifiers; Mat *posExp, *negExp; int *posNum, *negNum; @@ -93,15 +96,14 @@ namespace cv bool isObject, shouldBeIntegrated; }; bool detect(const Mat& img, const Mat& imgBlurred, Rect2d& res, std::vector& patches, Size initSize); - bool ocl_detect(const Mat& img, const Mat& imgBlurred, Rect2d& res, std::vector& patches, Size initSize); - protected: - - + bool ocl_detect(const Mat& img, const Mat& imgBlurred, Rect2d& res, std::vector& patches, Size initSize); friend class MyMouseCallbackDEBUG; - void computeIntegralImages(const Mat& img, Mat_& intImgP, Mat_& intImgP2){ integral(img, intImgP, intImgP2, CV_64F); } - inline bool patchVariance(Mat_& intImgP, Mat_& intImgP2, double *originalVariance, Point pt, Size size); + static void computeIntegralImages(const Mat& img, Mat_& intImgP, Mat_& intImgP2){ integral(img, intImgP, intImgP2, CV_64F); } + static inline bool patchVariance(Mat_& intImgP, Mat_& intImgP2, double *originalVariance, Point pt, Size size); }; + + } } diff --git a/modules/tracking/src/tldTracker.cpp b/modules/tracking/src/tldTracker.cpp index 0f1e2f78e..2af2d8e8e 100644 --- a/modules/tracking/src/tldTracker.cpp +++ b/modules/tracking/src/tldTracker.cpp @@ -45,6 +45,13 @@ namespace cv { + TrackerTLD::Params::Params(){} + + void TrackerTLD::Params::read(const cv::FileNode& /*fn*/){} + + void TrackerTLD::Params::write(cv::FileStorage& /*fs*/) const {} + + Ptr TrackerTLD::createTracker(const TrackerTLD::Params ¶meters) { return Ptr(new tld::TrackerTLDImpl(parameters)); @@ -112,7 +119,6 @@ bool TrackerTLDImpl::updateImpl(const Mat& image, Rect2d& boundingBox) Mat_ standardPatch(STANDARD_PATCH_SIZE, STANDARD_PATCH_SIZE); std::vector detectorResults; //best overlap around 92% - std::vector candidates; std::vector candidatesRes; bool trackerNeedsReInit = false; @@ -123,12 +129,11 @@ bool TrackerTLDImpl::updateImpl(const Mat& image, Rect2d& boundingBox) if (i == 1) { - if (ocl::haveOpenCL()) + if (!ocl::haveOpenCL()) DETECT_FLG = tldModel->detector->ocl_detect(imageForDetector, image_blurred, tmpCandid, detectorResults, tldModel->getMinSize()); else DETECT_FLG = tldModel->detector->detect(imageForDetector, image_blurred, tmpCandid, detectorResults, tldModel->getMinSize()); } - if( ( (i == 0) && !data->failedLastTime && trackerProxy->update(image, tmpCandid) ) || ( DETECT_FLG)) { candidates.push_back(tmpCandid); @@ -144,7 +149,6 @@ bool TrackerTLDImpl::updateImpl(const Mat& image, Rect2d& boundingBox) trackerNeedsReInit = true; } } - std::vector::iterator it = std::max_element(candidatesRes.begin(), candidatesRes.end()); //dfprintf((stdout, "scale = %f\n", log(1.0 * boundingBox.width / (data->getMinSize()).width) / log(SCALE_STEP))); @@ -230,6 +234,16 @@ bool TrackerTLDImpl::updateImpl(const Mat& image, Rect2d& boundingBox) #endif } + + //Debug display candidates after Variance Filter + //////////////////////////////////////////////// + Mat tmpImg = image; + for (int i = 0; i < tldModel->detector->debugStack[0].size(); i++) + //rectangle(tmpImg, tldModel->detector->debugStack[0][i], Scalar(255, 255, 255), 1, 1, 0); + tldModel->detector->debugStack[0].clear(); + tmpImg.copyTo(image); + + //////////////////////////////////////////////// return true; } diff --git a/modules/tracking/src/tldTracker.hpp b/modules/tracking/src/tldTracker.hpp index 40de754b7..4a5610de3 100644 --- a/modules/tracking/src/tldTracker.hpp +++ b/modules/tracking/src/tldTracker.hpp @@ -52,12 +52,6 @@ namespace cv { -TrackerTLD::Params::Params(){} - -void TrackerTLD::Params::read(const cv::FileNode& /*fn*/){} - -void TrackerTLD::Params::write(cv::FileStorage& /*fs*/) const {} - namespace tld { class TrackerProxy