Merge pull request #2669 from Adil-Ibragimov:flann_distance_fix
This commit is contained in:
commit
d05d235c01
@ -595,7 +595,7 @@ struct HellingerDistance
|
|||||||
typedef typename Accumulator<T>::Type ResultType;
|
typedef typename Accumulator<T>::Type ResultType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compute the histogram intersection distance
|
* Compute the Hellinger distance
|
||||||
*/
|
*/
|
||||||
template <typename Iterator1, typename Iterator2>
|
template <typename Iterator1, typename Iterator2>
|
||||||
ResultType operator()(Iterator1 a, Iterator2 b, size_t size, ResultType /*worst_dist*/ = -1) const
|
ResultType operator()(Iterator1 a, Iterator2 b, size_t size, ResultType /*worst_dist*/ = -1) const
|
||||||
@ -628,7 +628,8 @@ struct HellingerDistance
|
|||||||
template <typename U, typename V>
|
template <typename U, typename V>
|
||||||
inline ResultType accum_dist(const U& a, const V& b, int) const
|
inline ResultType accum_dist(const U& a, const V& b, int) const
|
||||||
{
|
{
|
||||||
return sqrt(static_cast<ResultType>(a)) - sqrt(static_cast<ResultType>(b));
|
ResultType diff = sqrt(static_cast<ResultType>(a)) - sqrt(static_cast<ResultType>(b));
|
||||||
|
return diff * diff;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -729,9 +730,11 @@ struct KL_Divergence
|
|||||||
inline ResultType accum_dist(const U& a, const V& b, int) const
|
inline ResultType accum_dist(const U& a, const V& b, int) const
|
||||||
{
|
{
|
||||||
ResultType result = ResultType();
|
ResultType result = ResultType();
|
||||||
ResultType ratio = (ResultType)(a / b);
|
if( *b != 0 ) {
|
||||||
if (ratio>0) {
|
ResultType ratio = (ResultType)(a / b);
|
||||||
result = a * log(ratio);
|
if (ratio>0) {
|
||||||
|
result = a * log(ratio);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user