summaryrefslogtreecommitdiffstats
path: root/ml/dlib/dlib/image_keypoint/nearest_neighbor_feature_image.h
diff options
context:
space:
mode:
Diffstat (limited to 'ml/dlib/dlib/image_keypoint/nearest_neighbor_feature_image.h')
-rw-r--r--ml/dlib/dlib/image_keypoint/nearest_neighbor_feature_image.h408
1 files changed, 0 insertions, 408 deletions
diff --git a/ml/dlib/dlib/image_keypoint/nearest_neighbor_feature_image.h b/ml/dlib/dlib/image_keypoint/nearest_neighbor_feature_image.h
deleted file mode 100644
index 2ee45da2f..000000000
--- a/ml/dlib/dlib/image_keypoint/nearest_neighbor_feature_image.h
+++ /dev/null
@@ -1,408 +0,0 @@
-// Copyright (C) 2011 Davis E. King (davis@dlib.net)
-// License: Boost Software License See LICENSE.txt for the full license.
-#ifndef DLIB_NEAREST_NEIGHBOR_FeATURE_IMAGE_Hh_
-#define DLIB_NEAREST_NEIGHBOR_FeATURE_IMAGE_Hh_
-
-#include "nearest_neighbor_feature_image_abstract.h"
-#include <vector>
-#include "../algs.h"
-#include "../matrix.h"
-#include "../statistics.h"
-
-namespace dlib
-{
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename feature_extractor
- >
- class nearest_neighbor_feature_image : noncopyable
- {
- /*!
- INITIAL VALUE
- - nn_feats.size() == 1
-
- CONVENTION
- - nn_feats.size() == 1
-
- !*/
-
- public:
-
- typedef std::vector<std::pair<unsigned int,double> > descriptor_type;
-
- nearest_neighbor_feature_image (
- );
-
- void clear (
- );
-
- void copy_configuration (
- const feature_extractor& item
- );
-
- void copy_configuration (
- const nearest_neighbor_feature_image& item
- );
-
- template <
- typename image_type
- >
- inline void load (
- const image_type& img
- );
-
- inline size_t size (
- ) const;
-
- inline long nr (
- ) const;
-
- inline long nc (
- ) const;
-
- inline long get_num_dimensions (
- ) const;
-
- template <typename vector_type>
- void set_basis (
- const vector_type& new_basis
- );
-
- inline const descriptor_type& operator() (
- long row,
- long col
- ) const;
-
- inline const rectangle get_block_rect (
- long row,
- long col
- ) const;
-
- inline const point image_to_feat_space (
- const point& p
- ) const;
-
- inline const rectangle image_to_feat_space (
- const rectangle& rect
- ) const;
-
- inline const point feat_to_image_space (
- const point& p
- ) const;
-
- inline const rectangle feat_to_image_space (
- const rectangle& rect
- ) const;
-
- template <typename T>
- friend void serialize (
- const nearest_neighbor_feature_image<T>& item,
- std::ostream& out
- );
-
- template <typename T>
- friend void deserialize (
- nearest_neighbor_feature_image<T>& item,
- std::istream& in
- );
-
- private:
-
- array2d<unsigned long> feats;
- feature_extractor fe;
- std::vector<typename feature_extractor::descriptor_type> basis;
-
- // This is a transient variable. It is just here so it doesn't have to be
- // reallocated over and over inside operator()
- mutable descriptor_type nn_feats;
-
- };
-
-// ----------------------------------------------------------------------------------------
-
- template <typename T>
- void serialize (
- const nearest_neighbor_feature_image<T>& item,
- std::ostream& out
- )
- {
- serialize(item.feats, out);
- serialize(item.fe, out);
- serialize(item.basis, out);
- }
-
- template <typename T>
- void deserialize (
- nearest_neighbor_feature_image<T>& item,
- std::istream& in
- )
- {
- deserialize(item.feats, in);
- deserialize(item.fe, in);
- deserialize(item.basis, in);
- }
-
-// ----------------------------------------------------------------------------------------
-// ----------------------------------------------------------------------------------------
-// nearest_neighbor_feature_image member functions
-// ----------------------------------------------------------------------------------------
-// ----------------------------------------------------------------------------------------
-
- template <
- typename feature_extractor
- >
- nearest_neighbor_feature_image<feature_extractor>::
- nearest_neighbor_feature_image (
- )
- {
- nn_feats.resize(1);
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename feature_extractor
- >
- void nearest_neighbor_feature_image<feature_extractor>::
- clear (
- )
- {
- feats.clear();
- fe.clear();
- basis.clear();
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename feature_extractor
- >
- void nearest_neighbor_feature_image<feature_extractor>::
- copy_configuration (
- const feature_extractor& item
- )
- {
- fe.copy_configuration(item);
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename feature_extractor
- >
- void nearest_neighbor_feature_image<feature_extractor>::
- copy_configuration (
- const nearest_neighbor_feature_image& item
- )
- {
- fe.copy_configuration(item.fe);
- basis = item.basis;
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename feature_extractor
- >
- template <
- typename image_type
- >
- void nearest_neighbor_feature_image<feature_extractor>::
- load (
- const image_type& img
- )
- {
- fe.load(img);
-
- feats.set_size(fe.nr(), fe.nc());
-
- // find the nearest neighbor for each feature vector and store the
- // result in feats.
- for (long r = 0; r < feats.nr(); ++r)
- {
- for (long c = 0; c < feats.nc(); ++c)
- {
- const typename feature_extractor::descriptor_type& local_feat = fe(r,c);
-
- double best_dist = std::numeric_limits<double>::infinity();
- unsigned long best_idx = 0;
- for (unsigned long i = 0; i < basis.size(); ++i)
- {
- double dist = length_squared(local_feat - basis[i]);
- if (dist < best_dist)
- {
- best_dist = dist;
- best_idx = i;
- }
- }
-
- feats[r][c] = best_idx;
- }
- }
-
- fe.unload();
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename feature_extractor
- >
- size_t nearest_neighbor_feature_image<feature_extractor>::
- size (
- ) const
- {
- return feats.size();
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename feature_extractor
- >
- long nearest_neighbor_feature_image<feature_extractor>::
- nr (
- ) const
- {
- return feats.nr();
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename feature_extractor
- >
- long nearest_neighbor_feature_image<feature_extractor>::
- nc (
- ) const
- {
- return feats.nc();
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename feature_extractor
- >
- long nearest_neighbor_feature_image<feature_extractor>::
- get_num_dimensions (
- ) const
- {
- return basis.size();
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <typename feature_extractor>
- template <typename vector_type>
- void nearest_neighbor_feature_image<feature_extractor>::
- set_basis (
- const vector_type& new_basis
- )
- {
- basis.assign(new_basis.begin(), new_basis.end());
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename feature_extractor
- >
- const typename nearest_neighbor_feature_image<feature_extractor>::descriptor_type&
- nearest_neighbor_feature_image<feature_extractor>::
- operator() (
- long row,
- long col
- ) const
- {
- // make sure requires clause is not broken
- DLIB_ASSERT(0 <= row && row < nr() &&
- 0 <= col && col < nc(),
- "\t descriptor_type nearest_neighbor_feature_image::operator(row,col)"
- << "\n\t Invalid inputs were given to this function"
- << "\n\t row: " << row
- << "\n\t col: " << col
- << "\n\t nr(): " << nr()
- << "\n\t nc(): " << nc()
- << "\n\t this: " << this
- );
-
- nn_feats[0] = std::make_pair(feats[row][col],1);
- return nn_feats;
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename feature_extractor
- >
- const rectangle nearest_neighbor_feature_image<feature_extractor>::
- get_block_rect (
- long row,
- long col
- ) const
- {
- return fe.get_block_rect(row,col);
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename feature_extractor
- >
- const point nearest_neighbor_feature_image<feature_extractor>::
- image_to_feat_space (
- const point& p
- ) const
- {
- return fe.image_to_feat_space(p);
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename feature_extractor
- >
- const rectangle nearest_neighbor_feature_image<feature_extractor>::
- image_to_feat_space (
- const rectangle& rect
- ) const
- {
- return fe.image_to_feat_space(rect);
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename feature_extractor
- >
- const point nearest_neighbor_feature_image<feature_extractor>::
- feat_to_image_space (
- const point& p
- ) const
- {
- return fe.feat_to_image_space(p);
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename feature_extractor
- >
- const rectangle nearest_neighbor_feature_image<feature_extractor>::
- feat_to_image_space (
- const rectangle& rect
- ) const
- {
- return fe.feat_to_image_space(rect);
- }
-
-// ----------------------------------------------------------------------------------------
-
-}
-
-#endif // DLIB_NEAREST_NEIGHBOR_FeATURE_IMAGE_Hh_
-
-