From 41df5d5d13fce72b1988bb7c857a85bd9f4630d7 Mon Sep 17 00:00:00 2001 From: Josh Klontz Date: Mon, 1 Apr 2013 19:21:30 -0400 Subject: [PATCH] implemented coarse to fine matching --- openbr/plugins/quantize.cpp | 43 ++++++++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/openbr/plugins/quantize.cpp b/openbr/plugins/quantize.cpp index a6f21ca..e120f4d 100644 --- a/openbr/plugins/quantize.cpp +++ b/openbr/plugins/quantize.cpp @@ -285,23 +285,40 @@ BR_REGISTER(Distance, ProductQuantizationDistance) class RecursiveProductQuantizationDistance : public Distance { Q_OBJECT + Q_PROPERTY(float t READ get_t WRITE set_t RESET reset_t STORED false) + BR_PROPERTY(float, t, -1) float compare(const Template &a, const Template &b) const { - float distance = 0; - for (int i=0; i(aData); - aData += sizeof(quint16); - bData += sizeof(quint16); + return compareRecursive(a, b, 0, a.size(), 0); + } - const float *lut = (const float*)ProductQuantizationLUTs[index].data; - for (int j=0; j &a, const QList &b, int i, int size, float evidence) const + { + float similarity = 0; + + const int elements = a[i].total()-sizeof(quint16); + uchar *aData = a[i].data; + uchar *bData = b[i].data; + quint16 index = *reinterpret_cast(aData); + aData += sizeof(quint16); + bData += sizeof(quint16); + + const float *lut = (const float*)ProductQuantizationLUTs[index].data; + for (int j=0; j