libeblearn
ebl::laplacian_pyramid_module< T, Tstate > Class Template Reference

Creates a laplacian pyramid of the input. More...

#include <ebl_preprocessing.h>

Inheritance diagram for ebl::laplacian_pyramid_module< T, Tstate >:
ebl::resizepp_module< T, Tstate > ebl::s2m_module< T, Tstate > ebl::module_1_1< T, Tstate > ebl::module_1_1< T, Tin, Tout > ebl::module ebl::module

List of all members.

Public Member Functions

 laplacian_pyramid_module (uint nscales, midxdim &sizes, uint mode=MEAN_RESIZE, module_1_1< T, Tstate > *pp=NULL, bool own_pp=true, idxdim *dzpad=NULL, bool global_norm=true, bool local_norm=false, bool local_norm2=false, bool color_norm=false, bool cnorm_across=true, bool keep_aspect_ratio=true, const char *name="laplacian_pyramid")
 laplacian_pyramid_module (uint nscales, idxdim &kerdims, midxdim &sizes, uint mode=MEAN_RESIZE, module_1_1< T, Tstate > *pp=NULL, bool own_pp=true, idxdim *dzpad=NULL, bool global_norm=true, bool local_norm=false, bool local_norm2=false, bool color_norm=false, bool cnorm_across=true, bool keep_aspect_ratio=true, const char *name="laplacian_pyramid")
 laplacian_pyramid_module (uint nscales, midxdim &kerdims, midxdim &sizes, uint mode=MEAN_RESIZE, module_1_1< T, Tstate > *pp=NULL, bool own_pp=true, idxdim *dzpad=NULL, bool global_norm=true, bool local_norm=false, bool local_norm2=false, bool color_norm=false, bool cnorm_across=true, bool keep_aspect_ratio=true, const char *name="laplacian_pyramid")
 laplacian_pyramid_module (uint nscales, uint mode=MEAN_RESIZE, module_1_1< T, Tstate > *pp=NULL, bool own_pp=true, idxdim *dzpad=NULL, bool global_norm=true, bool local_norm=false, bool local_norm2=false, bool color_norm=false, bool cnorm_across=true, bool keep_aspect_ratio=true, const char *name="laplacian_pyramid")
virtual void init ()
 Init filters and normalizations.
virtual void fprop (Tstate &in, Tstate &out)
 forward propagation from in to out
virtual void fprop (Tstate &in, mstate< Tstate > &out)
virtual void fprop (Tstate &in, midx< T > &out)
virtual void bprop (Tstate &in, mstate< Tstate > &out)
 backward propagation from in to out (empty)
virtual void bbprop (Tstate &in, mstate< Tstate > &out)
 bbackward propagation from in to out (empty)
virtual mfidxdim fprop_size (mfidxdim &isize)
virtual mfidxdim bprop_size (mfidxdim &osize)
virtual std::string describe ()
 Returns a string describing this module and its parameters.
virtual uint nlayers ()
 Returns the number of layers produced by this resizing module.
virtual void set_scalings (vector< float > &scalings)

Protected Member Functions

void resize (idx< T > &im, idxdim &tgt, rect< int > &inr, rect< int > &outr)
 Resize 'im' to target 'tgt' and update 'inr' and 'outr'.
void blur (idx< T > &filter, idx< T > &in, idx< T > &out, rect< int > &roi)
idx< T > highpass (idx< T > &in, idx< T > &blurred, idxdim &tgt, rect< int > &inr, bool first)
void subsample (idx< T > &in, idx< T > &out, rect< int > &inr)
void normalize_globally (idx< T > &in)
void normalize_intensity_globally (idx< T > &in)
 Called by normalize_globally().
void normalize_color_globally (idx< T > &in)
 Called by normalize_globally().
void normalize_globally2 (idx< T > &in)
 Called by normalize_globally().

Protected Attributes

uint nscales
 Number of scales in the pyramid.
uint iscale
 Current scale being produced during fprop.
vector< float > scalings
 Scaling factor for multiple pyramids.
midxdim sizes
 The target dimensions for each scale.
midxdim kerdims
 The kernel dimensions for each scale.
idx< T > burt
 The Burt-Adelson blurring kernel.
vector< idx< T > > filters
 The filtering gaussian kernels for each scale.
vector< zpad_module< T, Tstate > * > pads
 Padding class for input.
bool use_pad
 Pad before filtering or not.
bool global_norm
 Globally normalize outputs or not.
bool local_norm
 Locally normalize outputs or not.
bool local_norm2
 Locally normalize outputs or not.
bool color_lnorm
 Locally normalize color or not.
bool cnorm_across
 Locally color across each other or separately.
bool keep_aspect_ratio
 Keep aspect ratio or not.
bool mirror
 Use mirror padding instead of zero padding.
idx< T > blurred
 The blurred buffer.
idx< T > blurred_high
 The blurred buffer for high frequency extraction.
idx< T > high0
 Temporary buffer for high frequencies.
Tstate padded
 A temporary buffer for padding.
vector< layers< T, Tstate > * > norms
 Brightness normalization modules.
vector< layers< T, Tstate > * > cnorms
 Color normalization modules.
midx< T > tmp
 temporary buffer
mstate< Tstate > tmp2
 temporary buffer
mstate< Tstate > tmp3
 temporary buffer
Tstate inpp
Tstate outpp
 Temporary buffers for preprocessing.
midx< T > outs
 Latest outputs.
mstate< Tstate > zpad_out
 Zero-padded outputs.
bool burt_filtering_only
 Only use Burt-Adelson for filtering.

Detailed Description

template<typename T, class Tstate = bbstate_idx<T>>
class ebl::laplacian_pyramid_module< T, Tstate >

Creates a laplacian pyramid of the input.


Constructor & Destructor Documentation

template<typename T , class Tstate >
ebl::laplacian_pyramid_module< T, Tstate >::laplacian_pyramid_module ( uint  nscales,
midxdim &  sizes,
uint  mode = MEAN_RESIZE,
module_1_1< T, Tstate > *  pp = NULL,
bool  own_pp = true,
idxdim *  dzpad = NULL,
bool  global_norm = true,
bool  local_norm = false,
bool  local_norm2 = false,
bool  color_norm = false,
bool  cnorm_across = true,
bool  keep_aspect_ratio = true,
const char *  name = "laplacian_pyramid" 
)

Constructor. Preprocessing module pp will be deleted upon destruction.

Parameters:
nscalesNumber of scales of pyramid, starting from target dimensions down with a subsampling ratio of 2.
ppAn optional pointer to a preprocessing module. If NULL, no preprocessing is performed. This module is responsible for destroying the preprocessing module.
pp_originalPreprocessing for original channel.
add_originalIf true, the first object in the output will be the original preprocessed patch of target size, without Laplacian.
modeThe type of resizing (MEAN_RESIZE, BILINEAR_RESIZE, GAUSSIAN_RESIZE).
sizesA vector of target dimensions (heightxwidth). If it contains 1 target only, simply scale by .5 at each scale. Otherwise, manually set each target to the ones found in this vector.
zpadOptional zero-padding is added on each side
global_normIf true (default), removes global mean from output and divides it by standard deviation.
local_normIf true, removes local mean and divide by std dev in 5x5 neighborhood.
color_normIf true, contrast-normalize color channels.
cnorm_acrossIf true and color_norm is true, color is normalized across each other, rather than layer by layer.
keep_aspect_ratioIf true (default), aspect ratio is kept.
template<typename T , class Tstate >
ebl::laplacian_pyramid_module< T, Tstate >::laplacian_pyramid_module ( uint  nscales,
idxdim &  kerdims,
midxdim &  sizes,
uint  mode = MEAN_RESIZE,
module_1_1< T, Tstate > *  pp = NULL,
bool  own_pp = true,
idxdim *  dzpad = NULL,
bool  global_norm = true,
bool  local_norm = false,
bool  local_norm2 = false,
bool  color_norm = false,
bool  cnorm_across = true,
bool  keep_aspect_ratio = true,
const char *  name = "laplacian_pyramid" 
)

Constructor. Preprocessing module pp will be deleted upon destruction.

Parameters:
nscalesNumber of scales of pyramid, starting from target dimensions down with a subsampling ratio of 2.
ppAn optional pointer to a preprocessing module. If NULL, no preprocessing is performed. This module is responsible for destroying the preprocessing module.
pp_originalPreprocessing for original channel.
add_originalIf true, the first object in the output will be the original preprocessed patch of target size, without Laplacian.
modeThe type of resizing (MEAN_RESIZE, BILINEAR_RESIZE, GAUSSIAN_RESIZE).
sizesA vector of target dimensions (heightxwidth). If it contains 1 target only, simply scale by .5 at each scale. Otherwise, manually set each target to the ones found in this vector.
zpadOptional zero-padding is added on each side
global_normIf true (default), removes global mean from output and divides it by standard deviation.
local_normIf true, removes local mean and divide by std dev in 5x5 neighborhood.
color_normIf true, contrast-normalize color channels.
cnorm_acrossIf true and color_norm is true, color is normalized across each other, rather than layer by layer.
keep_aspect_ratioIf true (default), aspect ratio is kept.
template<typename T , class Tstate >
ebl::laplacian_pyramid_module< T, Tstate >::laplacian_pyramid_module ( uint  nscales,
midxdim &  kerdims,
midxdim &  sizes,
uint  mode = MEAN_RESIZE,
module_1_1< T, Tstate > *  pp = NULL,
bool  own_pp = true,
idxdim *  dzpad = NULL,
bool  global_norm = true,
bool  local_norm = false,
bool  local_norm2 = false,
bool  color_norm = false,
bool  cnorm_across = true,
bool  keep_aspect_ratio = true,
const char *  name = "laplacian_pyramid" 
)

Constructor. Preprocessing module pp will be deleted upon destruction.

Parameters:
nscalesNumber of scales of pyramid, starting from target dimensions down with a subsampling ratio of 2.
ppAn optional pointer to a preprocessing module. If NULL, no preprocessing is performed. This module is responsible for destroying the preprocessing module.
pp_originalPreprocessing for original channel.
add_originalIf true, the first object in the output will be the original preprocessed patch of target size, without Laplacian.
modeThe type of resizing (MEAN_RESIZE, BILINEAR_RESIZE, GAUSSIAN_RESIZE).
sizesA vector of target dimensions (heightxwidth). If it contains 1 target only, simply scale by .5 at each scale. Otherwise, manually set each target to the ones found in this vector.
zpadOptional zero-padding is added on each side
global_normIf true (default), removes global mean from output and divides it by standard deviation.
local_normIf true, removes local mean and divide by std dev in 5x5 neighborhood.
color_normIf true, contrast-normalize color channels.
cnorm_acrossIf true and color_norm is true, color is normalized across each other, rather than layer by layer.
keep_aspect_ratioIf true (default), aspect ratio is kept.
template<typename T , class Tstate >
ebl::laplacian_pyramid_module< T, Tstate >::laplacian_pyramid_module ( uint  nscales,
uint  mode = MEAN_RESIZE,
module_1_1< T, Tstate > *  pp = NULL,
bool  own_pp = true,
idxdim *  dzpad = NULL,
bool  global_norm = true,
bool  local_norm = false,
bool  local_norm2 = false,
bool  color_norm = false,
bool  cnorm_across = true,
bool  keep_aspect_ratio = true,
const char *  name = "laplacian_pyramid" 
)

Constructor without target dimensions. set_dimensions should be called later. Preprocessing module pp will be deleted upon destruction.

Parameters:
nscalesNumber of scales of pyramid, starting from target dimensions down with a subsampling ratio of 2.
ppAn optional pointer to a preprocessing module. If NULL, no preprocessing is performed. This module is responsible for destroying the preprocessing module.
pp_originalPreprocessing for original channel.
add_originalIf true, the first object in the output will be the original preprocessed patch of target size, without Laplacian.
modeThe type of resizing (MEAN_RESIZE, BILINEAR_RESIZE, GAUSSIAN_RESIZE).
zpadOptional zero-padding is added on each side
global_normIf true (default), removes global mean from output and divides it by standard deviation.
local_normIf true, removes local mean and divide by std dev in 5x5 neighborhood.
color_normIf true, contrast-normalize color channels.
cnorm_acrossIf true and color_norm is true, color is normalized across each other, rather than layer by layer.
keep_aspect_ratioIf true (default), aspect ratio is kept.

Member Function Documentation

template<typename T , class Tstate >
void ebl::laplacian_pyramid_module< T, Tstate >::blur ( idx< T > &  filter,
idx< T > &  in,
idx< T > &  out,
rect< int > &  roi 
) [protected]

Blur 'in' into 'out' using blurring filter 'filter'.

Parameters:
roiThe region of interest, to be reduced if no padding is used.
template<typename T , class Tstate >
mfidxdim ebl::laplacian_pyramid_module< T, Tstate >::bprop_size ( mfidxdim &  osize) [virtual]

Returns input dimensions corresponding to output dimensions 'osize'. Implementation of this method helps automatic scaling of input data but is optional.

Reimplemented from ebl::resizepp_module< T, Tstate >.

template<typename T , class Tstate >
void ebl::laplacian_pyramid_module< T, Tstate >::fprop ( Tstate &  in,
midx< T > &  out 
) [virtual]

Process 'in' into 'out' which will contain an array of idx, where each idx has different scale with different dimensions.

Reimplemented from ebl::resizepp_module< T, Tstate >.

template<typename T , class Tstate >
void ebl::laplacian_pyramid_module< T, Tstate >::fprop ( Tstate &  in,
mstate< Tstate > &  out 
) [virtual]

Process 'in' into 'out' which will contain all scales separated in each state of the multi-state 'out'.

Reimplemented from ebl::s2m_module< T, Tstate >.

template<typename T , class Tstate >
mfidxdim ebl::laplacian_pyramid_module< T, Tstate >::fprop_size ( mfidxdim &  isize) [virtual]

Modifies multi-input dimensions 'isize' to be compliant with module's architecture, and returns corresponding output dimensions. Implementation of this method helps automatic scaling of input data but is optional.

Reimplemented from ebl::module_1_1< T, Tin, Tout >.

template<typename T , class Tstate >
idx< T > ebl::laplacian_pyramid_module< T, Tstate >::highpass ( idx< T > &  in,
idx< T > &  blurred,
idxdim &  tgt,
rect< int > &  inr,
bool  first 
) [protected]

Highpass 'in' by subtracting 'blurred' version of the image into a new buffer and return it. The input region 'inr' will be centered in the returned buffer. The returned buffer will have 'tgt' dimensions.

Parameters:
firstIt is the first time highpass is called or not.
template<typename T , class Tstate >
void ebl::laplacian_pyramid_module< T, Tstate >::normalize_globally ( idx< T > &  in) [protected]

Normalize entire 'in' image, using mean and standard deviation of the region of interest of 'roi' of the image. Intensity (0) and color channels (1 & 2) are normalized independently. Normalizing from the ROI only can be important, if the non-ROI contains zero-padding.

template<typename T , class Tstate >
void ebl::laplacian_pyramid_module< T, Tstate >::set_scalings ( vector< float > &  scalings) [virtual]

Produce multiple pyramids, each starting at a scaling of the original input.

template<typename T , class Tstate >
void ebl::laplacian_pyramid_module< T, Tstate >::subsample ( idx< T > &  in,
idx< T > &  out,
rect< int > &  inr 
) [protected]

Subsample 'in' into 'out' with a factor of 2. If 'in' dimensions are not a factor of 2, the last odd row or column are simply dropped. This downsamples 'inr' accordingly.


The documentation for this class was generated from the following files: