summaryrefslogtreecommitdiffstats
path: root/ml/dlib/dlib/image_transforms/image_pyramid_abstract.h
diff options
context:
space:
mode:
Diffstat (limited to 'ml/dlib/dlib/image_transforms/image_pyramid_abstract.h')
-rw-r--r--ml/dlib/dlib/image_transforms/image_pyramid_abstract.h384
1 files changed, 0 insertions, 384 deletions
diff --git a/ml/dlib/dlib/image_transforms/image_pyramid_abstract.h b/ml/dlib/dlib/image_transforms/image_pyramid_abstract.h
deleted file mode 100644
index a61b275fd..000000000
--- a/ml/dlib/dlib/image_transforms/image_pyramid_abstract.h
+++ /dev/null
@@ -1,384 +0,0 @@
-// Copyright (C) 2010 Davis E. King (davis@dlib.net)
-// License: Boost Software License See LICENSE.txt for the full license.
-#undef DLIB_IMAGE_PYRaMID_ABSTRACT_Hh_
-#ifdef DLIB_IMAGE_PYRaMID_ABSTRACT_Hh_
-
-#include "../pixel.h"
-#include "../array2d.h"
-#include "../geometry.h"
-#include "../image_processing/generic_image.h"
-
-namespace dlib
-{
-
- template <
- unsigned int N
- >
- class pyramid_down : noncopyable
- {
- /*!
- REQUIREMENTS ON N
- N > 0
-
- WHAT THIS OBJECT REPRESENTS
- This is a simple functor to help create image pyramids. In particular, it
- downsamples images at a ratio of N to N-1.
-
- Note that setting N to 1 means that this object functions like
- pyramid_disable (defined at the bottom of this file).
-
- WARNING, when mapping rectangles from one layer of a pyramid
- to another you might end up with rectangles which extend slightly
- outside your images. This is because points on the border of an
- image at a higher pyramid layer might correspond to points outside
- images at lower layers. So just keep this in mind. Note also
- that it's easy to deal with. Just say something like this:
- rect = rect.intersect(get_rect(my_image)); // keep rect inside my_image
- !*/
- public:
-
- template <
- typename in_image_type,
- typename out_image_type
- >
- void operator() (
- const in_image_type& original,
- out_image_type& down
- ) const;
- /*!
- requires
- - is_same_object(original, down) == false
- - in_image_type == an image object that implements the interface defined in
- dlib/image_processing/generic_image.h
- - out_image_type == an image object that implements the interface defined in
- dlib/image_processing/generic_image.h
- - for both pixel types P in the input and output images, we require:
- - pixel_traits<P>::has_alpha == false
- ensures
- - #down will contain an image that is roughly (N-1)/N times the size of the
- original image.
- - If both input and output images contain RGB pixels then the downsampled image will
- be in color. Otherwise, the downsampling will be performed in a grayscale mode.
- - The location of a point P in original image will show up at point point_down(P)
- in the #down image.
- - Note that some points on the border of the original image might correspond to
- points outside the #down image.
- !*/
-
- template <
- typename image_type
- >
- void operator() (
- image_type& img
- ) const;
- /*!
- requires
- - image_type == an image object that implements the interface defined in
- dlib/image_processing/generic_image.h
- - pixel_traits<typename image_traits<image_type>::pixel_type>::has_alpha == false
- ensures
- - This function downsamples the given image and stores the results in #img.
- In particular, it is equivalent to performing:
- (*this)(img, temp);
- swap(img, temp);
- !*/
-
- // -------------------------------
-
- template <typename T>
- vector<double,2> point_down (
- const vector<T,2>& p
- ) const;
- /*!
- ensures
- - interprets p as a point in a parent image and returns the
- point in a downsampled image which corresponds to p.
- - This function is the inverse of point_up(). I.e. for a point P:
- point_down(point_up(P)) == P
- !*/
-
- template <typename T>
- vector<double,2> point_up (
- const vector<T,2>& p
- ) const;
- /*!
- ensures
- - interprets p as a point in a downsampled image and returns the
- point in a parent image which corresponds to p.
- - This function is the inverse of point_down(). I.e. for a point P:
- point_up(point_down(P)) == P
- !*/
-
- drectangle rect_down (
- const drectangle& rect
- ) const;
- /*!
- ensures
- - returns drectangle(point_down(rect.tl_corner()), point_down(rect.br_corner()));
- (i.e. maps rect into a downsampled)
- !*/
-
- drectangle rect_up (
- const drectangle& rect
- ) const;
- /*!
- ensures
- - returns drectangle(point_up(rect.tl_corner()), point_up(rect.br_corner()));
- (i.e. maps rect into a parent image)
- !*/
-
- // -------------------------------
-
- template <typename T>
- vector<double,2> point_down (
- const vector<T,2>& p,
- unsigned int levels
- ) const;
- /*!
- ensures
- - applies point_down() to p levels times and returns the result.
- (i.e. point_down(p,2) == point_down(point_down(p)),
- point_down(p,1) == point_down(p),
- point_down(p,0) == p, etc. )
- !*/
-
- template <typename T>
- vector<double,2> point_up (
- const vector<T,2>& p,
- unsigned int levels
- ) const;
- /*!
- ensures
- - applies point_up() to p levels times and returns the result.
- (i.e. point_up(p,2) == point_up(point_up(p)),
- point_up(p,1) == point_up(p),
- point_up(p,0) == p, etc. )
- !*/
-
- drectangle rect_down (
- const drectangle& rect,
- unsigned int levels
- ) const;
- /*!
- ensures
- - returns drectangle(point_down(rect.tl_corner(),levels), point_down(rect.br_corner(),levels));
- (i.e. Basically applies rect_down() to rect levels times and returns the result.)
- !*/
-
- drectangle rect_up (
- const drectangle& rect,
- unsigned int levels
- ) const;
- /*!
- ensures
- - returns drectangle(point_up(rect.tl_corner(),levels), point_up(rect.br_corner(),levels));
- (i.e. Basically applies rect_up() to rect levels times and returns the result.)
- !*/
-
- };
-
-// ----------------------------------------------------------------------------------------
-
- class pyramid_disable : noncopyable
- {
- /*!
- WHAT THIS OBJECT REPRESENTS
- This is a function object with an interface identical to pyramid_down (defined
- at the top of this file) except that it downsamples images at a ratio of infinity
- to 1. That means it always outputs images of size 0 regardless of the size
- of the inputs.
-
- This is useful because it can be supplied to routines which take a pyramid_down
- function object and it will essentially disable pyramid processing. This way,
- a pyramid oriented function can be turned into a regular routine which processes
- just the original undownsampled image.
- !*/
- };
-
-// ----------------------------------------------------------------------------------------
-
- template <
- unsigned int N
- >
- double pyramid_rate(
- const pyramid_down<N>& pyr
- );
- /*!
- ensures
- - returns (N-1.0)/N
- !*/
-
-// ----------------------------------------------------------------------------------------
-
- template <
- unsigned int N
- >
- void find_pyramid_down_output_image_size(
- const pyramid_down<N>& pyr,
- long& nr,
- long& nc
- );
- /*!
- requires
- - nr >= 0
- - nc >= 0
- ensures
- - If pyr() were called on an image with nr by nc rows and columns, what would
- be the size of the output image? This function finds the size of the output
- image and stores it back into #nr and #nc.
- !*/
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename pyramid_type,
- typename image_type1,
- typename image_type2
- >
- void create_tiled_pyramid (
- const image_type1& img,
- image_type2& out_img,
- std::vector<rectangle>& rects,
- const unsigned long padding = 10,
- const unsigned long outer_padding = 0
- );
- /*!
- requires
- - pyramid_type == one of the dlib::pyramid_down template instances defined above.
- - is_same_object(img, out_img) == false
- - image_type1 == an image object that implements the interface defined in
- dlib/image_processing/generic_image.h
- - image_type2 == an image object that implements the interface defined in
- dlib/image_processing/generic_image.h
- - for both pixel types P in the input and output images, we require:
- - pixel_traits<P>::has_alpha == false
- ensures
- - Creates an image pyramid from the input image img. The pyramid is made using
- pyramid_type. The highest resolution image is img and then all further
- pyramid levels are generated from pyramid_type's downsampling. The entire
- resulting pyramid is packed into a single image and stored in out_img.
- - When packing pyramid levels into out_img, there will be padding pixels of
- space between each sub-image. There will also be outer_padding pixels of
- padding around the edge of the image. All padding pixels have a value of 0.
- - The resulting pyramid will be composed of #rects.size() images packed into
- out_img. Moreover, #rects[i] is the location inside out_img of the i-th
- pyramid level.
- - #rects.size() > 0
- - #rects[0] == get_rect(img). I.e. the first rectangle is the highest
- resolution pyramid layer. Subsequent elements of #rects correspond to
- smaller and smaller pyramid layers inside out_img.
- !*/
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename pyramid_type
- >
- dpoint image_to_tiled_pyramid (
- const std::vector<rectangle>& rects,
- double scale,
- dpoint p
- );
- /*!
- requires
- - pyramid_type == one of the dlib::pyramid_down template instances defined above.
- - 0 < scale <= 1
- - rects.size() > 0
- ensures
- - The function create_tiled_pyramid() converts an image, img, to a "tiled
- pyramid" called out_img. It also outputs a vector of rectangles, rect, that
- show where each pyramid layer appears in out_img. Therefore,
- image_to_tiled_pyramid() allows you to map from coordinates in img (i.e. p)
- to coordinates in the tiled pyramid out_img, when given the rects metadata.
-
- So given a point p in img, you can ask, what coordinate in out_img
- corresponds to img[p.y()][p.x()] when things are scale times smaller? This
- new coordinate is a location in out_img and is what is returned by this
- function.
- - A scale of 1 means we don't move anywhere in the pyramid scale space relative
- to the input image while smaller values of scale mean we move down the
- pyramid.
- - Assumes pyramid_type is the pyramid class used to produce the tiled image.
- !*/
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename pyramid_type
- >
- drectangle image_to_tiled_pyramid (
- const std::vector<rectangle>& rects,
- double scale,
- drectangle r
- );
- /*!
- requires
- - pyramid_type == one of the dlib::pyramid_down template instances defined above.
- - 0 < scale <= 1
- - rects.size() > 0
- ensures
- - This function maps from input image space to tiled pyramid coordinate space
- just as the above image_to_tiled_pyramid() does, except it operates on
- rectangle objects instead of points.
- - Assumes pyramid_type is the pyramid class used to produce the tiled image.
- !*/
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename pyramid_type
- >
- dpoint tiled_pyramid_to_image (
- const std::vector<rectangle>& rects,
- dpoint p
- );
- /*!
- requires
- - pyramid_type == one of the dlib::pyramid_down template instances defined above.
- - rects.size() > 0
- ensures
- - This function maps from a coordinate in a tiled pyramid to the corresponding
- input image coordinate. Therefore, it is essentially the inverse of
- image_to_tiled_pyramid().
- - It should be noted that this function isn't always an inverse of
- image_to_tiled_pyramid(). This is because you can ask
- image_to_tiled_pyramid() for the coordinates of points outside the input
- image and they will be mapped to somewhere that doesn't have an inverse. But
- for points actually inside the image this function performs an approximate
- inverse mapping.
- - Assumes pyramid_type is the pyramid class used to produce the tiled image.
- !*/
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename pyramid_type
- >
- drectangle tiled_pyramid_to_image (
- const std::vector<rectangle>& rects,
- drectangle r
- );
- /*!
- requires
- - pyramid_type == one of the dlib::pyramid_down template instances defined above.
- - rects.size() > 0
- ensures
- - This function maps from a coordinate in a tiled pyramid to the corresponding
- input image coordinate. Therefore, it is essentially the inverse of
- image_to_tiled_pyramid().
- - It should be noted that this function isn't always an inverse of
- image_to_tiled_pyramid(). This is because you can ask
- image_to_tiled_pyramid() for the coordinates of points outside the input
- image and they will be mapped to somewhere that doesn't have an inverse. But
- for points actually inside the image this function performs an approximate
- inverse mapping.
- - Assumes pyramid_type is the pyramid class used to produce the tiled image.
- !*/
-
-// ----------------------------------------------------------------------------------------
-
-}
-
-#endif // DLIB_IMAGE_PYRaMID_ABSTRACT_Hh_
-
-