/** * @file HistIntersectDistance.cpp * @brief $\chi^2$ distance measure * @author Erik Rodner * @date 02/19/2008 */ #include #include #include "vislearning/math/distances/HistIntersectDistance.h" using namespace OBJREC; using namespace std; // refactor-nice.pl: check this substitution // old: using namespace ice; using namespace NICE; HistIntersectDistance::HistIntersectDistance() { } HistIntersectDistance::~HistIntersectDistance() { } double HistIntersectDistance::doCalculate (const NICE::Vector & x, const NICE::Vector & y) const { /************************************************* calculate (x,x) is only in seldom cases zero. A idea for normalization would be \sum_i \max{x_i,y_i} - \min{x_i,y_i} which is exactly the L_1 distance **************************************************/ double dist = 0.0; for ( int i = 0 ; i < (int)x.size() ; i++ ) { double u = x[i]; double v = y[i]; assert ( u >= 0 ); assert ( v >= 0 ); if ( u < v ) dist += u; else dist += v; } return - dist; }