Commit a10153883188a2f44779ecc645b05db08cf447a0

Authored by Josh Klontz
1 parent d86637ae

optimizations

Showing 1 changed file with 12 additions and 7 deletions
openbr/plugins/quantize.cpp
... ... @@ -74,22 +74,27 @@ class BayesianQuantizationDistance : public Distance
74 74 QList<int> labels = src.labels<int>();
75 75  
76 76 QVector<qint64> genuines(256*256,0), impostors(256*256,0);
77   - qint64 totalGenuines(0), totalImpostors(0);
78 77 for (int i=0; i<labels.size(); i++) {
79 78 const uchar *a = data.ptr(i);
80 79 for (int j=0; j<labels.size(); j++) {
81 80 const uchar *b = data.ptr(j);
82 81 const bool genuine = (labels[i] == labels[j]);
83   - for (int k=0; k<data.cols; k++) {
84   - if (genuine) { genuines[256*a[k]+b[k]]++; genuines[256*b[k]+a[k]]++; totalGenuines++; }
85   - else { impostors[256*a[k]+b[k]]++; impostors[256*b[k]+a[k]]++; totalImpostors++; }
86   - }
  82 + for (int k=0; k<data.cols; k++)
  83 + genuine ? genuines[256*a[k]+b[k]]++ : impostors[256*a[k]+b[k]]++;
87 84 }
88 85 }
89 86  
  87 + qint64 totalGenuines(0), totalImpostors(0);
  88 + for (int i=0; i<256*256; i++) {
  89 + totalGenuines += genuines[i];
  90 + totalImpostors += impostors[i];
  91 + }
  92 +
90 93 loglikelihood = QVector<float>(256*256);
91   - for (int i=0; i<256*256; i++)
92   - loglikelihood[i] = log((double(genuines[i]+1)/totalGenuines)/(double(impostors[i]+1)/totalImpostors));
  94 + for (int i=0; i<256; i++)
  95 + for (int j=0; j<256; j++)
  96 + loglikelihood[i*256+j] = log((double(genuines[i*256+j]+genuines[j*256+i]+1)/totalGenuines)/
  97 + (double(impostors[i*256+j]+impostors[j*256+i]+1)/totalImpostors));
93 98 }
94 99  
95 100 float compare(const Template &a, const Template &b) const
... ...