summaryrefslogtreecommitdiffstats
path: root/ml/dlib/docs/docs/imaging.xml
diff options
context:
space:
mode:
Diffstat (limited to 'ml/dlib/docs/docs/imaging.xml')
-rw-r--r--ml/dlib/docs/docs/imaging.xml2608
1 files changed, 2608 insertions, 0 deletions
diff --git a/ml/dlib/docs/docs/imaging.xml b/ml/dlib/docs/docs/imaging.xml
new file mode 100644
index 000000000..2fef49e73
--- /dev/null
+++ b/ml/dlib/docs/docs/imaging.xml
@@ -0,0 +1,2608 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?>
+
+<doc>
+ <title>Image Processing</title>
+
+ <!-- ************************************************************************* -->
+
+ <body>
+
+ <p>
+ This page documents the functionality present in this library that deals with the
+ management and manipulation of images. One thing to note is that there is no
+ explicit image object. Instead, everything deals with <a href="containers.html#array2d">
+ array2d</a> objects that contain various kinds of pixels or user defined <a href="dlib/image_processing/generic_image.h.html">
+ generic image</a> objects.
+ </p>
+
+
+ <p>
+ <h2>Pixel Types</h2>
+ Most image handling routines in dlib will accept images containing any pixel type.
+ This is made possible by defining a traits class, <a href="#pixel_traits">pixel_traits</a>, for
+ each possible pixel type. This traits class enables image processing routines to determine
+ how to handle each kind of pixel and therefore only pixels which have a pixel_traits definition
+ may be used. The following list defines all the pixel types which come with pixel_traits definitions.
+ <ul>
+ <li><b>RGB</b>
+ <ul> There are two RGB pixel types in dlib, <a href="#rgb_pixel">rgb_pixel</a> and <a href="#bgr_pixel">bgr_pixel</a>.
+ Each defines a 24bit RGB pixel type. The bgr_pixel is identical to rgb_pixel except that it lays
+ the color channels down in memory in BGR order rather than RGB order and is therefore useful
+ for interfacing with other image processing tools which expect this format (e.g. <a href="#cv_image">OpenCV</a>). </ul>
+ </li>
+ <li><b>RGB Alpha</b>
+ <ul>The <a href="#rgb_alpha_pixel">rgb_alpha_pixel</a> is an 8bit per channel RGB pixel with an 8bit alpha channel.</ul>
+ </li>
+ <li><b>HSI</b>
+ <ul>The <a href="#hsi_pixel">hsi_pixel</a> is a 24bit pixel which represents a point in the Hue Saturation Intensity
+ (HSI) color space. </ul>
+ </li>
+ <li><b>LAB</b>
+ <ul>The <a href="#lab_pixel">lab_pixel</a> is a 24bit pixel which represents a point in the CIELab color space. </ul>
+ </li>
+ <li><b>Grayscale</b>
+ <ul>Any built in scalar type may be used as a grayscale pixel type. For example, unsigned char, int, double, etc.</ul>
+ </li>
+ </ul>
+ </p>
+
+ <p>
+ <h2>Object Detection</h2>
+ If you want to create object detectors then try the
+ <a href="#scan_fhog_pyramid">scan_fhog_pyramid</a> tool first. It is quite
+ easy to use and train and will, in many cases, give excellent results. If that
+ doesn't give good results then try the more powerful
+ <a href="ml.html#loss_mmod_">convolutional neural network</a> based detector.
+ </p>
+
+ </body>
+
+ <!-- ************************************************************************* -->
+
+ <menu width="150">
+ <top>
+
+ <section>
+ <name>Pixels</name>
+ <item>rgb_pixel</item>
+ <item>bgr_pixel</item>
+ <item>rgb_alpha_pixel</item>
+ <item>hsi_pixel</item>
+ <item>lab_pixel</item>
+ <item>pixel_traits</item>
+ <item>get_pixel_intensity</item>
+ <item>assign_pixel</item>
+ <item>assign_pixel_intensity</item>
+ </section>
+
+ <section>
+ <name>Image I/O</name>
+ <item>jpeg_loader</item>
+ <item>load_bmp</item>
+ <item>load_dng</item>
+ <item>load_image</item>
+ <item>load_jpeg</item>
+ <item>load_png</item>
+ <item>png_loader</item>
+ <item>save_bmp</item>
+ <item>save_dng</item>
+ <item>save_png</item>
+ <item>save_jpeg</item>
+ </section>
+
+ <section>
+ <name>Object Detection</name>
+ <item>get_frontal_face_detector</item>
+ <item>object_detector</item>
+ <item>evaluate_detectors</item>
+ <item>full_object_detection</item>
+ <item>mmod_rect</item>
+ <item>scan_image</item>
+ <item>scan_image_movable_parts</item>
+ <item>find_points_above_thresh</item>
+ <item>scan_image_pyramid</item>
+ <item>scan_image_boxes</item>
+ <item>scan_fhog_pyramid</item>
+ <item>scan_image_custom</item>
+ <item>find_candidate_object_locations</item>
+ <item>test_box_overlap</item>
+ <item>remove_unobtainable_rectangles</item>
+ <item>setup_hashed_features</item>
+ <item>correlation_tracker</item>
+ <item nolink="true">
+ <name>Scan Image Pyramid Tools</name>
+ <sub>
+ <item>compute_box_dimensions</item>
+ <item>create_single_box_detection_template</item>
+ <item>create_overlapped_2x2_detection_template</item>
+ <item>create_grid_detection_template</item>
+
+ <item>determine_object_boxes</item>
+ <item>setup_grid_detection_templates</item>
+ <item>setup_grid_detection_templates_verbose</item>
+ </sub>
+ </item>
+ </section>
+
+ <section>
+ <name>Feature Extraction</name>
+ <item>get_surf_points</item>
+ <item>shape_predictor</item>
+ <item nolink="true">
+ <name>SURF Tools</name>
+ <sub>
+ <item>hessian_pyramid</item>
+ <item>compute_surf_descriptor</item>
+ <item>haar_x</item>
+ <item>haar_y</item>
+ <item>get_interest_points</item>
+ <item>interest_point</item>
+ <item>surf_point</item>
+ <item>compute_dominant_angle</item>
+ <item>draw_surf_points</item>
+ </sub>
+ </item>
+
+ <item>hog_image</item>
+ <item>extract_fhog_features</item>
+ <item>fine_hog_image</item>
+ <item>poly_image</item>
+ <item>hashed_feature_image</item>
+ <item>binned_vector_feature_image</item>
+ <item>nearest_neighbor_feature_image</item>
+ <item>randomly_sample_image_features</item>
+
+ <item>make_uniform_lbp_image</item>
+ <item>extract_histogram_descriptors</item>
+ <item>extract_uniform_lbp_descriptors</item>
+ <item>extract_highdim_face_lbp_descriptors</item>
+ </section>
+
+
+ <section>
+ <name>Edges and Thresholds</name>
+ <item>edge_orientation</item>
+ <item>hysteresis_threshold</item>
+ <item>sobel_edge_detector</item>
+ <item>suppress_non_maximum_edges</item>
+ <item>threshold_image</item>
+ <item>auto_threshold_image</item>
+ <item>hough_transform</item>
+ </section>
+
+ <section>
+ <name>Morphology</name>
+ <item>label_connected_blobs</item>
+ <item>segment_image</item>
+ <item>binary_dilation</item>
+ <item>binary_erosion</item>
+ <item>binary_open</item>
+ <item>binary_close</item>
+ <item>binary_intersection</item>
+ <item>binary_union</item>
+ <item>binary_difference</item>
+ <item>binary_complement</item>
+ <item>skeleton</item>
+ </section>
+
+ <section>
+ <name>Filtering</name>
+ <item>gaussian_blur</item>
+ <item>spatially_filter_image</item>
+ <item>spatially_filter_image_separable</item>
+ <item>float_spatially_filter_image_separable</item>
+ <item>separable_3x3_filter_block_grayscale</item>
+ <item>separable_3x3_filter_block_rgb</item>
+ <item>sum_filter</item>
+ <item>sum_filter_assign</item>
+ <item>max_filter</item>
+ <item>spatially_filter_image_separable_down</item>
+ </section>
+
+ <section>
+ <name>Scaling and Rotating</name>
+ <item>pyramid_up</item>
+ <item>pyramid_down</item>
+ <item>pyramid_disable</item>
+ <item>create_tiled_pyramid</item>
+
+ <item>interpolate_nearest_neighbor</item>
+ <item>interpolate_bilinear</item>
+ <item>interpolate_quadratic</item>
+ <item>transform_image</item>
+ <item>rotate_image</item>
+ <item>resize_image</item>
+ <item>flip_image_left_right</item>
+ <item>flip_image_up_down</item>
+ <item>add_image_left_right_flips</item>
+ <item>add_image_rotations</item>
+ <item>upsample_image_dataset</item>
+ <item>flip_image_dataset_left_right</item>
+ <item>rotate_image_dataset</item>
+ <item>extract_image_chips</item>
+ <item>random_cropper</item>
+ <item>jitter_image</item>
+ <item>sub_image</item>
+ </section>
+
+ <section>
+ <name>Visualization</name>
+ <item>randomly_color_image</item>
+ <item>heatmap</item>
+ <item>jet</item>
+ <item>render_face_detections</item>
+ <item>draw_line</item>
+ <item>draw_solid_circle</item>
+ <item>draw_surf_points</item>
+ <item>draw_rectangle</item>
+ <item>tile_images</item>
+ <item>draw_fhog</item>
+ <item>fill_rect</item>
+ </section>
+
+ <section>
+ <name>Miscellaneous</name>
+ <item>cv_image</item>
+ <item>toMat</item>
+ <item>assign_image</item>
+ <item>assign_image_scaled</item>
+ <item>assign_all_pixels</item>
+ <item>assign_border_pixels</item>
+ <item>equalize_histogram</item>
+ <item>get_histogram</item>
+ <item>zero_border_pixels</item>
+ <item>integral_image</item>
+ <item>integral_image_generic</item>
+ <item>disturb_colors</item>
+ <item>random_color_transform</item>
+
+ </section>
+
+ </top>
+ </menu>
+
+ <!-- ************************************************************************* -->
+ <!-- ************************************************************************* -->
+ <!-- ************************************************************************* -->
+
+ <components>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>hough_transform</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/hough_transform_abstract.h</spec_file>
+ <description>
+ This object is a tool for computing the line finding version of
+ the Hough transform given some kind of edge detection image as
+ input. It also allows the edge pixels to be weighted such that
+ higher weighted edge pixels contribute correspondingly more to
+ the output of the Hough transform, allowing stronger edges to
+ create correspondingly stronger line detections in the final
+ Hough transform.
+ </description>
+ <examples>
+ <example>hough_transform_ex.cpp.html</example>
+ </examples>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>skeleton</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/morphological_operations_abstract.h</spec_file>
+ <description>
+ This function computes the skeletonization of an image. That is,
+ given a binary image, we progressively thin the binary blobs
+ until only a single pixel wide skeleton of the original blobs
+ remains.
+ </description>
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>disturb_colors</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/random_color_transform_abstract.h</spec_file>
+ <description>
+ Applies a random color transform an image. This is done by
+ creating a <a href="#random_color_transform">random_color_transform</a> with the given parameters and then
+ transforming each pixel in the image with the resulting transform.
+ </description>
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>random_color_transform</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/random_color_transform_abstract.h</spec_file>
+ <description>
+ This object generates a random color balancing and gamma correction
+ transform. It then allows you to apply that specific transform to as many
+ <a href="#rgb_pixel">rgb_pixel</a> objects as you like.
+ </description>
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>integral_image_generic</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/integral_image_abstract.h</spec_file>
+ <description>
+ This object is an alternate way of representing image data
+ that allows for very fast computations of sums of pixels in
+ rectangular regions. To use this object you load it with a
+ normal image and then you can use the get_sum_of_area()
+ member function to compute sums of pixels in a given area in
+ constant time.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>integral_image</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file>dlib/image_transforms/integral_image_abstract.h</spec_file>
+ <description>
+ This is a specialization of the <a href="#integral_image_generic">integral_image_generic</a>
+ template for the case where sums of pixel values should be represented with
+ longs. E.g. if you use 8bit pixels in your original images then this is
+ the appropriate kind of integral image to use with them.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>haar_x</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/integral_image_abstract.h</spec_file>
+ <description>
+ This is a function that operates on an <a href="#integral_image">integral_image</a>
+ and allows you to compute the response of a Haar wavelet oriented along
+ the X axis.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>haar_y</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/integral_image_abstract.h</spec_file>
+ <description>
+ This is a function that operates on an <a href="#integral_image">integral_image</a>
+ and allows you to compute the response of a Haar wavelet oriented along
+ the Y axis.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>draw_surf_points</name>
+ <file>dlib/image_keypoint/draw_surf_points.h</file>
+ <spec_file link="true">dlib/image_keypoint/draw_surf_points_abstract.h</spec_file>
+ <description>
+ This routine adds a bunch of <a href="#surf_point">surf_point</a> objects onto
+ an <a href="dlib/gui_widgets/widgets_abstract.h.html#image_window">image_window</a>
+ object so they can be visualized.
+ </description>
+ <examples>
+ <example>surf_ex.cpp.html</example>
+ </examples>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>compute_dominant_angle</name>
+ <file>dlib/image_keypoint.h</file>
+ <spec_file link="true">dlib/image_keypoint/surf_abstract.h</spec_file>
+ <description>
+ Computes and returns the dominant angle (i.e. the angle of the dominant gradient)
+ at a given point and scale in an image. This function is part of the
+ main processing of the SURF algorithm.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>get_surf_points</name>
+ <file>dlib/image_keypoint.h</file>
+ <spec_file link="true">dlib/image_keypoint/surf_abstract.h</spec_file>
+ <description>
+ This function runs the complete SURF algorithm on an input image and
+ returns the points it found. For a description of what exactly
+ the SURF algorithm does you should read the following paper:
+ <blockquote>
+ SURF: Speeded Up Robust Features
+ By Herbert Bay, Tinne Tuytelaars, and Luc Van Gool
+ </blockquote>
+ <p>
+ Also note that there are numerous flavors of the SURF algorithm
+ you can put together using the functions in dlib. The get_surf_points()
+ function is just an example of one way you might do so.
+ </p>
+ </description>
+ <examples>
+ <example>surf_ex.cpp.html</example>
+ </examples>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>shape_predictor</name>
+ <file>dlib/image_processing.h</file>
+ <spec_file link="true">dlib/image_processing/shape_predictor_abstract.h</spec_file>
+ <description>
+ This object is a tool that takes in an image region containing some object
+ and outputs a set of point locations that define the pose of the
+ object. The classic example of this is human face pose prediction, where
+ you take an image of a human face as input and are expected to identify the
+ locations of important facial landmarks such as the corners of the mouth
+ and eyes, tip of the nose, and so forth. For example, here is the output
+ of dlib's <a href="face_landmark_detection_ex.cpp.html">68-face-landmark shape_predictor</a> on an image from the HELEN dataset: <br/><br/>
+
+ <img src='face_landmarking_example.png'/>
+ <br/><br/>
+
+ To create useful instantiations of this object you need to use the
+ <a href="ml.html#shape_predictor_trainer">shape_predictor_trainer</a> object to train a
+ shape_predictor using a set of training images, each annotated with shapes you want to predict.
+ To do this, the shape_predictor_trainer uses the state-of-the-art method from the
+ paper:
+ <blockquote>
+ One Millisecond Face Alignment with an Ensemble of Regression Trees
+ by Vahid Kazemi and Josephine Sullivan, CVPR 2014
+ </blockquote>
+ </description>
+ <examples>
+ <example>face_landmark_detection_ex.cpp.html</example>
+ <example>train_shape_predictor_ex.cpp.html</example>
+ <example>webcam_face_pose_ex.cpp.html</example>
+
+ <example>train_shape_predictor.py.html</example>
+ <example>face_landmark_detection.py.html</example>
+ <example>face_alignment.py.html</example>
+ </examples>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>compute_surf_descriptor</name>
+ <file>dlib/image_keypoint.h</file>
+ <spec_file link="true">dlib/image_keypoint/surf_abstract.h</spec_file>
+ <description>
+ Computes the 64 dimensional SURF descriptor vector of a box centered
+ at a given center point, tilted at a given angle, and sized according to
+ a given scale.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>hog_image</name>
+ <file>dlib/image_keypoint.h</file>
+ <spec_file link="true">dlib/image_keypoint/hog_abstract.h</spec_file>
+ <description>
+ This object is a tool for performing the image feature extraction algorithm
+ described in the following paper:
+ <blockquote>
+ Histograms of Oriented Gradients for Human Detection
+ by Navneet Dalal and Bill Triggs
+ </blockquote>
+ </description>
+ <examples>
+ <example>object_detector_ex.cpp.html</example>
+ <example>train_object_detector.cpp.html</example>
+ </examples>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>extract_fhog_features</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/fhog_abstract.h</spec_file>
+ <description>
+ This function implements the HOG feature extraction method described in
+ the paper:
+ <blockquote>
+ Object Detection with Discriminatively Trained Part Based Models by
+ P. Felzenszwalb, R. Girshick, D. McAllester, D. Ramanan
+ in IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 32, No. 9, Sep. 2010
+ </blockquote>
+ This means that it takes an input image and outputs Felzenszwalb's
+ 31 dimensional version of HOG features.
+ </description>
+ <examples>
+ <example>fhog_ex.cpp.html</example>
+ </examples>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>fine_hog_image</name>
+ <file>dlib/image_keypoint.h</file>
+ <spec_file link="true">dlib/image_keypoint/fine_hog_image_abstract.h</spec_file>
+ <description>
+ This object is a version of the <a href="#hog_image">hog_image</a> that
+ allows you to extract HOG features at a finer resolution.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>poly_image</name>
+ <file>dlib/image_keypoint.h</file>
+ <spec_file link="true">dlib/image_keypoint/poly_image_abstract.h</spec_file>
+ <description>
+ This object is a tool for extracting local feature descriptors from an image.
+ In particular, it fits polynomials to local pixel patches and
+ allows you to query the coefficients of these polynomials.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>hashed_feature_image</name>
+ <file>dlib/image_keypoint.h</file>
+ <spec_file link="true">dlib/image_keypoint/hashed_feature_image_abstract.h</spec_file>
+ <description>
+ This object is a tool for performing image feature extraction. In
+ particular, it wraps another image feature extractor and converts
+ the wrapped image feature vectors into sparse indicator vectors. It does
+ this by hashing each feature vector and then returns a new vector
+ which is zero everywhere except for the position determined by the
+ hash.
+
+ <br/><br/>
+ The following feature extractors can be wrapped by the hashed_feature_image:
+ <ul style="margin-top:0em">
+ <li><a href="#hog_image">hog_image</a></li>
+ <li><a href="#fine_hog_image">fine_hog_image</a></li>
+ <li><a href="#poly_image">poly_image</a></li>
+ </ul>
+ </description>
+ <examples>
+ <example>object_detector_ex.cpp.html</example>
+ <example>train_object_detector.cpp.html</example>
+ </examples>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>binned_vector_feature_image</name>
+ <file>dlib/image_keypoint.h</file>
+ <spec_file link="true">dlib/image_keypoint/binned_vector_feature_image_abstract.h</spec_file>
+ <description>
+ This object is a tool for performing image feature extraction. In
+ particular, it wraps another image feature extractor and converts the
+ wrapped image feature vectors into a high dimensional sparse vector. For
+ example, if the lower level feature extractor outputs the vector [3,4,5]
+ and this vector is hashed into the second bin of four bins then the output
+ sparse vector is:
+ <blockquote>
+ [0,0,0,0, 3,4,5,1, 0,0,0,0, 0,0,0,0].
+ </blockquote>
+ That is, the output vector has a dimensionality that is equal to the number
+ of hash bins times the dimensionality of the lower level vector plus one.
+ The value in the extra dimension concatenated onto the end of the vector is
+ always a constant value of of 1 and serves as a bias value. This means
+ that, if there are N hash bins, these vectors are capable of representing N
+ different linear functions, each operating on the vectors that fall into
+ their corresponding hash bin.
+
+ <br/><br/>
+ The following feature extractors can be wrapped by the binned_vector_feature_image:
+ <ul style="margin-top:0em">
+ <li><a href="#hog_image">hog_image</a></li>
+ <li><a href="#fine_hog_image">fine_hog_image</a></li>
+ <li><a href="#poly_image">poly_image</a></li>
+ </ul>
+ </description>
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>nearest_neighbor_feature_image</name>
+ <file>dlib/image_keypoint.h</file>
+ <spec_file link="true">dlib/image_keypoint/nearest_neighbor_feature_image_abstract.h</spec_file>
+ <description>
+ This object is a tool for performing image feature extraction. In
+ particular, it wraps another image feature extractor and converts
+ the wrapped image feature vectors into sparse indicator vectors. It does
+ this by finding the nearest neighbor for each feature vector and returning an
+ indicator vector that is zero everywhere except for the position indicated by
+ the nearest neighbor.
+
+ <br/><br/>
+ The following feature extractors can be wrapped by the nearest_neighbor_feature_image:
+ <ul style="margin-top:0em">
+ <li><a href="#hog_image">hog_image</a></li>
+ <li><a href="#fine_hog_image">fine_hog_image</a></li>
+ <li><a href="#poly_image">poly_image</a></li>
+ </ul>
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>hessian_pyramid</name>
+ <file>dlib/image_keypoint.h</file>
+ <spec_file link="true">dlib/image_keypoint/hessian_pyramid_abstract.h</spec_file>
+ <description>
+ This object represents an image pyramid where each level in the
+ pyramid holds determinants of Hessian matrices for the original
+ input image. This object can be used to find stable interest
+ points in an image.
+
+ <br/><br/>
+ This object is an implementation of the fast Hessian pyramid
+ as described in the paper:
+ <blockquote>
+ SURF: Speeded Up Robust Features
+ By Herbert Bay, Tinne Tuytelaars, and Luc Van Gool
+ </blockquote>
+
+ This implementation was also influenced by the very well documented
+ OpenSURF library and its corresponding description of how the fast
+ Hessian algorithm functions:
+ <blockquote>Notes on the OpenSURF Library by Christopher Evans</blockquote>
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>get_interest_points</name>
+ <file>dlib/image_keypoint.h</file>
+ <spec_file link="true">dlib/image_keypoint/hessian_pyramid_abstract.h</spec_file>
+ <description>
+ This function extracts interest points from a <a href="#hessian_pyramid">hessian_pyramid</a>.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>interest_point</name>
+ <file>dlib/image_keypoint.h</file>
+ <spec_file link="true">dlib/image_keypoint/hessian_pyramid_abstract.h</spec_file>
+ <description>
+ This is a simple struct used to represent the interest points returned
+ by the <a href="#get_interest_points">get_interest_points</a> function.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>surf_point</name>
+ <file>dlib/image_keypoint.h</file>
+ <spec_file link="true">dlib/image_keypoint/surf_abstract.h</spec_file>
+ <description>
+ This is a simple struct used to represent the SURF points returned
+ by the <a href="#get_surf_points">get_surf_points</a> function.
+ </description>
+ <examples>
+ <example>surf_ex.cpp.html</example>
+ </examples>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>pixel_traits</name>
+ <file>dlib/pixel.h</file>
+ <spec_file>dlib/pixel.h</spec_file>
+ <description>
+ As the name implies, this is a traits class for pixel types. It allows you
+ to determine what sort of pixel type you are dealing with.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>hsi_pixel</name>
+ <file>dlib/pixel.h</file>
+ <spec_file link="true">dlib/pixel.h</spec_file>
+ <description>
+ This is a simple struct that represents a HSI colored graphical pixel.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>lab_pixel</name>
+ <file>dlib/pixel.h</file>
+ <spec_file link="true">dlib/pixel.h</spec_file>
+ <description>
+ This is a simple struct that represents a CIELab colored graphical pixel.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>rgb_alpha_pixel</name>
+ <file>dlib/pixel.h</file>
+ <spec_file link="true">dlib/pixel.h</spec_file>
+ <description>
+ This is a simple struct that represents an RGB colored graphical pixel with an
+ alpha channel.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>rgb_pixel</name>
+ <file>dlib/pixel.h</file>
+ <spec_file link="true">dlib/pixel.h</spec_file>
+ <description>
+ This is a simple struct that represents an RGB colored graphical pixel.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>bgr_pixel</name>
+ <file>dlib/pixel.h</file>
+ <spec_file link="true">dlib/pixel.h</spec_file>
+ <description>
+ This is a simple struct that represents a BGR colored graphical pixel.
+ <p>
+ The difference between this object and the <a href="#rgb_pixel">rgb_pixel</a>
+ is just that this struct lays its pixels down in memory in BGR order rather
+ than RGB order. You only care about this if you are doing something like
+ using the <a href="#cv_image">cv_image</a> object to map an OpenCV image
+ into a more object oriented form.
+ </p>
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>cv_image</name>
+ <file>dlib/opencv.h</file>
+ <spec_file link="true">dlib/opencv/cv_image_abstract.h</spec_file>
+ <description>
+ This object is meant to be used as a simple wrapper around the OpenCV
+ IplImage struct or Mat object. Using this class template you can turn
+ an OpenCV image into something that looks like a normal dlib style
+ image object.
+
+ <p>
+ So you should be able to use cv_image objects with many of the image
+ processing functions in dlib as well as the GUI tools for displaying
+ images on the screen.
+ </p>
+
+ <p>
+ Note that you can do the reverse conversion, from dlib to OpenCV,
+ using the <a href="#toMat">toMat</a> routine.
+ </p>
+ </description>
+ <examples>
+ <example>webcam_face_pose_ex.cpp.html</example>
+ </examples>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>toMat</name>
+ <file>dlib/opencv.h</file>
+ <spec_file link="true">dlib/opencv/to_open_cv_abstract.h</spec_file>
+ <description>
+ This routine converts a dlib style image into an instance of OpenCV's cv::Mat object.
+ This is done by setting up the Mat object to point to the same memory as the dlib image.
+ <p>
+ Note that you can do the reverse conversion, from OpenCV to dlib,
+ using the <a href="#cv_image">cv_image</a> object.
+ </p>
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>heatmap</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/colormaps_abstract.h</spec_file>
+ <description>
+ Converts a grayscale image into a heatmap. This is useful if you want
+ to display a grayscale image with more than 256 values. In particular,
+ this function uses the following color mapping:
+ <br/><img src="heatmap.png"/>
+ </description>
+ <examples>
+ <example>image_ex.cpp.html</example>
+ </examples>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>jet</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/colormaps_abstract.h</spec_file>
+ <description>
+ Converts a grayscale image into an image using the jet color
+ scheme. This is useful if you want to display a grayscale image
+ with more than 256 values. In particular, this function uses the
+ following color mapping:
+ <br/><img src="jet.png"/>
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>randomly_color_image</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/colormaps_abstract.h</spec_file>
+ <description>
+ Randomly generates a mapping from gray level pixel values
+ to the RGB pixel space and then uses this mapping to create
+ a colored version an image.
+ <p>
+ This function is useful for displaying the results of some image
+ segmentation. For example, the output of <a href="#label_connected_blobs">label_connected_blobs</a>
+ or <a href="#segment_image">segment_image</a>.
+ </p>
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>assign_pixel</name>
+ <file>dlib/pixel.h</file>
+ <spec_file link="true">dlib/pixel.h</spec_file>
+ <description>
+ assign_pixel() is a templated function that can assign any pixel type to another pixel type.
+ It will perform whatever conversion is necessary to make the assignment work. (E.g. color to
+ grayscale conversion)
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>assign_pixel_intensity</name>
+ <file>dlib/pixel.h</file>
+ <spec_file link="true">dlib/pixel.h</spec_file>
+ <description>
+ assign_pixel_intensity() is a templated function that can change the
+ intensity of a pixel. So if the pixel in question is a grayscale pixel
+ then it simply assigns that pixel the given value. However, if the
+ pixel is not a grayscale pixel then it converts the pixel to the
+ HSI color space and sets the I channel to the given intensity
+ and then converts this HSI value back to the original pixel's
+ color space.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>get_pixel_intensity</name>
+ <file>dlib/pixel.h</file>
+ <spec_file link="true">dlib/pixel.h</spec_file>
+ <description>
+ get_pixel_intensity() is a templated function that
+ returns the grayscale intensity of a pixel. If the pixel isn't a grayscale
+ pixel then it converts the pixel to grayscale and returns that value.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>png_loader</name>
+ <file>dlib/image_io.h</file>
+ <spec_file link="true">dlib/image_loader/png_loader_abstract.h</spec_file>
+ <description>
+ This object loads a Portable Network Graphics (PNG) image file into
+ an <a href="containers.html#array2d">array2d</a> of <a href="dlib/pixel.h.html">pixels</a>.
+ <p>
+ Note that you must define DLIB_PNG_SUPPORT if you want to use this object. You
+ must also set your build environment to link to the libpng library. However,
+ if you use CMake and dlib's default CMakeLists.txt file then it will get setup
+ automatically.
+ </p>
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>jpeg_loader</name>
+ <file>dlib/image_io.h</file>
+ <spec_file link="true">dlib/image_loader/jpeg_loader_abstract.h</spec_file>
+ <description>
+ This object loads a JPEG image file into
+ an <a href="containers.html#array2d">array2d</a> of <a href="dlib/pixel.h.html">pixels</a>.
+ <p>
+ Note that you must define DLIB_JPEG_SUPPORT if you want to use this object. You
+ must also set your build environment to link to the libjpeg library. However,
+ if you use CMake and dlib's default CMakeLists.txt file then it will get setup
+ automatically.
+ </p>
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>load_jpeg</name>
+ <file>dlib/image_io.h</file>
+ <spec_file link="true">dlib/image_loader/jpeg_loader_abstract.h</spec_file>
+ <description>
+ This function loads a JPEG image file into
+ an <a href="containers.html#array2d">array2d</a> of <a href="dlib/pixel.h.html">pixels</a>.
+ <p>
+ Note that you must define DLIB_JPEG_SUPPORT if you want to use this object. You
+ must also set your build environment to link to the libjpeg library. However,
+ if you use CMake and dlib's default CMakeLists.txt file then it will get setup
+ automatically.
+ </p>
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>load_dng</name>
+ <file>dlib/image_io.h</file>
+ <spec_file link="true">dlib/image_loader/image_loader_abstract.h</spec_file>
+ <description>
+ This global function loads a dlib DNG file (a lossless compressed image format) into
+ an <a href="containers.html#array2d">array2d</a> of <a href="dlib/pixel.h.html">pixels</a>.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>save_dng</name>
+ <file>dlib/image_io.h</file>
+ <spec_file link="true">dlib/image_saver/image_saver_abstract.h</spec_file>
+ <description>
+ This global function saves an image as a dlib DNG file (a lossless
+ compressed image format).
+ <p>
+ This routine can save images containing any type of pixel. However, the DNG format
+ can natively store only the following pixel types: <b>rgb_pixel</b>, <b>hsi_pixel</b>,
+ <b>rgb_alpha_pixel</b>, <b>uint8</b>, <b>uint16</b>, <b>float</b>, and <b>double</b>.
+ All other pixel types will be converted
+ into one of these types as appropriate before being saved to disk.
+ </p>
+
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>save_png</name>
+ <file>dlib/image_io.h</file>
+ <spec_file link="true">dlib/image_saver/save_png_abstract.h</spec_file>
+ <description>
+ This global function writes an image to disk as a PNG (Portable Network Graphics) file.
+ <p>
+ Note that you must define DLIB_PNG_SUPPORT if you want to use this function. You
+ must also set your build environment to link to the libpng library. However,
+ if you use CMake and dlib's default CMakeLists.txt file then it will get setup
+ automatically.
+ </p>
+ <p>
+ This routine can save images containing any type of pixel. However, save_png() can
+ only natively store the following pixel types: <b>rgb_pixel</b>,
+ <b>rgb_alpha_pixel</b>, <b>uint8</b>, and <b>uint16</b>. All other pixel
+ types will be converted into one of these types as appropriate before being
+ saved to disk.
+ </p>
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>save_jpeg</name>
+ <file>dlib/image_io.h</file>
+ <spec_file link="true">dlib/image_saver/save_jpeg_abstract.h</spec_file>
+ <description>
+ This global function writes an image to disk as a JPEG file.
+ <p>
+ Note that you must define DLIB_JPEG_SUPPORT if you want to use this function. You
+ must also set your build environment to link to the libjpeg library. However,
+ if you use CMake and dlib's default CMakeLists.txt file then it will get setup
+ automatically.
+ </p>
+ <p>
+ This routine can save images containing any type of pixel. However, save_jpeg() can
+ only natively store the following pixel types: <b>rgb_pixel</b>
+ and <b>uint8</b>. All other pixel types will be converted into
+ one of these types as appropriate before being saved to disk.
+ </p>
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>load_image</name>
+ <file>dlib/image_io.h</file>
+ <spec_file link="true">dlib/image_loader/load_image_abstract.h</spec_file>
+ <description>
+ This global function takes a file name, looks at its extension, and
+ then loads it into an <a href="containers.html#array2d">array2d</a> of
+ <a href="dlib/pixel.h.html">pixels</a> using the appropriate image
+ loading routine. The supported types are BMP, PNG, JPEG, GIF, and the dlib DNG file format.
+
+ <p>
+ Note that you can only load PNG, JPEG, and GIF files if you link against
+ libpng, libjpeg, and libgif respectively. You will also need to #define
+ DLIB_PNG_SUPPORT, DLIB_JPEG_SUPPORT, and DLIB_GIF_SUPPORT. Or use CMake and
+ it will do all this for you.
+ </p>
+ </description>
+
+ <examples>
+ <example>image_ex.cpp.html</example>
+ </examples>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>load_bmp</name>
+ <file>dlib/image_io.h</file>
+ <spec_file link="true">dlib/image_loader/image_loader_abstract.h</spec_file>
+ <description>
+ This global function loads a MS Windows BMP file into an <a href="containers.html#array2d">array2d</a> of
+ <a href="dlib/pixel.h.html">pixels</a>.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>load_png</name>
+ <file>dlib/image_io.h</file>
+ <spec_file link="true">dlib/image_loader/png_loader_abstract.h</spec_file>
+ <description>
+ This function loads a Portable Network Graphics (PNG) image file into
+ an <a href="containers.html#array2d">array2d</a> of <a href="dlib/pixel.h.html">pixels</a>.
+ <p>
+ Note that you must define DLIB_PNG_SUPPORT if you want to use this object. You
+ must also set your build environment to link to the libpng library. However,
+ if you use CMake and dlib's default CMakeLists.txt file then it will get setup
+ automatically.
+ </p>
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>save_bmp</name>
+ <file>dlib/image_io.h</file>
+ <spec_file link="true">dlib/image_saver/image_saver_abstract.h</spec_file>
+ <description>
+ This global function saves an image as a MS Windows BMP file.
+
+ <p>
+ This routine can save images containing any type of pixel. However, it will
+ convert all color pixels into <b>rgb_pixel</b> and grayscale pixels into
+ <b>uint8</b> type before saving to disk.
+ </p>
+
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>draw_line</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/draw_abstract.h</spec_file>
+ <description>
+ This global function draws a line on an image.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>draw_solid_circle</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/draw_abstract.h</spec_file>
+ <description>
+ This global function draws a solid circle on an image.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>render_face_detections</name>
+ <file>dlib/image_processing/render_face_detections.h</file>
+ <spec_file link="true">dlib/image_processing/render_face_detections_abstract.h</spec_file>
+ <description>
+ This function takes a set of <a href="#full_object_detection">full_object_detections</a>
+ which represent human faces annotated with 68 facial landmarks (according to the iBUG 300-W
+ scheme) and converts them into a form suitable for display on an
+ <a href="dlib/gui_widgets/widgets_abstract.h.html#image_window">image_window</a>.
+
+ <p>
+ For example, it will take the output of a <a href="#shape_predictor">shape_predictor</a>
+ that uses this facial landmarking scheme and will produce visualizations like this:
+ </p>
+ <img src='face_landmarking_example.png'/>
+
+ </description>
+ <examples>
+ <example>face_landmark_detection_ex.cpp.html</example>
+ <example>webcam_face_pose_ex.cpp.html</example>
+ </examples>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>draw_rectangle</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/draw_abstract.h</spec_file>
+ <description>
+ This global function draws a rectangle on an image.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>tile_images</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/draw_abstract.h</spec_file>
+ <description>
+ This function takes an array of images and tiles them into a single large
+ square image and returns this new big tiled image. Therefore, it is a useful
+ method to visualize many small images at once.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>draw_fhog</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/fhog_abstract.h</spec_file>
+ <description>
+ This function takes a FHOG feature map which was created by
+ <a href="#extract_fhog_features">extract_fhog_features</a> and
+ converts it into an image suitable for display on the screen. In
+ particular, we draw all the hog cells into a grayscale image in a
+ way that shows the magnitude and orientation of the gradient
+ energy in each cell.
+ </description>
+ <examples>
+ <example>fhog_ex.cpp.html</example>
+ <example>fhog_object_detector_ex.cpp.html</example>
+ </examples>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>fill_rect</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/draw_abstract.h</spec_file>
+ <description>
+ This global function draws a solid rectangle on an image.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>assign_border_pixels</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/assign_image_abstract.h</spec_file>
+ <description>
+ This global function assigns all the pixels in the border of an image to
+ a specific value.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+
+ <component>
+ <name>assign_all_pixels</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/assign_image_abstract.h</spec_file>
+ <description>
+ This global function assigns all the pixels in an image a specific value.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>assign_image</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/assign_image_abstract.h</spec_file>
+ <description>
+ This global function copies one image into another and performs any
+ necessary color space conversions to make it work right.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>assign_image_scaled</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/assign_image_abstract.h</spec_file>
+ <description>
+ This global function copies one image into another and performs any
+ necessary color space conversions to make it work right. Additionally,
+ if the dynamic range of the source image is too big to fit into the destination image
+ then it will attempt to perform the appropriate scaling.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>get_histogram</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/equalize_histogram_abstract.h</spec_file>
+ <description>
+ This global function computes an image's histogram and returns it in the
+ form of a column or row <a href="linear_algebra.html#matrix">matrix</a> object.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>edge_orientation</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/edge_detector_abstract.h</spec_file>
+ <description>
+ This global function takes horizontal and vertical gradient magnitude
+ values and returns the orientation of the gradient.
+ </description>
+
+ </component>
+
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>equalize_histogram</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/equalize_histogram_abstract.h</spec_file>
+ <description>
+ This global function performs histogram equalization on an image.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>hysteresis_threshold</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/thresholding_abstract.h</spec_file>
+ <description>
+ This global function performs hysteresis thresholding on an image.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>sobel_edge_detector</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/edge_detector_abstract.h</spec_file>
+ <description>
+ This global function performs spatial filtering on an image using the
+ sobel edge detection filters.
+ </description>
+
+ <examples>
+ <example>image_ex.cpp.html</example>
+ </examples>
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>suppress_non_maximum_edges</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/edge_detector_abstract.h</spec_file>
+ <description>
+ This global function performs non-maximum suppression on a gradient
+ image.
+ </description>
+
+ <examples>
+ <example>image_ex.cpp.html</example>
+ </examples>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>zero_border_pixels</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/assign_image_abstract.h</spec_file>
+ <description>
+ This global function zeros the pixels on the border of an image.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>spatially_filter_image</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/spatial_filtering_abstract.h</spec_file>
+ <description>
+ This global function performs spatial filtering on an image with a user
+ supplied filter.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>gaussian_blur</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/spatial_filtering_abstract.h</spec_file>
+ <description>
+ This global function blurs an image by convolving it with a Gaussian filter.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>spatially_filter_image_separable</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/spatial_filtering_abstract.h</spec_file>
+ <description>
+ This global function performs spatial filtering on an image with a user
+ supplied separable filter.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>float_spatially_filter_image_separable</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/spatial_filtering_abstract.h</spec_file>
+ <description>
+ This global function performs spatial filtering on an image with a user
+ supplied separable filter. It is optimized to work only on float valued
+ images with float valued filters.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>spatially_filter_image_separable_down</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/spatial_filtering_abstract.h</spec_file>
+ <description>
+ This global function performs spatial filtering on an image with a user
+ supplied separable filter. Additionally, it produces a downsampled
+ output.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>max_filter</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/spatial_filtering_abstract.h</spec_file>
+ <description>
+ This function slides a rectangle over an input image and outputs a new
+ image which contains the maximum valued pixel found inside the rectangle at each
+ position in the input image.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>sum_filter</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/spatial_filtering_abstract.h</spec_file>
+ <description>
+ This function slides a rectangle over an input image and adds the sum
+ of pixel values in each rectangle location to another image.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>sum_filter_assign</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/spatial_filtering_abstract.h</spec_file>
+ <description>
+ This function slides a rectangle over an input image and outputs a new
+ image which contains the sum of pixels inside the rectangle at each
+ position in the input image.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>separable_3x3_filter_block_grayscale</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/spatial_filtering_abstract.h</spec_file>
+ <description>
+ This routine filters part of an image with a user supplied 3x3 separable filter.
+ The output is a grayscale sub-image.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>separable_3x3_filter_block_rgb</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/spatial_filtering_abstract.h</spec_file>
+ <description>
+ This routine filters part of an image with a user supplied 3x3 separable filter.
+ The output is a RGB sub-image.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>create_tiled_pyramid</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/image_pyramid_abstract.h</spec_file>
+ <description>
+ This function creates an image pyramid and packs the entire pyramid into
+ one big image. It does this by tiling the different pyramid layers together
+ and outputting the result. Here is an example:
+ <br/>
+ <img src='tiled_pyramid_example.jpg'/>
+ <br/>
+
+ Also, you can use the
+ <a href="dlib/image_transforms/image_pyramid_abstract.h.html#image_to_tiled_pyramid">image_to_tiled_pyramid()</a>
+ and
+ <a href="dlib/image_transforms/image_pyramid_abstract.h.html#image_to_tiled_pyramid">tiled_pyramid_to_image()</a> routines
+ to convert between the input image coordinate space and the tiled pyramid
+ coordinate space.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>pyramid_down</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/image_pyramid_abstract.h</spec_file>
+ <description>
+ This is a simple function object to help create image pyramids. It
+ downsamples an image by a ratio of N to N-1 where N is supplied by the
+ user as a template argument.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>pyramid_disable</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/image_pyramid_abstract.h</spec_file>
+ <description>
+ This object downsamples an image at a ratio of infinity to 1. That
+ means it always outputs an image of size zero. 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.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>interpolate_nearest_neighbor</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file>
+ <description>
+ This object is a tool for performing nearest neighbor interpolation
+ on an image.
+ </description>
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>interpolate_bilinear</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file>
+ <description>
+ This object is a tool for performing bilinear interpolation
+ on an image.
+ </description>
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>interpolate_quadratic</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file>
+ <description>
+ This object is a tool for performing quadratic interpolation
+ on an image.
+ </description>
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>transform_image</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file>
+ <description>
+ This routine is a tool for transforming images using some kind of point mapping
+ function (e.g. <a href="linear_algebra.html#point_transform_affine">point_transform_affine</a>)
+ and pixel interpolation tool (e.g. <a href="#interpolate_quadratic">interpolate_quadratic</a>).
+ An example application of this routine is for image rotation. Indeed, it is how
+ <a href="#rotate_image">rotate_image</a> is implemented.
+ </description>
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>rotate_image</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file>
+ <description>
+ This is a routine for rotating an image.
+ </description>
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>pyramid_up</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file>
+ <description>
+ This routine upsamples an image. In particular, it takes a
+ <a href="#pyramid_down">pyramid_down</a> object (or an object with a
+ compatible interface) as an argument and performs an upsampling
+ which is the inverse of the supplied pyramid_down object.
+ </description>
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>resize_image</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file>
+ <description>
+ This is a routine capable of resizing or stretching an image.
+ </description>
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>extract_image_chips</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file>
+ <description>
+ This function extracts "chips" from an image. That is, it takes a list of
+ rectangular sub-windows (i.e. chips) within an image and extracts those
+ sub-windows, storing each into its own image. It also allows the user to
+ specify the scale and rotation for the chip.
+ </description>
+ <examples>
+ <example>face_landmark_detection_ex.cpp.html</example>
+ </examples>
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>random_cropper</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/random_cropper_abstract.h</spec_file>
+ <description>
+ This object is a tool for extracting random crops of objects from a set of
+ images. The crops are randomly jittered in scale, translation, and
+ rotation but more or less centered on objects specified by <a href="#mmod_rect">mmod_rect</a>
+ objects.
+ </description>
+ <examples>
+ <example>random_cropper_ex.cpp.html</example>
+ <example>dnn_mmod_ex.cpp.html</example>
+ <example>dnn_mmod_find_cars_ex.cpp.html</example>
+ <example>dnn_mmod_train_find_cars_ex.cpp.html</example>
+ </examples>
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>jitter_image</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file>
+ <description>
+ Randomly jitters an image by slightly rotating, scaling, and translating it.
+ There is also a 50% chance it will be mirrored left to right.
+ </description>
+ <examples>
+ <example>dnn_metric_learning_on_images_ex.cpp.html</example>
+ <example>dnn_face_recognition_ex.cpp.html</example>
+ </examples>
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>sub_image</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file>
+ <description>
+ This function returns a lightweight sub-image of another image. In particular,
+ the returned sub-image simply holds a pointer to the original image, meaning there
+ is no overhead for using or creating the sub-image.
+ </description>
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>add_image_left_right_flips</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file>
+ <description>
+ This routine takes a set of images and bounding boxes within those
+ images and doubles the size of the dataset by adding left/right
+ flipped copies of each image as well as the corresponding bounding
+ boxes. Therefore, this function is useful if you are training and
+ object detector and your objects have a left/right symmetry.
+ </description>
+ <examples>
+ <example>fhog_object_detector_ex.cpp.html</example>
+ </examples>
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>add_image_rotations</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file>
+ <description>
+ This routine takes a set of images and bounding boxes within those images and
+ grows the dataset by computing many different rotations of each image. It will
+ also adjust the positions of the bounding boxes so that they still fall on the
+ same objects in each rotated image.
+ </description>
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>rotate_image_dataset</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file>
+ <description>
+ This routine takes a set of images and bounding boxes within those
+ images and rotates the entire dataset by a user specified angle.
+ This means that all images are rotated and the bounding boxes are adjusted
+ so that they still sit on top of the same visual objects in the new rotated images.
+ </description>
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>flip_image_dataset_left_right</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file>
+ <description>
+ This routine takes a set of images and bounding boxes within those images and
+ mirrors the entire dataset left to right. This means that all images are
+ flipped left to right and the bounding boxes are adjusted so that they still
+ sit on top of the same visual objects in the new flipped images.
+ </description>
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>upsample_image_dataset</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file>
+ <description>
+ This routine takes a set of images and bounding boxes within those images and
+ upsamples the entire dataset. This means that all images are upsampled and the
+ bounding boxes are adjusted so that they still sit on top of the same visual
+ objects in the new images.
+ </description>
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>flip_image_left_right</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file>
+ <description>
+ This is a routine which can flip an image from left to right. (e.g. as
+ if viewed through a mirror).
+ </description>
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>flip_image_up_down</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/interpolation_abstract.h</spec_file>
+ <description>
+ This routine flips an image upside down.
+ </description>
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>auto_threshold_image</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/thresholding_abstract.h</spec_file>
+ <description>
+ This global function performs a simple binary thresholding on an image.
+ Instead of taking a user supplied threshold
+ it computes one from the image using k-means clustering.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>threshold_image</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/thresholding_abstract.h</spec_file>
+ <description>
+ This global function performs a simple binary thresholding on an image with a user
+ supplied threshold.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>label_connected_blobs</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/label_connected_blobs_abstract.h</spec_file>
+ <description>
+ This function labels each of the connected blobs in an image with a unique integer label.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>segment_image</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/segment_image_abstract.h</spec_file>
+ <description>
+ Attempts to segment an image into regions which have some visual consistency to them.
+ In particular, this function implements the algorithm described in the paper:
+ <blockquote>
+ Efficient Graph-Based Image Segmentation by Felzenszwalb and Huttenlocher.
+ </blockquote>
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>find_candidate_object_locations</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/segment_image_abstract.h</spec_file>
+ <description>
+ This function takes an input image and generates a set of candidate
+ rectangles which are expected to bound any objects in the image. It does
+ this by running a version of the <a href="#segment_image">segment_image</a> routine on the image and
+ then reports rectangles containing each of the segments as well as rectangles
+ containing unions of adjacent segments. The basic idea is described in the
+ paper:
+ <blockquote>
+ Segmentation as Selective Search for Object Recognition by Koen E. A. van de Sande, et al.
+ </blockquote>
+ Note that this function deviates from what is described in the paper slightly.
+ See the code for details.
+ </description>
+ <examples>
+ <example>find_candidate_object_locations.py.html</example>
+ </examples>
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>binary_dilation</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/morphological_operations_abstract.h</spec_file>
+ <description>
+ This global function performs the morphological operation of dilation on an image.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>binary_erosion</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/morphological_operations_abstract.h</spec_file>
+ <description>
+ This global function performs the morphological operation of erosion on an image.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>binary_open</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/morphological_operations_abstract.h</spec_file>
+ <description>
+ This global function performs a morphological opening on an image.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>binary_close</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/morphological_operations_abstract.h</spec_file>
+ <description>
+ This global function performs a morphological closing on an image.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>binary_intersection</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/morphological_operations_abstract.h</spec_file>
+ <description>
+ This global function computes the intersection of two binary images.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>binary_union</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/morphological_operations_abstract.h</spec_file>
+ <description>
+ This global function computes the union of two binary images.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>binary_difference</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/morphological_operations_abstract.h</spec_file>
+ <description>
+ This global function computes the difference of two binary images.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>binary_complement</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/morphological_operations_abstract.h</spec_file>
+ <description>
+ This global function computes the complement of a binary image.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>scan_image</name>
+ <file>dlib/image_processing.h</file>
+ <spec_file link="true">dlib/image_processing/scan_image_abstract.h</spec_file>
+ <description>
+ This global function is a tool for sliding a set of rectangles
+ over an image space and finding the locations where the sum of pixels in
+ the rectangles exceeds a threshold. It is useful for implementing
+ certain kinds of sliding window classifiers.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>scan_image_movable_parts</name>
+ <file>dlib/image_processing.h</file>
+ <spec_file link="true">dlib/image_processing/scan_image_abstract.h</spec_file>
+ <description>
+ This global function is a tool for sliding a set of rectangles
+ over an image space and finding the locations where the sum of pixels in
+ the rectangles exceeds a threshold. It is useful for implementing
+ certain kinds of sliding window classifiers. The behavior of this
+ routine is similar to <a href="#scan_image">scan_image</a> except that
+ it can also handle movable parts in addition to rigidly placed parts
+ within the sliding window.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>find_points_above_thresh</name>
+ <file>dlib/image_processing.h</file>
+ <spec_file link="true">dlib/image_processing/scan_image_abstract.h</spec_file>
+ <description>
+ This routine finds all points in an image with a pixel value above a
+ threshold. It also has the ability to produce an efficient random
+ subsample of such points if the number of them is very large.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>scan_image_pyramid</name>
+ <file>dlib/image_processing.h</file>
+ <spec_file link="true">dlib/image_processing/scan_image_pyramid_abstract.h</spec_file>
+ <description>
+ This object is a tool for running a sliding window classifier over
+ an image pyramid. This object can also be understood as a general
+ tool for implementing the spatial pyramid models described in the paper:
+ <blockquote>
+ Beyond Bags of Features: Spatial Pyramid Matching for Recognizing
+ Natural Scene Categories by Svetlana Lazebnik, Cordelia Schmid,
+ and Jean Ponce
+ </blockquote>
+ It also includes the ability to represent movable part models.
+
+ <br/><br/>
+ The following feature extractors can be used with the scan_image_pyramid object:
+ <ul style="margin-top:0em">
+ <li><a href="#hashed_feature_image">hashed_feature_image</a></li>
+ <li><a href="#binned_vector_feature_image">binned_vector_feature_image</a></li>
+ <li><a href="#nearest_neighbor_feature_image">nearest_neighbor_feature_image</a></li>
+ </ul>
+ </description>
+ <examples>
+ <example>object_detector_ex.cpp.html</example>
+ <example>object_detector_advanced_ex.cpp.html</example>
+ </examples>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>scan_fhog_pyramid</name>
+ <file>dlib/image_processing.h</file>
+ <spec_file link="true">dlib/image_processing/scan_fhog_pyramid_abstract.h</spec_file>
+ <description>
+
+ This object is a tool for running a fixed sized sliding window classifier
+ over an image pyramid. In particular, it slides a linear classifier over
+ a HOG pyramid as discussed in the paper:
+ <blockquote>
+ Histograms of Oriented Gradients for Human Detection by Navneet Dalal
+ and Bill Triggs, CVPR 2005
+ </blockquote>
+ However, we augment the method slightly to use the version of HOG features
+ from:
+ <blockquote>
+ Object Detection with Discriminatively Trained Part Based Models by
+ P. Felzenszwalb, R. Girshick, D. McAllester, D. Ramanan
+ IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 32, No. 9, Sep. 2010
+ </blockquote>
+ Since these HOG features have been shown to give superior performance.
+ </description>
+ <examples>
+ <example>fhog_object_detector_ex.cpp.html</example>
+ <example>train_object_detector.py.html</example>
+ </examples>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>scan_image_boxes</name>
+ <file>dlib/image_processing.h</file>
+ <spec_file link="true">dlib/image_processing/scan_image_boxes_abstract.h</spec_file>
+ <description>
+ This object is a tool for running a classifier over an image with the goal
+ of localizing each object present. The localization is in the form of the
+ bounding box around each object of interest.
+
+ <p>
+ Unlike the <a href="#scan_image_pyramid">scan_image_pyramid</a> object which scans a
+ fixed sized window over an image pyramid, the scan_image_boxes tool allows you to
+ define your own list of "candidate object locations" which should be evaluated.
+ This is simply a list of rectangle objects which might contain objects of
+ interest. The scan_image_boxes object will then evaluate the classifier at each
+ of these locations and return the subset of rectangles which appear to have
+ objects in them.
+ </p>
+
+ This object can also be understood as a general tool for implementing the spatial
+ pyramid models described in the paper:
+ <blockquote>
+ Beyond Bags of Features: Spatial Pyramid Matching for Recognizing
+ Natural Scene Categories by Svetlana Lazebnik, Cordelia Schmid,
+ and Jean Ponce
+ </blockquote>
+
+ <br/><br/>
+ The following feature extractors can be used with the scan_image_boxes object:
+ <ul style="margin-top:0em">
+ <li><a href="#hashed_feature_image">hashed_feature_image</a></li>
+ <li><a href="#binned_vector_feature_image">binned_vector_feature_image</a></li>
+ <li><a href="#nearest_neighbor_feature_image">nearest_neighbor_feature_image</a></li>
+ </ul>
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>scan_image_custom</name>
+ <file>dlib/image_processing.h</file>
+ <spec_file link="true">dlib/image_processing/scan_image_custom_abstract.h</spec_file>
+ <description>
+ This object is a tool for running a classifier over an image with the goal
+ of localizing each object present. The localization is in the form of the
+ bounding box around each object of interest.
+
+ <p>
+ Unlike the <a href="#scan_image_pyramid">scan_image_pyramid</a>
+ and <a href="#scan_image_boxes">scan_image_boxes</a> objects, this image
+ scanner delegates all the work of constructing the object feature vector to
+ a user supplied feature extraction object. That is, scan_image_custom
+ simply asks the supplied feature extractor what boxes in the image we
+ should investigate and then asks the feature extractor for the complete
+ feature vector for each box. That is, scan_image_custom does not apply any
+ kind of pyramiding or other higher level processing to the features coming
+ out of the feature extractor. That means that when you use
+ scan_image_custom it is completely up to you to define the feature vector
+ used with each image box.
+ </p>
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>full_object_detection</name>
+ <file>dlib/image_processing.h</file>
+ <spec_file link="true">dlib/image_processing/full_object_detection_abstract.h</spec_file>
+ <description>
+ This object represents the location of an object in an image along with the
+ positions of each of its constituent parts.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>mmod_rect</name>
+ <file>dlib/image_processing.h</file>
+ <spec_file link="true">dlib/image_processing/full_object_detection_abstract.h</spec_file>
+ <description>
+ This is a simple struct that is used to give training data and receive detections
+ from the <a href="ml.html#loss_mmod_">Max-Margin Object Detection loss layer</a>.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>get_frontal_face_detector</name>
+ <file>dlib/image_processing/frontal_face_detector.h</file>
+ <spec_file link="true">dlib/image_processing/frontal_face_detector_abstract.h</spec_file>
+ <description>
+ This function returns an <a href="#object_detector">object_detector</a> that is
+ configured to find human faces that are looking more or less towards the camera.
+ It is created using the <a href="#scan_fhog_pyramid">scan_fhog_pyramid</a>
+ object.
+ </description>
+ <examples>
+ <example>face_detection_ex.cpp.html</example>
+ <example>face_detector.py.html</example>
+ <example>webcam_face_pose_ex.cpp.html</example>
+ </examples>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>object_detector</name>
+ <file>dlib/image_processing.h</file>
+ <spec_file link="true">dlib/image_processing/object_detector_abstract.h</spec_file>
+ <description>
+ This object is a tool for detecting the positions of objects in an image. In
+ particular, it is a simple container to aggregate an instance of an image
+ scanner object (either <a href="#scan_fhog_pyramid">scan_fhog_pyramid</a>,
+ <a href="#scan_image_pyramid">scan_image_pyramid</a>, <a
+ href="#scan_image_boxes">scan_image_boxes</a>, or
+ <a href="#scan_image_custom">scan_image_custom</a>), the weight vector
+ needed by one of these image scanners, and finally an instance of
+ <a href="#test_box_overlap">test_box_overlap</a>. The test_box_overlap object
+ is used to perform non-max suppression on the output of the image scanner
+ object.
+
+ <p>
+ Note that you can use the
+ <a href="ml.html#structural_object_detection_trainer">structural_object_detection_trainer</a>
+ to learn the parameters of an object_detector. See the example programs for an introduction.
+ </p>
+
+ <p>
+ Also note that dlib contains more powerful <a
+ href="ml.html#loss_mmod_">CNN based object detection
+ tooling</a>, which will usually run slower but produce much
+ more general and accurate detectors.
+ </p>
+
+ </description>
+ <examples>
+ <example>fhog_object_detector_ex.cpp.html</example>
+ <example>face_detection_ex.cpp.html</example>
+ <example>object_detector_ex.cpp.html</example>
+ <example>object_detector_advanced_ex.cpp.html</example>
+ <example>train_object_detector.cpp.html</example>
+
+ <example>face_detector.py.html</example>
+ <example>train_object_detector.py.html</example>
+ </examples>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>correlation_tracker</name>
+ <file>dlib/image_processing.h</file>
+ <spec_file link="true">dlib/image_processing/correlation_tracker_abstract.h</spec_file>
+ <description>
+ This is a tool for tracking moving objects in a video stream. You give it
+ the bounding box of an object in the first frame and it attempts to track the
+ object in the box from frame to frame.
+
+ <p>
+ This tool is an implementation of the method described in the following paper:
+ <blockquote>
+ Danelljan, Martin, et al. "Accurate scale estimation for robust visual
+ tracking." Proceedings of the British Machine Vision Conference BMVC. 2014.
+ </blockquote>
+ </p>
+ </description>
+ <examples>
+ <example>video_tracking_ex.cpp.html</example>
+ <example>correlation_tracker.py.html</example>
+ </examples>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>evaluate_detectors</name>
+ <file>dlib/image_processing.h</file>
+ <spec_file link="true">dlib/image_processing/scan_fhog_pyramid_abstract.h</spec_file>
+ <description>
+ This function allows you to efficiently run a bunch of
+ <a href="#scan_fhog_pyramid">scan_fhog_pyramid</a> based
+ <a href="#object_detector">object_detectors</a>
+ over an image. Importantly, this function is faster than running
+ each detector individually because it computes the HOG features
+ only once and then reuses them for each detector.
+ </description>
+ <examples>
+ <example>fhog_object_detector_ex.cpp.html</example>
+ </examples>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>test_box_overlap</name>
+ <file>dlib/image_processing.h</file>
+ <spec_file link="true">dlib/image_processing/box_overlap_testing_abstract.h</spec_file>
+ <description>
+ This object is a simple function object for determining if two
+ <a href="linear_algebra.html#rectangle">rectangles</a> overlap.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>remove_unobtainable_rectangles</name>
+ <file>dlib/image_processing.h</file>
+ <spec_file link="true">dlib/image_processing/remove_unobtainable_rectangles_abstract.h</spec_file>
+ <description>
+ Recall that the <a href="#scan_image_pyramid">scan_image_pyramid</a> and
+ <a href="#scan_image_boxes">scan_image_boxes</a> objects can't produce
+ all possible rectangles as object detections since they only
+ consider a limited subset of all possible object positions.
+ Therefore, when training an object detector that uses these tools
+ you must make sure the training data does not contain any object
+ locations that are unobtainable by the image scanning model.
+ The remove_unobtainable_rectangles() routine is a tool to filter out
+ these unobtainable rectangles from the training.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>compute_box_dimensions</name>
+ <file>dlib/image_processing.h</file>
+ <spec_file link="true">dlib/image_processing/detection_template_tools_abstract.h</spec_file>
+ <description>
+ This function is a tool for computing a rectangle with a particular
+ width/height ratio and area.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>create_single_box_detection_template</name>
+ <file>dlib/image_processing.h</file>
+ <spec_file link="true">dlib/image_processing/detection_template_tools_abstract.h</spec_file>
+ <description>
+ This function is a tool for creating a detection template usable by
+ the <a href="#scan_image_pyramid">scan_image_pyramid</a> object. This
+ particular function creates a detection template with exactly one feature
+ extraction region.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>create_overlapped_2x2_detection_template</name>
+ <file>dlib/image_processing.h</file>
+ <spec_file link="true">dlib/image_processing/detection_template_tools_abstract.h</spec_file>
+ <description>
+ This function is a tool for creating a detection template usable by
+ the <a href="#scan_image_pyramid">scan_image_pyramid</a> object. This
+ particular function creates a detection template with four overlapping feature
+ extraction regions.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>create_grid_detection_template</name>
+ <file>dlib/image_processing.h</file>
+ <spec_file link="true">dlib/image_processing/detection_template_tools_abstract.h</spec_file>
+ <description>
+ This function is a tool for creating a detection template usable by
+ the <a href="#scan_image_pyramid">scan_image_pyramid</a> object. This
+ particular function creates a detection template with a grid of feature
+ extraction regions.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>determine_object_boxes</name>
+ <file>dlib/image_processing.h</file>
+ <spec_file link="true">dlib/image_processing/scan_image_pyramid_tools_abstract.h</spec_file>
+ <description>
+ The <a href="#scan_image_pyramid">scan_image_pyramid</a> object represents a sliding
+ window classifier system. For it to work correctly it needs to be given a set of
+ object boxes which define the size and shape of each sliding window and these windows
+ need to be able to match the sizes and shapes of targets the user wishes to detect.
+ Therefore, the determine_object_boxes() routine is a tool for computing a set of object boxes
+ which can meet this requirement.
+
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>setup_grid_detection_templates</name>
+ <file>dlib/image_processing.h</file>
+ <spec_file link="true">dlib/image_processing/scan_image_pyramid_tools_abstract.h</spec_file>
+ <description>
+ This routine uses <a href="#determine_object_boxes">determine_object_boxes</a> to obtain a set of
+ object boxes and then adds them to a <a href="#scan_image_pyramid">scan_image_pyramid</a> object
+ as detection templates. It also uses <a href="#create_grid_detection_template">create_grid_detection_template</a>
+ to create each feature extraction region. Therefore, the detection templates will extract
+ features from a regular grid inside each object box.
+ </description>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>setup_grid_detection_templates_verbose</name>
+ <file>dlib/image_processing.h</file>
+ <spec_file link="true">dlib/image_processing/scan_image_pyramid_tools_abstract.h</spec_file>
+ <description>
+ This function is identical to <a href="#setup_grid_detection_templates">setup_grid_detection_templates</a>
+ except that it also outputs information regarding the selected detection templates
+ to standard out.
+ </description>
+ <examples>
+ <example>object_detector_ex.cpp.html</example>
+ <example>train_object_detector.cpp.html</example>
+ </examples>
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>setup_hashed_features</name>
+ <file>dlib/image_processing.h</file>
+ <spec_file link="true">dlib/image_processing/setup_hashed_features_abstract.h</spec_file>
+ <description>
+ This is a tool for configuring the <a href="#hashed_feature_image">hashed_feature_image</a>
+ or <a href="#binned_vector_feature_image">binned_vector_feature_image</a> object
+ with a random <a href="algorithms.html#projection_hash">projection hash</a>.
+ </description>
+ <examples>
+ <example>object_detector_ex.cpp.html</example>
+ <example>train_object_detector.cpp.html</example>
+ </examples>
+
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>randomly_sample_image_features</name>
+ <file>dlib/statistics.h</file>
+ <spec_file link="true">dlib/statistics/image_feature_sampling_abstract.h</spec_file>
+ <description>
+ Given a feature extractor such as the <a href="#hog_image">hog_image</a>,
+ this routine selects a random subsample of local image feature vectors
+ from a set of images.
+ </description>
+
+ </component>
+
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>make_uniform_lbp_image</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/lbp_abstract.h</spec_file>
+ <description>
+ This function extracts the uniform local-binary-pattern feature at every pixel
+ of an image and stores the output in a new image object.
+ We use the idea of uniform LBPs from the paper:
+ <blockquote>
+ Face Description with Local Binary Patterns: Application to Face Recognition
+ by Ahonen, Hadid, and Pietikainen.
+ </blockquote>
+ </description>
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>extract_histogram_descriptors</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/lbp_abstract.h</spec_file>
+ <description>
+ This function extracts histograms of pixel values from a set of windows in an
+ image and returns the histograms.
+ </description>
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>extract_uniform_lbp_descriptors</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/lbp_abstract.h</spec_file>
+ <description>
+ Extracts histograms of uniform local-binary-patterns from an image. The
+ histograms are from densely tiled windows that do not overlap and cover all
+ of the image.
+ We use the idea of uniform LBPs from the paper:
+ <blockquote>
+ Face Description with Local Binary Patterns: Application to Face Recognition
+ by Ahonen, Hadid, and Pietikainen.
+ </blockquote>
+ </description>
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ <component>
+ <name>extract_highdim_face_lbp_descriptors</name>
+ <file>dlib/image_transforms.h</file>
+ <spec_file link="true">dlib/image_transforms/lbp_abstract.h</spec_file>
+ <description>
+ This function extracts the high-dimensional LBP feature described in the
+ paper:
+ <blockquote>
+ Blessing of Dimensionality: High-dimensional Feature and Its Efficient
+ Compression for Face Verification by Dong Chen, Xudong Cao, Fang Wen, and
+ Jian Sun
+ </blockquote>
+ </description>
+ </component>
+
+ <!-- ************************************************************************* -->
+
+ </components>
+
+ <!-- ************************************************************************* -->
+
+
+</doc>
+