Commit 67c3881361766becaf815433be14552456486582
1 parent
9e5df64a
added Eigen versions of L1/L2 distances
Showing
1 changed file
with
40 additions
and
0 deletions
sdk/plugins/eigen3.cpp
| @@ -426,6 +426,46 @@ class LDATransform : public Transform | @@ -426,6 +426,46 @@ class LDATransform : public Transform | ||
| 426 | 426 | ||
| 427 | BR_REGISTER(Transform, LDATransform) | 427 | BR_REGISTER(Transform, LDATransform) |
| 428 | 428 | ||
| 429 | +/*! | ||
| 430 | + * \ingroup distances | ||
| 431 | + * \brief L1 distance computed using eigen. | ||
| 432 | + * \author Josh Klontz \cite jklontz | ||
| 433 | + */ | ||
| 434 | +class L1Distance : public Distance | ||
| 435 | +{ | ||
| 436 | + Q_OBJECT | ||
| 437 | + | ||
| 438 | + float compare(const Template &a, const Template &b) const | ||
| 439 | + { | ||
| 440 | + const int size = a.m().rows * a.m().cols; | ||
| 441 | + Eigen::Map<Eigen::VectorXf> aMap((float*)a.m().data, size); | ||
| 442 | + Eigen::Map<Eigen::VectorXf> bMap((float*)b.m().data, size); | ||
| 443 | + return (aMap-bMap).cwiseAbs().sum(); | ||
| 444 | + } | ||
| 445 | +}; | ||
| 446 | + | ||
| 447 | +BR_REGISTER(Distance, L1Distance) | ||
| 448 | + | ||
| 449 | +/*! | ||
| 450 | + * \ingroup distances | ||
| 451 | + * \brief L2 distance computed using eigen. | ||
| 452 | + * \author Josh Klontz \cite jklontz | ||
| 453 | + */ | ||
| 454 | +class L2Distance : public Distance | ||
| 455 | +{ | ||
| 456 | + Q_OBJECT | ||
| 457 | + | ||
| 458 | + float compare(const Template &a, const Template &b) const | ||
| 459 | + { | ||
| 460 | + const int size = a.m().rows * a.m().cols; | ||
| 461 | + Eigen::Map<Eigen::VectorXf> aMap((float*)a.m().data, size); | ||
| 462 | + Eigen::Map<Eigen::VectorXf> bMap((float*)b.m().data, size); | ||
| 463 | + return (aMap-bMap).squaredNorm(); | ||
| 464 | + } | ||
| 465 | +}; | ||
| 466 | + | ||
| 467 | +BR_REGISTER(Distance, L2Distance) | ||
| 468 | + | ||
| 429 | } // namespace br | 469 | } // namespace br |
| 430 | 470 | ||
| 431 | #include "eigen3.moc" | 471 | #include "eigen3.moc" |