summaryrefslogtreecommitdiffstats
path: root/ml/dlib/dlib/image_processing/setup_hashed_features_abstract.h
diff options
context:
space:
mode:
Diffstat (limited to 'ml/dlib/dlib/image_processing/setup_hashed_features_abstract.h')
-rw-r--r--ml/dlib/dlib/image_processing/setup_hashed_features_abstract.h210
1 files changed, 210 insertions, 0 deletions
diff --git a/ml/dlib/dlib/image_processing/setup_hashed_features_abstract.h b/ml/dlib/dlib/image_processing/setup_hashed_features_abstract.h
new file mode 100644
index 000000000..886411cd4
--- /dev/null
+++ b/ml/dlib/dlib/image_processing/setup_hashed_features_abstract.h
@@ -0,0 +1,210 @@
+// Copyright (C) 2011 Davis E. King (davis@dlib.net)
+// License: Boost Software License See LICENSE.txt for the full license.
+#undef DLIB_SETUP_HAShED_FEATURES_ABSTRACT_Hh_
+#ifdef DLIB_SETUP_HAShED_FEATURES_ABSTRACT_Hh_
+
+#include "scan_image_pyramid_abstract.h"
+#include "scan_image_boxes_abstract.h"
+#include "../lsh/projection_hash_abstract.h"
+#include "../image_keypoint/hashed_feature_image_abstract.h"
+#include "../image_keypoint/binned_vector_feature_image_abstract.h"
+
+namespace dlib
+{
+
+// ----------------------------------------------------------------------------------------
+
+ class image_hash_construction_failure : public error
+ {
+ /*!
+ WHAT THIS OBJECT REPRESENTS
+ This is the exception object used by the routines in this file.
+ !*/
+ };
+
+// ----------------------------------------------------------------------------------------
+
+ template <
+ typename image_scanner
+ >
+ void use_uniform_feature_weights (
+ image_scanner& scanner
+ );
+ /*!
+ requires
+ - image_scanner should be either scan_image_pyramid or scan_image_boxes and
+ should use the hashed_feature_image as its local feature extractor.
+ ensures
+ - #scanner.get_feature_extractor().uses_uniform_feature_weights() == true
+ (i.e. Make the scanner's feature extractor use the uniform feature weighting
+ scheme)
+ !*/
+
+// ----------------------------------------------------------------------------------------
+
+ template <
+ typename image_scanner
+ >
+ void use_relative_feature_weights (
+ image_scanner& scanner
+ );
+ /*!
+ requires
+ - image_scanner should be either scan_image_pyramid or scan_image_boxes and
+ should use the hashed_feature_image as its local feature extractor.
+ ensures
+ - #scanner.get_feature_extractor().uses_uniform_feature_weights() == false
+ (i.e. Make the scanner's feature extractor use the relative feature weighting
+ scheme)
+ !*/
+
+// ----------------------------------------------------------------------------------------
+
+ template <
+ typename image_array,
+ typename pyramid,
+ typename feature_extractor
+ template <typename fe, typename hash> class feature_image
+ >
+ void setup_hashed_features (
+ scan_image_pyramid<pyramid, feature_image<feature_extractor, projection_hash> >& scanner,
+ const image_array& images,
+ const feature_extractor& fe,
+ int bits,
+ unsigned long num_samples = 200000
+ );
+ /*!
+ requires
+ - 0 < bits <= 32
+ - num_samples > 1
+ - images.size() > 0
+ - it must be valid to pass images[0] into scanner.load().
+ (also, image_array must be an implementation of dlib/array/array_kernel_abstract.h)
+ - feature_image == must be either hashed_feature_image, binned_vector_feature_image,
+ or a type with a compatible interface.
+ ensures
+ - Creates a projection_hash suitable for hashing the feature vectors produced by
+ fe and then configures scanner to use this hash function.
+ - The hash function will map vectors into integers in the range [0, pow(2,bits))
+ - The hash function will be setup so that it hashes a random sample of num_samples
+ vectors from fe such that each bin ends up with roughly the same number of
+ elements in it.
+ throws
+ - image_hash_construction_failure
+ This exception is thrown if there is a problem creating the projection_hash.
+ This should only happen the images are so small they contain less than 2
+ feature vectors.
+ !*/
+
+// ----------------------------------------------------------------------------------------
+
+ template <
+ typename image_array,
+ typename pyramid,
+ typename feature_extractor
+ template <typename fe, typename hash> class feature_image
+ >
+ void setup_hashed_features (
+ scan_image_pyramid<pyramid, feature_image<feature_extractor, projection_hash> >& scanner,
+ const image_array& images,
+ int bits,
+ unsigned long num_samples = 200000
+ );
+ /*!
+ requires
+ - 0 < bits <= 32
+ - num_samples > 1
+ - images.size() > 0
+ - it must be valid to pass images[0] into scanner.load().
+ (also, image_array must be an implementation of dlib/array/array_kernel_abstract.h)
+ - feature_image == must be either hashed_feature_image, binned_vector_feature_image,
+ or a type with a compatible interface.
+ ensures
+ - performs: setup_hashed_features(scanner, images, feature_extractor(), bits, num_samples)
+ throws
+ - image_hash_construction_failure
+ This exception is thrown if there is a problem creating the projection_hash.
+ This should only happen the images are so small they contain less than 2
+ feature vectors.
+ !*/
+
+// ----------------------------------------------------------------------------------------
+// ----------------------------------------------------------------------------------------
+// ----------------------------------------------------------------------------------------
+// ----------------------------------------------------------------------------------------
+
+ template <
+ typename image_array,
+ typename feature_extractor,
+ template <typename fe, typename hash> class feature_image
+ typename box_generator
+ >
+ void setup_hashed_features (
+ scan_image_boxes<feature_image<feature_extractor, projection_hash>,box_generator>& scanner,
+ const image_array& images,
+ const feature_extractor& fe,
+ int bits,
+ unsigned long num_samples = 200000
+ );
+ /*!
+ requires
+ - 0 < bits <= 32
+ - num_samples > 1
+ - images.size() > 0
+ - it must be valid to pass images[0] into scanner.load().
+ (also, image_array must be an implementation of dlib/array/array_kernel_abstract.h)
+ - feature_image == must be either hashed_feature_image, binned_vector_feature_image,
+ or a type with a compatible interface.
+ ensures
+ - Creates a projection_hash suitable for hashing the feature vectors produced by
+ fe and then configures scanner to use this hash function.
+ - The hash function will map vectors into integers in the range [0, pow(2,bits))
+ - The hash function will be setup so that it hashes a random sample of num_samples
+ vectors from fe such that each bin ends up with roughly the same number of
+ elements in it.
+ throws
+ - image_hash_construction_failure
+ This exception is thrown if there is a problem creating the projection_hash.
+ This should only happen the images are so small they contain less than 2
+ feature vectors.
+ !*/
+
+// ----------------------------------------------------------------------------------------
+
+ template <
+ typename image_array,
+ typename feature_extractor,
+ template <typename fe, typename hash> class feature_image
+ typename box_generator
+ >
+ void setup_hashed_features (
+ scan_image_boxes<feature_image<feature_extractor, projection_hash>,box_generator>& scanner,
+ const image_array& images,
+ int bits,
+ unsigned long num_samples = 200000
+ );
+ /*!
+ requires
+ - 0 < bits <= 32
+ - num_samples > 1
+ - images.size() > 0
+ - it must be valid to pass images[0] into scanner.load().
+ (also, image_array must be an implementation of dlib/array/array_kernel_abstract.h)
+ - feature_image == must be either hashed_feature_image, binned_vector_feature_image,
+ or a type with a compatible interface.
+ ensures
+ - performs: setup_hashed_features(scanner, images, feature_extractor(), bits, num_samples)
+ throws
+ - image_hash_construction_failure
+ This exception is thrown if there is a problem creating the projection_hash.
+ This should only happen the images are so small they contain less than 2
+ feature vectors.
+ !*/
+
+// ----------------------------------------------------------------------------------------
+
+}
+
+#endif // DLIB_SETUP_HAShED_FEATURES_ABSTRACT_Hh_
+
+