Commit 9bd0b8c166bdb9993384ad565c0302c1e84f6765

Authored by Scott Klum
1 parent 4f8a2319

Reworked some Turk-related transforms

openbr/plugins/distance.cpp
... ... @@ -396,17 +396,20 @@ BR_REGISTER(Distance, OnlineDistance)
396 396 */
397 397 class AttributeDistance : public Distance
398 398 {
  399 +
399 400 Q_OBJECT
400   - Q_PROPERTY(QString attribute READ get_attribute WRITE set_attribute RESET reset_attribute STORED false)
401   - BR_PROPERTY(QString, attribute, QString())
  401 + Q_PROPERTY(QString targetAttribute READ get_targetAttribute WRITE set_targetAttribute RESET reset_targetAttribute STORED false)
  402 + Q_PROPERTY(QString queryAttribute READ get_queryAttribute WRITE set_queryAttribute RESET reset_queryAttribute STORED false)
  403 + BR_PROPERTY(QString, targetAttribute, QString())
  404 + BR_PROPERTY(QString, queryAttribute, QString())
402 405  
403 406 float compare(const Template &target, const Template &query) const
404 407 {
405   - float queryValue = query.file.get<float>(attribute);
406   - float targetValue = target.file.get<float>(attribute);
  408 + float queryValue = query.file.get<float>(queryAttribute);
  409 + float targetValue = target.file.get<float>(targetAttribute);
407 410  
408 411 // TODO: Set this magic number to something meaningful
409   - float stddev = 1;
  412 + float stddev = .5;
410 413  
411 414 if (queryValue == targetValue) return 1;
412 415 else return 1/(stddev*sqrt(2*CV_PI))*exp(-0.5*pow((targetValue-queryValue)/stddev, 2));
... ... @@ -433,12 +436,14 @@ class SumDistance : public Distance
433 436 futures.addFuture(QtConcurrent::run(distance, &Distance::train, data));
434 437 futures.waitForFinished();
435 438 }
436   -
  439 +;
437 440 float compare(const Template &target, const Template &query) const
438 441 {
439 442 float result = 0;
440 443  
  444 + QList<float> scores;
441 445 foreach (br::Distance *distance, distances) {
  446 + scores.append(distance->compare(target, query));
442 447 result += distance->compare(target, query);
443 448  
444 449 if (result == -std::numeric_limits<float>::max())
... ...
openbr/plugins/template.cpp
... ... @@ -105,7 +105,7 @@ class MTurkTransform : public UntrainableTransform
105 105 Q_PROPERTY(float maxVotes READ get_maxVotes WRITE set_maxVotes RESET reset_maxVotes STORED false)
106 106 BR_PROPERTY(QString, inputVariable, QString())
107 107 BR_PROPERTY(float, maxVotes, 1.)
108   -
  108 +;
109 109 void project(const Template &src, Template &dst) const
110 110 {
111 111 dst = src;
... ... @@ -117,7 +117,8 @@ class MTurkTransform : public UntrainableTransform
117 117 QMapIterator<QString, QVariant> i(map);
118 118 while (i.hasNext()) {
119 119 i.next();
120   - dst.file.set(i.key(), i.value().toFloat(&ok)/maxVotes);
  120 + float value = i.value().toFloat(&ok)/maxVotes;
  121 + dst.file.set(i.key(), value);
121 122 }
122 123 }
123 124 };
... ...