Functions to smooth and sub-sample image in one direction. More...
#include "vil_gauss_reduce.h"
#include <vcl_cassert.h>
#include <vil/vil_bilin_interp.h>
#include <vil/vil_plane.h>
#include <vil/vil_convert.h>
Go to the source code of this file.
Defines | |
#define | vil_gauss_reduce_txx_ |
#define | VIL_GAUSS_REDUCE_INSTANTIATE(T) |
Functions | |
template<class T > | |
void | vil_gauss_reduce (const vil_image_view< T > &src_im, vil_image_view< T > &dest_im, vil_image_view< T > &work_im) |
Smooth and subsample src_im to produce dest_im. | |
template<class T > | |
void | vil_gauss_reduce_2_3 (const vil_image_view< T > &src_im, vil_image_view< T > &dest_im, vil_image_view< T > &work_im) |
Smooth and subsample src_im to produce dest_im (2/3 size). | |
template<class T > | |
void | vil_gauss_reduce_121 (const vil_image_view< T > &src_im, vil_image_view< T > &dest_im) |
Smooth and subsample src_im to produce dest_im. | |
unsigned char | rl_round (double x, unsigned char) |
An optimisable rounding function. | |
signed char | rl_round (double x, signed char) |
double | rl_round (double x, double) |
float | rl_round (double x, float) |
template<class T > | |
void | vil_gauss_reduce_general_plane (const vil_image_view< T > &src, vil_image_view< T > &dest, vil_image_view< T > &worka, vil_image_view< T > &workb, const vil_gauss_reduce_params ¶ms) |
Smooth and subsample src_im to produce dest_im. | |
template<class T > | |
void | vil_gauss_reduce_general (const vil_image_view< T > &src, vil_image_view< T > &dest, vil_image_view< T > &worka, vil_image_view< T > &workb, const vil_gauss_reduce_params ¶ms) |
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_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. | |
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. | |
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. |
Functions to smooth and sub-sample image in one direction.
Definition in file vil_gauss_reduce.txx.
#define VIL_GAUSS_REDUCE_INSTANTIATE | ( | T | ) |
template void vil_gauss_reduce(const vil_image_view<T >& src, \ vil_image_view<T >& dest, \ vil_image_view<T >& work_im); \ template void vil_gauss_reduce_2_3(const vil_image_view<T >& src, \ vil_image_view<T >& dest, \ vil_image_view<T >& work_im); \ template void vil_gauss_reduce_121(const vil_image_view<T >& src, \ vil_image_view<T >& dest); \ template 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)
Definition at line 463 of file vil_gauss_reduce.txx.
#define vil_gauss_reduce_txx_ |
Definition at line 3 of file vil_gauss_reduce.txx.
unsigned long rl_round | ( | double | x, |
unsigned | char | ||
) | [inline] |
An optimisable rounding function.
Definition at line 120 of file vil_gauss_reduce.txx.
signed long rl_round | ( | double | x, |
signed | char | ||
) | [inline] |
Definition at line 123 of file vil_gauss_reduce.txx.
double rl_round | ( | double | x, |
double | |||
) | [inline] |
Definition at line 144 of file vil_gauss_reduce.txx.
float rl_round | ( | double | x, |
float | |||
) | [inline] |
Definition at line 147 of file vil_gauss_reduce.txx.
void vil_gauss_reduce | ( | const vil_image_view< T > & | src_im, |
vil_image_view< T > & | dest_im, | ||
vil_image_view< T > & | work_im | ||
) |
Smooth and subsample src_im to produce dest_im.
Applies filter in x and y, then samples every other pixel. work_im provides workspace
Definition at line 19 of file vil_gauss_reduce.txx.
void vil_gauss_reduce_121 | ( | const vil_image_view< T > & | src_im, |
vil_image_view< T > & | dest_im | ||
) |
Smooth and subsample src_im to produce dest_im.
Applies filter in x and y, then samples every other pixel.
Definition at line 94 of file vil_gauss_reduce.txx.
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.
Smooths with a 3x3 filter and subsamples
Definition at line 328 of file vil_gauss_reduce.txx.
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.
void vil_gauss_reduce_2_3 | ( | const vil_image_view< T > & | src_im, |
vil_image_view< T > & | dest_im, | ||
vil_image_view< T > & | work_im | ||
) |
Smooth and subsample src_im to produce dest_im (2/3 size).
Applies filter in x and y, then samples every other pixel. work_im provides workspace
Definition at line 57 of file vil_gauss_reduce.txx.
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.
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.
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.
void vil_gauss_reduce_general_plane | ( | const vil_image_view< T > & | src, |
vil_image_view< T > & | dest, | ||
vil_image_view< T > & | worka, | ||
vil_image_view< T > & | workb, | ||
const vil_gauss_reduce_params & | params | ||
) |
Smooth and subsample src_im to produce dest_im.
Applies 5 pin filter in x and y, then samples every other pixel. Assumes dest_im has sufficient data allocated
Definition at line 157 of file vil_gauss_reduce.txx.