1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
// Copyright (C) 2010 Davis E. King (davis@dlib.net)
// License: Boost Software License See LICENSE.txt for the full license.
#undef DLIB_MR_FUNCTION_ObJECTS_ABSTRACT_H__
#ifdef DLIB_MR_FUNCTION_ObJECTS_ABSTRACT_H__
#include "../matrix.h"
#include <cmath>
namespace dlib
{
// ----------------------------------------------------------------------------------------
struct squared_euclidean_distance
{
/*!
WHAT THIS OBJECT REPRESENTS
This is a simple function object that computes squared euclidean distance
between two dlib::matrix objects.
!*/
squared_euclidean_distance (
);
/*!
ensures
- #lower == 0
- #upper == std::numeric_limits<double>::infinity()
!*/
squared_euclidean_distance (
const double l,
const double u
);
/*!
ensures
- #lower == l
- #upper == u
!*/
const double lower;
const double upper;
template <typename sample_type>
double operator() (
const sample_type& a,
const sample_type& b
) const;
/*!
requires
- sample_type should be a kind of dlib::matrix
ensures
- let LEN = length_squared(a-b)
- if (lower <= LEN <= upper) then
- returns LEN
- else
- returns std::numeric_limits<double>::infinity()
!*/
};
// ----------------------------------------------------------------------------------------
struct use_weights_of_one
{
/*!
WHAT THIS OBJECT REPRESENTS
This is a simple function object that takes a single argument
and always returns 1
!*/
template <typename edge_type>
double operator() (
const edge_type&
) const;
/*!
ensures
- returns 1
!*/
};
// ----------------------------------------------------------------------------------------
struct use_gaussian_weights
{
/*!
WHAT THIS OBJECT REPRESENTS
This is a simple function object that takes a single argument
which should be an object similar to dlib::sample_pair.
!*/
use_gaussian_weights (
);
/*!
ensures
- #gamma == 0.1
!*/
use_gaussian_weights (
double g
);
/*!
ensures
- #gamma == g
!*/
double gamma;
template <typename edge_type>
double operator() (
const edge_type& e
) const;
/*!
requires
- e.distance() must be a valid expression that returns a number
(e.g. edge_type might be dlib::sample_pair)
ensures
- returns std::exp(-gamma*e.distance());
!*/
};
// ----------------------------------------------------------------------------------------
}
#endif // DLIB_MR_FUNCTION_ObJECTS_ABSTRACT_H__
|