template struct cvflann::MinkowskiDistance

Overview

#include <dist.h>

template <class T>
struct MinkowskiDistance
{
    // typedefs

    typedef T ElementType;
    typedef True is_kdtree_distance;
    typedef True is_vector_space_distance;
    typedef Accumulator<T>::Type ResultType;

    // fields

    int order;

    // construction

    MinkowskiDistance(int order_);

    // methods

    template <
        typename U,
        typename V
        >
    ResultType
    accum_dist(
        const U& a,
        const V& b,
        int
        ) const;

    template <
        typename Iterator1,
        typename Iterator2
        >
    ResultType
    operator()(
        Iterator1 a,
        Iterator2 b,
        size_t size,
        ResultType worst_dist = -1
        ) const;
};

Detailed Documentation

Methods

template <
    typename U,
    typename V
    >
ResultType
accum_dist(
    const U& a,
    const V& b,
    int
    ) const

Partial distance, used by the kd-tree.

template <
    typename Iterator1,
    typename Iterator2
    >
ResultType
operator()(
    Iterator1 a,
    Iterator2 b,
    size_t size,
    ResultType worst_dist = -1
    ) const

Compute the Minkowsky (L_p) distance between two vectors.

This is highly optimised, with loop unrolling, as it is one of the most expensive inner loops.

The computation of squared root at the end is omitted for efficiency.