Skip to content

Commit

Permalink
Merge pull request #2 from Auron-X/TLD_fixes_&_optimizations
Browse files Browse the repository at this point in the history
Tld fixes & optimizations
  • Loading branch information
Auron-X committed Jul 1, 2015
2 parents 26f16e6 + 7569b8a commit 3011e80
Show file tree
Hide file tree
Showing 13 changed files with 21 additions and 30 deletions.
2 changes: 1 addition & 1 deletion modules/tracking/samples/tld_test.cpp
Expand Up @@ -118,7 +118,7 @@ int main()
// VideoCapture cap(0);
// if( !cap.isOpened() )
// {
// cout << "Video stream error";
// cout << "Video stream error";
// return;
// }
//cap >> frame;
Expand Down
1 change: 0 additions & 1 deletion modules/tracking/src/TrackingFunctionPF.hpp
Expand Up @@ -24,7 +24,6 @@ namespace cv{
Mat_<double> HShist, Vhist;
};
TrackingHistogram _origHist;

const TrackingFunctionPF & operator = (const TrackingFunctionPF &);
};

Expand Down
3 changes: 1 addition & 2 deletions modules/tracking/src/tldDetector.cpp
Expand Up @@ -53,7 +53,7 @@ namespace cv
}

// Calculate posterior probability, that the patch belongs to the current EC model
double TLDDetector::ensembleClassifierNum(const uchar* data)
double TLDDetector::ensembleClassifierNum(const uchar* data)
{
double p = 0;
for (int k = 0; k < (int)classifiers.size(); k++)
Expand Down Expand Up @@ -146,7 +146,6 @@ namespace cv
Rect2d maxScRect;

//Detection part
//To fix: use precalculated BB
do
{
Mat_<double> intImgP, intImgP2;
Expand Down
5 changes: 2 additions & 3 deletions modules/tracking/src/tldDetector.hpp
Expand Up @@ -70,7 +70,6 @@ namespace cv
public:
TLDDetector(){}
~TLDDetector(){}

inline double ensembleClassifierNum(const uchar* data);
inline void prepareClassifiers(int rowstep);
double Sr(const Mat_<uchar>& patch);
Expand All @@ -89,8 +88,8 @@ namespace cv
};
bool detect(const Mat& img, const Mat& imgBlurred, Rect2d& res, std::vector<LabeledPatch>& patches, Size initSize);
protected:



friend class MyMouseCallbackDEBUG;
void computeIntegralImages(const Mat& img, Mat_<double>& intImgP, Mat_<double>& intImgP2){ integral(img, intImgP, intImgP2, CV_64F); }
Expand Down
11 changes: 5 additions & 6 deletions modules/tracking/src/tldEnsembleClassifier.cpp
Expand Up @@ -55,8 +55,7 @@ namespace cv
measurements.assign(meas.begin() + beg, meas.begin() + end);
offset.assign(mpc, Point2i(0, 0));
}

// Calculate measure locations from 15x15 grid on minSize patches
// Calculate measure locations from 15x15 grid on minSize patches
void TLDEnsembleClassifier::stepPrefSuff(std::vector<Vec4b>& arr, int pos, int len, int gridSize)
{
#if 0
Expand Down Expand Up @@ -92,7 +91,7 @@ namespace cv
}
#endif
}

// Calculate offsets for classifier
void TLDEnsembleClassifier::prepareClassifier(int rowstep)
{
Expand All @@ -106,7 +105,7 @@ namespace cv
}
}
}

// Integrate patch into the Ensemble Classifier model
void TLDEnsembleClassifier::integrate(const Mat_<uchar>& patch, bool isPositive)
{
Expand Down Expand Up @@ -137,7 +136,7 @@ namespace cv
return posNum / (posNum + negNum);
}

// Calculate the 13-bit fern index
// Calculate the 13-bit fern index
int TLDEnsembleClassifier::codeFast(const uchar* data) const
{
int position = 0;
Expand Down Expand Up @@ -188,7 +187,7 @@ namespace cv
stepPrefSuff(measurements, 2, size.height, gridSize);
stepPrefSuff(measurements, 3, size.height, gridSize);

//Compile fern classifiers
//Compile fern classifiers
for (int i = 0, howMany = (int)measurements.size() / measurePerClassifier; i < howMany; i++)
classifiers.push_back(TLDEnsembleClassifier(measurements, i * measurePerClassifier, (i + 1) * measurePerClassifier));

Expand Down
1 change: 0 additions & 1 deletion modules/tracking/src/tldEnsembleClassifier.hpp
Expand Up @@ -65,6 +65,5 @@ namespace cv
int lastStep_;
};


}
}
5 changes: 2 additions & 3 deletions modules/tracking/src/tldModel.cpp
Expand Up @@ -64,13 +64,12 @@ namespace cv

//Calculate the variance in initial BB
originalVariance_ = variance(image(boundingBox));

//Find the scale
double scale = scaleAndBlur(image, cvRound(log(1.0 * boundingBox.width / (minSize.width)) / log(SCALE_STEP)),
scaledImg, blurredImg, GaussBlurKernelSize, SCALE_STEP);
GaussianBlur(image, image_blurred, GaussBlurKernelSize, 0.0);
TLDDetector::generateScanGrid(image.rows, image.cols, minSize_, scanGrid);
getClosestN(scanGrid, Rect2d(boundingBox.x / scale, boundingBox.y / scale, boundingBox.width / scale,
getClosestN(scanGrid, Rect2d(boundingBox.x / scale, boundingBox.y / scale, boundingBox.width / scale,
boundingBox.height / scale), 10, closest);

Mat_<uchar> blurredPatch(minSize);
Expand Down Expand Up @@ -271,7 +270,7 @@ namespace cv
}




}
}
6 changes: 2 additions & 4 deletions modules/tracking/src/tldModel.hpp
Expand Up @@ -51,7 +51,6 @@ namespace cv
namespace tld
{




class TrackerTLDModel : public TrackerModel
Expand All @@ -75,14 +74,13 @@ namespace cv

protected:
Size minSize_;

TrackerTLD::Params params_;
void pushIntoModel(const Mat_<uchar>& example, bool positive);
void modelEstimationImpl(const std::vector<Mat>& /*responses*/){}
void modelUpdateImpl(){}
Rect2d boundingBox_;
Rect2d boundingBox_;
RNG rng;

};

}
Expand Down
8 changes: 4 additions & 4 deletions modules/tracking/src/tldTracker.cpp
Expand Up @@ -89,7 +89,7 @@ bool TrackerTLDImpl::initImpl(const Mat& image, const Rect2d& boundingBox)
myBoundingBox.width *= scale;
myBoundingBox.height *= scale;
}
model = Ptr<TrackerTLDModel>(new TrackerTLDModel(params, image_gray, myBoundingBox, data->getMinSize()));
model = Ptr<TrackerTLDModel>(new TrackerTLDModel(params, image_gray, myBoundingBox, data->getMinSize()));

data->confident = false;
data->failedLastTime = false;
Expand Down Expand Up @@ -119,7 +119,7 @@ bool TrackerTLDImpl::updateImpl(const Mat& image, Rect2d& boundingBox)
for( int i = 0; i < 2; i++ )
{
Rect2d tmpCandid = boundingBox;
if( ( (i == 0) && !data->failedLastTime && trackerProxy->update(image, tmpCandid) ) ||
if( ( (i == 0) && !data->failedLastTime && trackerProxy->update(image, tmpCandid) ) ||
((i == 1) && (tldModel->detector->detect(imageForDetector, image_blurred, tmpCandid, detectorResults, tldModel->getMinSize()))))
{
candidates.push_back(tmpCandid);
Expand Down Expand Up @@ -292,6 +292,6 @@ void Data::printme(FILE* port)
dfprintf((port, "\tminSize = %dx%d\n", minSize.width, minSize.height));
}

}
}

}
}
3 changes: 1 addition & 2 deletions modules/tracking/src/tldTracker.hpp
Expand Up @@ -49,7 +49,7 @@
#include<algorithm>
#include<limits.h>

namespace cv
namespace cv
{

TrackerTLD::Params::Params(){}
Expand All @@ -60,7 +60,6 @@ void TrackerTLD::Params::write(cv::FileStorage& /*fs*/) const {}

namespace tld
{


class TrackerProxy
{
Expand Down
2 changes: 1 addition & 1 deletion modules/tracking/src/tldUtils.cpp
Expand Up @@ -42,7 +42,7 @@
#include "tldUtils.hpp"


namespace cv
namespace cv
{
namespace tld
{
Expand Down
2 changes: 1 addition & 1 deletion modules/tracking/src/trackerMedianFlow.cpp
Expand Up @@ -63,7 +63,7 @@ namespace cv
/*
* TODO:
* add "non-detected" answer in algo --> test it with 2 rects --> frame-by-frame debug in TLD --> test it!!
* take all parameters out
* take all parameters out
* asessment framework
*
*
Expand Down
2 changes: 1 addition & 1 deletion modules/tracking/src/trackerSamplerAlgorithm.cpp
Expand Up @@ -385,7 +385,7 @@ TrackerSamplerPF::Params::Params(){
iterationNum=20;
particlesNum=100;
alpha=0.9;
std=(Mat_<double>(1,4)<<15.0,15.0,15.0,15.0);
std=(Mat_<double>(1,4)<<15.0,15.0,15.0,15.0);
}
TrackerSamplerPF::TrackerSamplerPF(const Mat& chosenRect,const TrackerSamplerPF::Params &parameters):
params( parameters ),_function(new TrackingFunctionPF(chosenRect)){
Expand Down

0 comments on commit 3011e80

Please sign in to comment.