core/vil/algo/vil_gauss_reduce.h File Reference


Detailed Description

Functions to smooth and sub-sample image in one direction.

Author:
Tim Cootes Some of these are not templated because

Definition in file vil_gauss_reduce.h.

#include <vil/vil_image_view.h>
#include <vxl_config.h>

Go to the source code of this file.


Classes

class  vil_gauss_reduce_params

Functions

template<class T>
void vil_gauss_reduce_general (const vil_image_view< T > &src_im, vil_image_view< T > &dest_im, vil_image_view< T > &worka, vil_image_view< T > &workb, const vil_gauss_reduce_params &params)
 Smooth and subsample src_im by an arbitrary factor to produce dest_im.
template<class T>
void vil_gauss_reduce_1plane (const T *src_im, unsigned src_nx, unsigned src_ny, vcl_ptrdiff_t s_x_step, vcl_ptrdiff_t s_y_step, T *dest_im, vcl_ptrdiff_t d_x_step, vcl_ptrdiff_t d_y_step)
 Smooth and subsample single plane src_im in x to produce dest_im.
VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_1plane (const vxl_byte *src_im, unsigned src_nx, unsigned src_ny, vcl_ptrdiff_t s_x_step, vcl_ptrdiff_t s_y_step, vxl_byte *dest_im, vcl_ptrdiff_t d_x_step, vcl_ptrdiff_t d_y_step)
 Smooth and subsample single plane src_im in x to produce dest_im.
VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_1plane (const float *src_im, unsigned src_nx, unsigned src_ny, vcl_ptrdiff_t s_x_step, vcl_ptrdiff_t s_y_step, float *dest_im, vcl_ptrdiff_t d_x_step, vcl_ptrdiff_t d_y_step)
 Smooth and subsample single plane src_im in x to produce dest_im.
VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_1plane (const int *src_im, unsigned src_nx, unsigned src_ny, vcl_ptrdiff_t s_x_step, vcl_ptrdiff_t s_y_step, int *dest_im, vcl_ptrdiff_t d_x_step, vcl_ptrdiff_t d_y_step)
 Smooth and subsample single plane src_im in x to produce dest_im.
VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_1plane (const double *src_im, unsigned src_nx, unsigned src_ny, vcl_ptrdiff_t s_x_step, vcl_ptrdiff_t s_y_step, double *dest_im, vcl_ptrdiff_t d_x_step, vcl_ptrdiff_t d_y_step)
 Smooth and subsample single plane src_im in x to produce dest_im.
VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_1plane (const vxl_int_16 *src_im, unsigned src_nx, unsigned src_ny, vcl_ptrdiff_t s_x_step, vcl_ptrdiff_t s_y_step, vxl_int_16 *dest_im, vcl_ptrdiff_t d_x_step, vcl_ptrdiff_t d_y_step)
 Smooth and subsample single plane src_im in x to produce dest_im.
template<class T>
void vil_gauss_reduce_121_1plane (const T *src_im, unsigned src_nx, unsigned src_ny, vcl_ptrdiff_t s_x_step, vcl_ptrdiff_t s_y_step, T *dest_im, vcl_ptrdiff_t d_x_step, vcl_ptrdiff_t d_y_step)
 Smooth and subsample single plane src_im in x to produce dest_im using 121 filter in x and y.
VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_121_1plane (const vxl_byte *src_im, unsigned src_nx, unsigned src_ny, vcl_ptrdiff_t s_x_step, vcl_ptrdiff_t s_y_step, vxl_byte *dest_im, vcl_ptrdiff_t d_x_step, vcl_ptrdiff_t d_y_step)
 Smooth and subsample single plane src_im in x to produce dest_im using 121 filter in x and y.
VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_121_1plane (const float *src_im, unsigned src_nx, unsigned src_ny, vcl_ptrdiff_t s_x_step, vcl_ptrdiff_t s_y_step, float *dest_im, vcl_ptrdiff_t d_x_step, vcl_ptrdiff_t d_y_step)
 Smooth and subsample single plane src_im in x to produce dest_im using 121 filter in x and y.
VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_121_1plane (const int *src_im, unsigned src_nx, unsigned src_ny, vcl_ptrdiff_t s_x_step, vcl_ptrdiff_t s_y_step, int *dest_im, vcl_ptrdiff_t d_x_step, vcl_ptrdiff_t d_y_step)
 Smooth and subsample single plane src_im in x to produce dest_im using 121 filter in x and y.
VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_121_1plane (const double *src_im, unsigned src_nx, unsigned src_ny, vcl_ptrdiff_t s_x_step, vcl_ptrdiff_t s_y_step, double *dest_im, vcl_ptrdiff_t d_x_step, vcl_ptrdiff_t d_y_step)
 Smooth and subsample single plane src_im in x to produce dest_im using 121 filter in x and y.
VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_121_1plane (const vxl_int_16 *src_im, unsigned src_nx, unsigned src_ny, vcl_ptrdiff_t s_x_step, vcl_ptrdiff_t s_y_step, vxl_int_16 *dest_im, vcl_ptrdiff_t d_x_step, vcl_ptrdiff_t d_y_step)
 Smooth and subsample single plane src_im in x to produce dest_im using 121 filter in x and y.
template<class T>
void vil_gauss_reduce_2_3_1plane (const T *src_im, unsigned src_ni, unsigned src_nj, vcl_ptrdiff_t s_x_step, vcl_ptrdiff_t s_y_step, T *dest_im, vcl_ptrdiff_t d_x_step, vcl_ptrdiff_t d_y_step)
 Smooth and subsample single plane src_im in x, result is 2/3rd size.
VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_2_3_1plane (const vxl_byte *src_im, unsigned src_ni, unsigned src_nj, vcl_ptrdiff_t s_x_step, vcl_ptrdiff_t s_y_step, vxl_byte *dest_im, vcl_ptrdiff_t d_x_step, vcl_ptrdiff_t d_y_step)
 Smooth and subsample single plane src_im in x, result is 2/3rd size.
VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_2_3_1plane (const int *src_im, unsigned src_ni, unsigned src_nj, vcl_ptrdiff_t s_x_step, vcl_ptrdiff_t s_y_step, int *dest_im, vcl_ptrdiff_t d_x_step, vcl_ptrdiff_t d_y_step)
 Smooth and subsample single plane src_im in x, result is 2/3rd size.
VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_2_3_1plane (const vxl_int_16 *src_im, unsigned src_ni, unsigned src_nj, vcl_ptrdiff_t s_x_step, vcl_ptrdiff_t s_y_step, vxl_int_16 *dest_im, vcl_ptrdiff_t d_x_step, vcl_ptrdiff_t d_y_step)
 Smooth and subsample single plane src_im in x, result is 2/3rd size.
VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_2_3_1plane (const float *src_im, unsigned src_ni, unsigned src_nj, vcl_ptrdiff_t s_x_step, vcl_ptrdiff_t s_y_step, float *dest_im, vcl_ptrdiff_t d_x_step, vcl_ptrdiff_t d_y_step)
 Smooth and subsample single plane src_im in x, result is 2/3rd size.
VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_2_3_1plane (const double *src_im, unsigned src_ni, unsigned src_nj, vcl_ptrdiff_t s_x_step, vcl_ptrdiff_t s_y_step, double *dest_im, vcl_ptrdiff_t d_x_step, vcl_ptrdiff_t d_y_step)
 Smooth and subsample single plane src_im in x, result is 2/3rd size.

Function Documentation

VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_121_1plane ( const vxl_int_16 *  src_im,
unsigned  src_ni,
unsigned  src_nj,
vcl_ptrdiff_t  s_x_step,
vcl_ptrdiff_t  s_y_step,
vxl_int_16 *  dest_im,
vcl_ptrdiff_t  d_x_step,
vcl_ptrdiff_t  d_y_step 
)

Smooth and subsample single plane src_im in x to produce dest_im using 121 filter in x and y.

Smoothes with a 3x3 filter and subsamples

Definition at line 726 of file vil_gauss_reduce.cxx.

VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_121_1plane ( const double *  src_im,
unsigned  src_ni,
unsigned  src_nj,
vcl_ptrdiff_t  s_x_step,
vcl_ptrdiff_t  s_y_step,
double *  dest_im,
vcl_ptrdiff_t  d_x_step,
vcl_ptrdiff_t  d_y_step 
)

Smooth and subsample single plane src_im in x to produce dest_im using 121 filter in x and y.

Smoothes with a 3x3 filter and subsamples

Definition at line 582 of file vil_gauss_reduce.cxx.

VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_121_1plane ( const int *  src_im,
unsigned  src_ni,
unsigned  src_nj,
vcl_ptrdiff_t  s_x_step,
vcl_ptrdiff_t  s_y_step,
int *  dest_im,
vcl_ptrdiff_t  d_x_step,
vcl_ptrdiff_t  d_y_step 
)

Smooth and subsample single plane src_im in x to produce dest_im using 121 filter in x and y.

Smoothes with a 3x3 filter and subsamples

Definition at line 654 of file vil_gauss_reduce.cxx.

VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_121_1plane ( const float *  src_im,
unsigned  src_ni,
unsigned  src_nj,
vcl_ptrdiff_t  s_x_step,
vcl_ptrdiff_t  s_y_step,
float *  dest_im,
vcl_ptrdiff_t  d_x_step,
vcl_ptrdiff_t  d_y_step 
)

Smooth and subsample single plane src_im in x to produce dest_im using 121 filter in x and y.

Smoothes with a 3x3 filter and subsamples

Definition at line 510 of file vil_gauss_reduce.cxx.

VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_121_1plane ( const vxl_byte *  src_im,
unsigned  src_ni,
unsigned  src_nj,
vcl_ptrdiff_t  s_x_step,
vcl_ptrdiff_t  s_y_step,
vxl_byte *  dest_im,
vcl_ptrdiff_t  d_x_step,
vcl_ptrdiff_t  d_y_step 
)

Smooth and subsample single plane src_im in x to produce dest_im using 121 filter in x and y.

Smoothes with a 3x3 filter and subsamples

Definition at line 438 of file vil_gauss_reduce.cxx.

template<class T>
void vil_gauss_reduce_121_1plane ( const T *  src_im,
unsigned  src_ni,
unsigned  src_nj,
vcl_ptrdiff_t  s_x_step,
vcl_ptrdiff_t  s_y_step,
T *  dest_im,
vcl_ptrdiff_t  d_x_step,
vcl_ptrdiff_t  d_y_step 
)

Smooth and subsample single plane src_im in x to produce dest_im using 121 filter in x and y.

Smoothes with a 3x3 filter and subsamples

Definition at line 328 of file vil_gauss_reduce.txx.

VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_1plane ( const vxl_int_16 *  src_im,
unsigned  src_ni,
unsigned  src_nj,
vcl_ptrdiff_t  s_x_step,
vcl_ptrdiff_t  s_y_step,
vxl_int_16 *  dest_im,
vcl_ptrdiff_t  d_x_step,
vcl_ptrdiff_t  d_y_step 
)

Smooth and subsample single plane src_im in x to produce dest_im.

Applies 1-5-8-5-1 filter in x, then samples every other pixel. Fills [0,(ni+1)/2-1][0,nj-1] elements of dest

Definition at line 184 of file vil_gauss_reduce.cxx.

VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_1plane ( const double *  src_im,
unsigned  src_ni,
unsigned  src_nj,
vcl_ptrdiff_t  s_x_step,
vcl_ptrdiff_t  s_y_step,
double *  dest_im,
vcl_ptrdiff_t  d_x_step,
vcl_ptrdiff_t  d_y_step 
)

Smooth and subsample single plane src_im in x to produce dest_im.

Applies 1-5-8-5-1 filter in x, then samples every other pixel. Fills [0,(ni+1)/2-1][0,nj-1] elements of dest

Definition at line 102 of file vil_gauss_reduce.cxx.

VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_1plane ( const int *  src_im,
unsigned  src_ni,
unsigned  src_nj,
vcl_ptrdiff_t  s_x_step,
vcl_ptrdiff_t  s_y_step,
int *  dest_im,
vcl_ptrdiff_t  d_x_step,
vcl_ptrdiff_t  d_y_step 
)

Smooth and subsample single plane src_im in x to produce dest_im.

Applies 1-5-8-5-1 filter in x, then samples every other pixel. Fills [0,(ni+1)/2-1][0,nj-1] elements of dest

Definition at line 142 of file vil_gauss_reduce.cxx.

VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_1plane ( const float *  src_im,
unsigned  src_ni,
unsigned  src_nj,
vcl_ptrdiff_t  s_x_step,
vcl_ptrdiff_t  s_y_step,
float *  dest_im,
vcl_ptrdiff_t  d_x_step,
vcl_ptrdiff_t  d_y_step 
)

Smooth and subsample single plane src_im in x to produce dest_im.

Applies 1-5-8-5-1 filter in x, then samples every other pixel. Fills [0,(ni+1)/2-1][0,nj-1] elements of dest

Definition at line 61 of file vil_gauss_reduce.cxx.

VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_1plane ( const vxl_byte *  src_im,
unsigned  src_ni,
unsigned  src_nj,
vcl_ptrdiff_t  s_x_step,
vcl_ptrdiff_t  s_y_step,
vxl_byte *  dest_im,
vcl_ptrdiff_t  d_x_step,
vcl_ptrdiff_t  d_y_step 
)

Smooth and subsample single plane src_im in x to produce dest_im.

Applies 1-5-8-5-1 filter in x, then samples every other pixel. Fills [0,(ni+1)/2-1][0,nj-1] elements of dest

Definition at line 19 of file vil_gauss_reduce.cxx.

template<class T>
void vil_gauss_reduce_1plane ( const T *  src_im,
unsigned  src_nx,
unsigned  src_ny,
vcl_ptrdiff_t  s_x_step,
vcl_ptrdiff_t  s_y_step,
T *  dest_im,
vcl_ptrdiff_t  d_x_step,
vcl_ptrdiff_t  d_y_step 
)

Smooth and subsample single plane src_im in x to produce dest_im.

Applies 1-5-8-5-1 filter in x, then samples every other pixel. Fills [0,(nx+1)/2-1][0,ny-1] elements of dest Assumes dest_im has sufficient data allocated.

This is essentially a utility function, used by mil_gauss_pyramid_builder

By applying twice we can obtain a full gaussian smoothed and sub-sampled 2D image.

Definition at line 281 of file vil_gauss_reduce.txx.

VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_2_3_1plane ( const double *  src_im,
unsigned  src_ni,
unsigned  src_nj,
vcl_ptrdiff_t  s_x_step,
vcl_ptrdiff_t  s_y_step,
double *  dest_im,
vcl_ptrdiff_t  d_x_step,
vcl_ptrdiff_t  d_y_step 
)

Smooth and subsample single plane src_im in x, result is 2/3rd size.

Applies alternate 1-3-1, 1-1 filter in x, then samples every other pixel. Fills [0,(2*ni+1)/3-1][0,nj-1] elements of dest

Note, 131 filter only an approximation

Definition at line 270 of file vil_gauss_reduce.cxx.

VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_2_3_1plane ( const float *  src_im,
unsigned  src_ni,
unsigned  src_nj,
vcl_ptrdiff_t  s_x_step,
vcl_ptrdiff_t  s_y_step,
float *  dest_im,
vcl_ptrdiff_t  d_x_step,
vcl_ptrdiff_t  d_y_step 
)

Smooth and subsample single plane src_im in x, result is 2/3rd size.

Applies alternate 1-3-1, 1-1 filter in x, then samples every other pixel. Fills [0,(2*ni+1)/3-1][0,nj-1] elements of dest

Note, 131 filter only an approximation

Definition at line 229 of file vil_gauss_reduce.cxx.

VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_2_3_1plane ( const vxl_int_16 *  src_im,
unsigned  src_ni,
unsigned  src_nj,
vcl_ptrdiff_t  s_x_step,
vcl_ptrdiff_t  s_y_step,
vxl_int_16 *  dest_im,
vcl_ptrdiff_t  d_x_step,
vcl_ptrdiff_t  d_y_step 
)

Smooth and subsample single plane src_im in x, result is 2/3rd size.

Applies alternate 1-3-1, 1-1 filter in x, then samples every other pixel. Fills [0,(2*ni+1)/3-1][0,nj-1] elements of dest

Note, 131 filter only an approximation

Definition at line 398 of file vil_gauss_reduce.cxx.

VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_2_3_1plane ( const int *  src_im,
unsigned  src_ni,
unsigned  src_nj,
vcl_ptrdiff_t  s_x_step,
vcl_ptrdiff_t  s_y_step,
int *  dest_im,
vcl_ptrdiff_t  d_x_step,
vcl_ptrdiff_t  d_y_step 
)

Smooth and subsample single plane src_im in x, result is 2/3rd size.

Applies alternate 1-3-1, 1-1 filter in x, then samples every other pixel. Fills [0,(2*ni+1)/3-1][0,nj-1] elements of dest

Note, 131 filter only an approximation

Definition at line 355 of file vil_gauss_reduce.cxx.

VCL_DEFINE_SPECIALIZATION void vil_gauss_reduce_2_3_1plane ( const vxl_byte *  src_im,
unsigned  src_ni,
unsigned  src_nj,
vcl_ptrdiff_t  s_x_step,
vcl_ptrdiff_t  s_y_step,
vxl_byte *  dest_im,
vcl_ptrdiff_t  d_x_step,
vcl_ptrdiff_t  d_y_step 
)

Smooth and subsample single plane src_im in x, result is 2/3rd size.

Applies alternate 1-3-1, 1-1 filter in x, then samples every other pixel. Fills [0,(2*ni+1)/3-1][0,nj-1] elements of dest

Note, 131 filter only an approximation

Definition at line 311 of file vil_gauss_reduce.cxx.

template<class T>
void vil_gauss_reduce_2_3_1plane ( const T *  src_im,
unsigned  src_ni,
unsigned  src_nj,
vcl_ptrdiff_t  s_x_step,
vcl_ptrdiff_t  s_y_step,
T *  dest_im,
vcl_ptrdiff_t  d_x_step,
vcl_ptrdiff_t  d_y_step 
)

Smooth and subsample single plane src_im in x, result is 2/3rd size.

Applies alternate 1-3-1, 1-1 filter in x, then samples every other pixel. Fills [0,(2*ni+1)/3-1][0,nj-1] elements of dest

Note, 131 filter only an approximation

Definition at line 407 of file vil_gauss_reduce.txx.

template<class T>
void vil_gauss_reduce_general ( const vil_image_view< T > &  src_im,
vil_image_view< T > &  dest_im,
vil_image_view< T > &  worka,
vil_image_view< T > &  workb,
const vil_gauss_reduce_params params 
)

Smooth and subsample src_im by an arbitrary factor to produce dest_im.

Parameters:
worka provide workspace to avoid repetitive memory alloc and free
workb provide workspace to avoid repetitive memory alloc and free

Definition at line 252 of file vil_gauss_reduce.txx.


Generated on Sat Nov 22 05:07:55 2008 for core/vil by  doxygen 1.5.1