diff --git a/openbr/core/plot.cpp b/openbr/core/plot.cpp index 56643c0..5b0809b 100644 --- a/openbr/core/plot.cpp +++ b/openbr/core/plot.cpp @@ -250,6 +250,7 @@ float Evaluate(const QString &simmat, const QString &mask, const QString &csv) // Write Cumulative Match Characteristic (CMC) curve const int Max_Retrieval = 25; + float maxRankRate; for (int i=1; i<=Max_Retrieval; i++) { int realizedReturns = 0, possibleReturns = 0; foreach (int firstGenuineReturn, firstGenuineReturns) { @@ -257,10 +258,11 @@ float Evaluate(const QString &simmat, const QString &mask, const QString &csv) if (firstGenuineReturn <= i) realizedReturns++; } lines.append(qPrintable(QString("CMC,%1,%2").arg(QString::number(i), QString::number(float(realizedReturns)/possibleReturns)))); + if (i==(Max_Retrieval)) maxRankRate = float(realizedReturns)/possibleReturns; } if (!csv.isEmpty()) QtUtils::writeFile(csv, lines); - qDebug("TAR @ FAR = 0.01: %.3f", result); + qDebug("TAR @ FAR = 0.01: %.3f\nRetrieval Rate at Rank 25: %.3f", result, maxRankRate); return result; } diff --git a/openbr/openbr_plugin.cpp b/openbr/openbr_plugin.cpp index 0c19c22..0ea9f36 100644 --- a/openbr/openbr_plugin.cpp +++ b/openbr/openbr_plugin.cpp @@ -968,6 +968,7 @@ void br::Context::messageHandler(QtMsgType type, const QMessageLogContext &conte // Write debug output then close qDebug(" File: %s\n Function: %s\n Line: %d", qPrintable(context.file), qPrintable(context.function), context.line); Globals->finalize(); + //QCoreApplication::exit(-1); abort(); } } diff --git a/openbr/plugins/distance.cpp b/openbr/plugins/distance.cpp index b987b24..c3ef877 100644 --- a/openbr/plugins/distance.cpp +++ b/openbr/plugins/distance.cpp @@ -177,6 +177,11 @@ class PipeDistance : public Distance BR_REGISTER(Distance, PipeDistance) +/*! + * \ingroup distances + * \brief Average distance of multiple matrices + * \author Scott Klum \cite sklum + */ class AverageDistance : public Distance { Q_OBJECT @@ -190,19 +195,12 @@ class AverageDistance : public Distance float compare(const Template &a, const Template &b) const { - if (a.size() != b.size()) - qDebug() << a.size() << " " << b.size(); + if (a.size() != b.size()) qFatal("Comparison size mismatch"); float score = 0; + for (int i = 0; i < a.size(); i++) score += distance->compare(a[i],b[i]); - for (int i = 0; i < a.size(); i++) { - //Template - score += distance->compare(a[i],b[i]); - } - - qDebug() << score; - - return score; + return score/(float)a.size(); } }; diff --git a/openbr/plugins/gallery.cpp b/openbr/plugins/gallery.cpp index add1c6f..4537aab 100644 --- a/openbr/plugins/gallery.cpp +++ b/openbr/plugins/gallery.cpp @@ -302,7 +302,7 @@ class memGallery : public Gallery static void align(TemplateList &templates) { - //if (templates[0].size() > 1) return; + if (!templates.empty() && templates[0].size() > 1) return; bool uniform = true; QVector alignedData(templates.bytes()); diff --git a/openbr/plugins/meta.cpp b/openbr/plugins/meta.cpp index 805d179..f19e4cc 100644 --- a/openbr/plugins/meta.cpp +++ b/openbr/plugins/meta.cpp @@ -88,7 +88,7 @@ class PipeTransform : public CompositeTransform TemplateList copy(data); int i = 0; while (i < transforms.size()) { - fprintf(stderr, "%s", qPrintable(transforms[i]->objectName())); + fprintf(stderr, "\n%s", qPrintable(transforms[i]->objectName())); // Conditional statement covers likely case that first transform is untrainable if (transforms[i]->trainable) { @@ -106,7 +106,7 @@ class PipeTransform : public CompositeTransform !transforms[nextTrainableTransform]->trainable) nextTrainableTransform++; - fprintf(stderr, " projecting...\n"); + fprintf(stderr, " projecting..."); QFutureSynchronizer futures; for (int j=0; jparallelism) futures.addFuture(QtConcurrent::run(this, &PipeTransform::_projectPartial, ©[j], i, nextTrainableTransform));