From 892cc8aab7c5f70eaf5b5c8eff9e7936966af69d Mon Sep 17 00:00:00 2001 From: Ilya Lysenkov Date: Tue, 8 Jun 2010 13:21:47 +0000 Subject: [PATCH] Fixed FernDescriptorMatch and undid change of FernClassifier --- modules/features2d/src/descriptors.cpp | 8 ++++---- modules/features2d/src/planardetect.cpp | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/features2d/src/descriptors.cpp b/modules/features2d/src/descriptors.cpp index a93678777..7b3cd4647 100644 --- a/modules/features2d/src/descriptors.cpp +++ b/modules/features2d/src/descriptors.cpp @@ -549,15 +549,15 @@ void FernDescriptorMatch::trainFernClassifier() assert( params.filename.empty() ); vector points; - vector > refimgs( collection.images.size() ); + vector > refimgs; vector labels; for( size_t imageIdx = 0; imageIdx < collection.images.size(); imageIdx++ ) { - refimgs[imageIdx] = new Mat (collection.images[imageIdx]); for( size_t pointIdx = 0; pointIdx < collection.points[imageIdx].size(); pointIdx++ ) { + refimgs.push_back(new Mat (collection.images[imageIdx])); points.push_back(collection.points[imageIdx][pointIdx].pt); - labels.push_back(imageIdx); + labels.push_back(pointIdx); } } @@ -572,7 +572,7 @@ void FernDescriptorMatch::calcBestProbAndMatchIdx( const Mat& image, const Point { (*classifier)( image, pt, signature); - bestProb = 0; + bestProb = -FLT_MAX; bestMatchIdx = -1; for( size_t ci = 0; ci < (size_t)classifier->getClassCount(); ci++ ) { diff --git a/modules/features2d/src/planardetect.cpp b/modules/features2d/src/planardetect.cpp index 03e9d2398..fc062be38 100644 --- a/modules/features2d/src/planardetect.cpp +++ b/modules/features2d/src/planardetect.cpp @@ -853,7 +853,7 @@ void FernClassifier::train(const vector& points, for( i = 0; i < nsamples; i++ ) { Point2f pt = points[i]; - const Mat& src = labels.empty() ? *refimgs[i] : *refimgs[labels[i]]; + const Mat& src = *refimgs[i]; int classId = labels.empty() ? i : labels[i]; if( verbose && (i+1)*progressBarSize/nsamples != i*progressBarSize/nsamples ) putchar('.');