class mrpt::vision::CImagePyramid

Holds and builds a pyramid of images: starting with an image at full resolution (octave=1), it builds a number of half-resolution images: octave=2 at 1/2 , octave=3 at 1/2^2, octave=N at 1/2^(N-1).

Color (RGB) or grayscale pyramids can be built from color input images; only grayscale pyramids can be built from grayscale images.

The algorithm to halve the images can be either a 1:2 decimation or a smooth filter (arithmetic mean of every 4 pixels).

Pyramids are built by invoking the method buildPyramid() or buildPyramidFast()

Example of usage:

CImagePyramid  pyr;

CImage img = ...

pyr.buildPyramid(
   img,
   4,    // num. of octaves
   true  // smooth
   );

pyr.images[0].saveToFile("pyr0.jpg");
pyr.images[1].saveToFile("pyr1.jpg");
...

Both converting to grayscale and building the octave images have SSE2-optimized implementations (if available).

See also:

mrpt::img::CImage

#include <mrpt/vision/CImagePyramid.h>

class CImagePyramid
{
public:
    //
fields

    std::vector<mrpt::img::CImage> images;

    // construction

    CImagePyramid();

    //
methods

    bool buildPyramid(
        const mrpt::img::CImage& img,
        size_t nOctaves,
        const bool smooth_halves = true,
        const bool convert_grayscale = false
        );

    bool buildPyramidFast(
        mrpt::img::CImage& img,
        size_t nOctaves,
        const bool smooth_halves = true,
        const bool convert_grayscale = false
        );
};

Fields

std::vector<mrpt::img::CImage> images

The individual images:

  • images[0]: 1st octave (full-size)

  • images[1]: 2nd octave (1/2 size)

  • images[2]: 3rd octave (1/4 size)

  • images[i]: (i+1)-th octave (1/2^i size)

Methods

bool buildPyramid(
    const mrpt::img::CImage& img,
    size_t nOctaves,
    const bool smooth_halves = true,
    const bool convert_grayscale = false
    )

Fills the vector images with the different octaves built from the input image.

Parameters:

img

The input image. Can be either color or grayscale.

nOctaves

Number of octaves to build. 1 means just the original image, 2 means the original plus the 1/2 image, etc.

smooth_halves

If true, use an arithmetic mean of every 2x2 pixel block when downsampling.

convert_grayscale

If true, the pyramid is built in grayscale even for color input images.

Returns:

true if SSE2-optimized versions of CImage::scaleHalf() was used to build all the scales in the pyramid.

See also:

buildPyramidFast

bool buildPyramidFast(
    mrpt::img::CImage& img,
    size_t nOctaves,
    const bool smooth_halves = true,
    const bool convert_grayscale = false
    )

Exactly like buildPyramid(), but if the input image has not to be converted from RGB to grayscale, the image data buffer is reutilized for the 1st octave in images [0], emptying the input image.

See also:

buildPyramid