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