61 double distance = 0.0;
75 std::vector<Descriptor>& descriptors)
const {
76 bool normalized =
false;
92 : maximum_distance_(
std::numeric_limits<double>::max()) {
99 CHECK_EQ(descriptor1.size(), descriptor2.size());
100 return 1.0 - descriptor1.dot(descriptor2);
105 CHECK_EQ(descriptor1.size(), descriptor2.size());
107 for (
size_t ii = 0; ii < descriptor1.size(); ++ii) {
108 unsigned char d1 =
static_cast<unsigned char>(descriptor1(ii));
109 unsigned char d2 =
static_cast<unsigned char>(descriptor2(ii));
112 return static_cast<double>(sum);
116 std::vector<Descriptor>& descriptors)
const {
117 for (
auto& descriptor : descriptors) {
118 descriptor.normalize();
double GetHammingDistance(const Descriptor &descriptor1, const Descriptor &descriptor2) const
static DistanceMetric & Instance()
void SetMaximumDistance(double maximum_distance)
double operator()(const Descriptor &descriptor1, const Descriptor &descriptor2)
double GetScaledL2Distance(const Descriptor &descriptor1, const Descriptor &descriptor2) const
void SetMetric(const Metric &metric=Metric::SCALED_L2)
bool MaybeNormalizeDescriptors(std::vector< Descriptor > &descriptors) const
void NormalizeDescriptors(std::vector< Descriptor > &descriptors) const
::Eigen::Matrix< double, Eigen::Dynamic, 1 > Descriptor