Public Member Functions | Protected Member Functions | Private Attributes
vimt3d_gaussian_pyramid_builder_3d< T > Class Template Reference

Build Gaussian pyramids of vimt3d_image_3d_of<T>. More...

#include <vimt3d_gaussian_pyramid_builder_3d.h>

Inheritance diagram for vimt3d_gaussian_pyramid_builder_3d< T >:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 vimt3d_gaussian_pyramid_builder_3d ()
 Dflt ctor.
virtual ~vimt3d_gaussian_pyramid_builder_3d ()
 Destructor.
unsigned filter_width () const
 Current filter width.
void set_filter_width (unsigned)
 Set current filter width (must be 5 at present).
bool uniform_reduction () const
 When true, subsample in x,y,z every time.
void set_uniform_reduction (bool b)
 When true, subsample in x,y,z every time.
virtual vimt_image_pyramidnew_image_pyramid () const
 Create new (empty) pyramid on heap.
virtual void set_max_levels (int max_l)
 Define maximum number of levels to build.
virtual int max_levels () const
 Get the current maximum number levels allowed.
virtual void build (vimt_image_pyramid &, const vimt_image &) const
 Build pyramid.
virtual void extend (vimt_image_pyramid &) const
 Extend pyramid.
void gauss_reduce (vimt3d_image_3d_of< T > &dest_im, const vimt3d_image_3d_of< T > &src_im) const
 Smooth and subsample src_im to produce dest_im.
virtual double scale_step () const
 Scale step between levels.
unsigned min_x_size () const
 Get the minimum X size of the top layer of the pyramid.
unsigned min_y_size () const
 Get the minimum Y size of the top layer of the pyramid.
unsigned min_z_size () const
 Get the minimum Z size of the top layer of the pyramid.
virtual void set_min_size (unsigned X, unsigned Y, unsigned Z)
 Set the minimum size of the top layer of the pyramid.
short version_no () const
 Version number for I/O.
virtual vcl_string is_a () const
 Name of the class.
virtual bool is_class (vcl_string const &s) const
 Does the name of the class match the argument?.
virtual
vimt_image_pyramid_builder
clone () const
 Create a copy on the heap and return base class pointer.
virtual void print_summary (vcl_ostream &os) const
 Print class to os.
virtual void b_write (vsl_b_ostream &bfs) const
 Save class to binary file stream.
virtual void b_read (vsl_b_istream &bfs)
 Load class from binary file stream.

Protected Member Functions

void checkPyr (vimt_image_pyramid &im_pyr, int n_levels) const
 Checks pyramid has at least n levels of correct type.
void emptyPyr (vimt_image_pyramid &im_pyr) const
 Deletes all data in im_pyr.
int n_levels (const vimt3d_image_3d_of< T > &base_image) const
 Select number of levels to use.
void get_pixel_size (double &dx, double &dy, double &dz, const vimt3d_image_3d_of< T > &image) const
 Compute real world size of pixel in image.

Private Attributes

int max_levels_
bool uniform_reduction_
 When true, subsample in x,y,z every time.
vil3d_image_view< T > work_im1_
vil3d_image_view< T > work_im2_
unsigned filter_width_
 Filter width (usually 5 for a 15851 filter, or 3 for a 121 filter).
unsigned min_x_size_
 Minimum size in X direction of top layer of pyramid.
unsigned min_y_size_
 Minimum size in Y direction of top layer of pyramid.
unsigned min_z_size_
 Minimum size in Z direction of top layer of pyramid.

Detailed Description

template<class T>
class vimt3d_gaussian_pyramid_builder_3d< T >

Build Gaussian pyramids of vimt3d_image_3d_of<T>.

Smooth with a Gaussian filter (1-5-8-5-1 by default) and subsample so that image at level i-1 is half the size of that at level i

Note that if set_uniform_reduction(false) and width of z pixels much more than that in x and y, then only smooth and sub-sample in x and y. This is useful for images with non-isotropic sampling (eg MR images) Similarly, if either x or y has significantly larger sample spacing, the others will be smoothed first. Note, currently only works for one dimension being significantly larger than the other two.

Definition at line 27 of file vimt3d_gaussian_pyramid_builder_3d.h.


Constructor & Destructor Documentation

Dflt ctor.

Definition at line 37 of file vimt3d_gaussian_pyramid_builder_3d.txx.

Destructor.

Definition at line 46 of file vimt3d_gaussian_pyramid_builder_3d.txx.


Member Function Documentation

template<class T >
void vimt3d_gaussian_pyramid_builder_3d< T >::b_read ( vsl_b_istream bfs) [virtual]

Load class from binary file stream.

Implements vimt_image_pyramid_builder.

Definition at line 415 of file vimt3d_gaussian_pyramid_builder_3d.txx.

template<class T >
void vimt3d_gaussian_pyramid_builder_3d< T >::b_write ( vsl_b_ostream bfs) const [virtual]

Save class to binary file stream.

Implements vimt_image_pyramid_builder.

Definition at line 404 of file vimt3d_gaussian_pyramid_builder_3d.txx.

template<class T >
void vimt3d_gaussian_pyramid_builder_3d< T >::build ( vimt_image_pyramid image_pyr,
const vimt_image im 
) const [virtual]

Build pyramid.

Implements vimt_image_pyramid_builder.

Definition at line 247 of file vimt3d_gaussian_pyramid_builder_3d.txx.

template<class T >
void vimt3d_gaussian_pyramid_builder_3d< T >::checkPyr ( vimt_image_pyramid im_pyr,
int  n_levels 
) const [protected]

Checks pyramid has at least n levels of correct type.

Checks pyramid has at least n levels.

Definition at line 221 of file vimt3d_gaussian_pyramid_builder_3d.txx.

template<class T >
vimt_image_pyramid_builder * vimt3d_gaussian_pyramid_builder_3d< T >::clone ( ) const [virtual]

Create a copy on the heap and return base class pointer.

Implements vimt_image_pyramid_builder.

Definition at line 389 of file vimt3d_gaussian_pyramid_builder_3d.txx.

template<class T >
void vimt3d_gaussian_pyramid_builder_3d< T >::emptyPyr ( vimt_image_pyramid im_pyr) const [protected]

Deletes all data in im_pyr.

Definition at line 212 of file vimt3d_gaussian_pyramid_builder_3d.txx.

template<class T >
void vimt3d_gaussian_pyramid_builder_3d< T >::extend ( vimt_image_pyramid image_pyr) const [virtual]

Extend pyramid.

The first layer of the pyramid must already be set.

Implements vimt_image_pyramid_builder.

Definition at line 334 of file vimt3d_gaussian_pyramid_builder_3d.txx.

template<class T>
unsigned vimt3d_gaussian_pyramid_builder_3d< T >::filter_width ( ) const [inline]

Current filter width.

Definition at line 72 of file vimt3d_gaussian_pyramid_builder_3d.h.

template<class T >
void vimt3d_gaussian_pyramid_builder_3d< T >::gauss_reduce ( vimt3d_image_3d_of< T > &  dest_im,
const vimt3d_image_3d_of< T > &  src_im 
) const

Smooth and subsample src_im to produce dest_im.

Applies filter in x,y and z, then samples every other pixel. Filter width defined by set_filter_width()

Applies 1-5-8-5-1 filter in x and y, then samples every other pixel.

Definition at line 156 of file vimt3d_gaussian_pyramid_builder_3d.txx.

template<class T >
void vimt3d_gaussian_pyramid_builder_3d< T >::get_pixel_size ( double &  dx,
double &  dy,
double &  dz,
const vimt3d_image_3d_of< T > &  image 
) const [protected]

Compute real world size of pixel in image.

Compute real world size of pixel.

Definition at line 317 of file vimt3d_gaussian_pyramid_builder_3d.txx.

template<class T>
virtual vcl_string vimt3d_gaussian_pyramid_builder_3d< T >::is_a ( ) const [virtual]

Name of the class.

Reimplemented from vimt_image_pyramid_builder.

template<class T >
bool vimt3d_gaussian_pyramid_builder_3d< T >::is_class ( vcl_string const &  s) const [virtual]

Does the name of the class match the argument?.

Reimplemented from vimt_image_pyramid_builder.

Definition at line 373 of file vimt3d_gaussian_pyramid_builder_3d.txx.

template<class T >
int vimt3d_gaussian_pyramid_builder_3d< T >::max_levels ( ) const [virtual]

Get the current maximum number levels allowed.

Implements vimt_image_pyramid_builder.

Definition at line 67 of file vimt3d_gaussian_pyramid_builder_3d.txx.

template<class T>
unsigned vimt3d_gaussian_pyramid_builder_3d< T >::min_x_size ( ) const [inline]

Get the minimum X size of the top layer of the pyramid.

Defaults to 5.

Definition at line 119 of file vimt3d_gaussian_pyramid_builder_3d.h.

template<class T>
unsigned vimt3d_gaussian_pyramid_builder_3d< T >::min_y_size ( ) const [inline]

Get the minimum Y size of the top layer of the pyramid.

Defaults to 5.

Definition at line 123 of file vimt3d_gaussian_pyramid_builder_3d.h.

template<class T>
unsigned vimt3d_gaussian_pyramid_builder_3d< T >::min_z_size ( ) const [inline]

Get the minimum Z size of the top layer of the pyramid.

Defaults to 5.

Definition at line 127 of file vimt3d_gaussian_pyramid_builder_3d.h.

template<class T >
int vimt3d_gaussian_pyramid_builder_3d< T >::n_levels ( const vimt3d_image_3d_of< T > &  base_image) const [protected]

Select number of levels to use.

Definition at line 74 of file vimt3d_gaussian_pyramid_builder_3d.txx.

template<class T >
vimt_image_pyramid * vimt3d_gaussian_pyramid_builder_3d< T >::new_image_pyramid ( ) const [virtual]

Create new (empty) pyramid on heap.

Caller responsible for its deletion

Implements vimt_image_pyramid_builder.

Definition at line 129 of file vimt3d_gaussian_pyramid_builder_3d.txx.

template<class T >
void vimt3d_gaussian_pyramid_builder_3d< T >::print_summary ( vcl_ostream &  os) const [virtual]

Print class to os.

Implements vimt_image_pyramid_builder.

Definition at line 397 of file vimt3d_gaussian_pyramid_builder_3d.txx.

template<class T >
double vimt3d_gaussian_pyramid_builder_3d< T >::scale_step ( ) const [virtual]

Scale step between levels.

Implements vimt_image_pyramid_builder.

Definition at line 138 of file vimt3d_gaussian_pyramid_builder_3d.txx.

template<class T >
void vimt3d_gaussian_pyramid_builder_3d< T >::set_filter_width ( unsigned  w)

Set current filter width (must be 5 at present).

Set current filter width (must be 3 or 5 at present).

Definition at line 145 of file vimt3d_gaussian_pyramid_builder_3d.txx.

template<class T >
void vimt3d_gaussian_pyramid_builder_3d< T >::set_max_levels ( int  max_l) [virtual]

Define maximum number of levels to build.

Limits levels built in subsequent calls to build() Useful efficiency measure. As build() only takes a shallow copy of the original image, using max_l=1 avoids any copying or smoothing.

Limits levels built in subsequent calls to build()

Implements vimt_image_pyramid_builder.

Definition at line 54 of file vimt3d_gaussian_pyramid_builder_3d.txx.

template<class T >
void vimt3d_gaussian_pyramid_builder_3d< T >::set_min_size ( unsigned  X,
unsigned  Y,
unsigned  Z 
) [virtual]

Set the minimum size of the top layer of the pyramid.

Definition at line 241 of file vimt3d_gaussian_pyramid_builder_3d.txx.

template<class T>
void vimt3d_gaussian_pyramid_builder_3d< T >::set_uniform_reduction ( bool  b) [inline]

When true, subsample in x,y,z every time.

When not true and width of z pixels much more than that in x and y, then only smooth and sub-sample in x and y

Definition at line 85 of file vimt3d_gaussian_pyramid_builder_3d.h.

template<class T>
bool vimt3d_gaussian_pyramid_builder_3d< T >::uniform_reduction ( ) const [inline]

When true, subsample in x,y,z every time.

When not true and width of z pixels much more than that in x and y, then only smooth and sub-sample in x and y

Definition at line 80 of file vimt3d_gaussian_pyramid_builder_3d.h.

template<class T >
short vimt3d_gaussian_pyramid_builder_3d< T >::version_no ( ) const

Version number for I/O.

Reimplemented from vimt_image_pyramid_builder.

Definition at line 381 of file vimt3d_gaussian_pyramid_builder_3d.txx.


Member Data Documentation

template<class T>
unsigned vimt3d_gaussian_pyramid_builder_3d< T >::filter_width_ [private]

Filter width (usually 5 for a 15851 filter, or 3 for a 121 filter).

Definition at line 39 of file vimt3d_gaussian_pyramid_builder_3d.h.

template<class T>
int vimt3d_gaussian_pyramid_builder_3d< T >::max_levels_ [private]

Definition at line 29 of file vimt3d_gaussian_pyramid_builder_3d.h.

template<class T>
unsigned vimt3d_gaussian_pyramid_builder_3d< T >::min_x_size_ [private]

Minimum size in X direction of top layer of pyramid.

Definition at line 42 of file vimt3d_gaussian_pyramid_builder_3d.h.

template<class T>
unsigned vimt3d_gaussian_pyramid_builder_3d< T >::min_y_size_ [private]

Minimum size in Y direction of top layer of pyramid.

Definition at line 45 of file vimt3d_gaussian_pyramid_builder_3d.h.

template<class T>
unsigned vimt3d_gaussian_pyramid_builder_3d< T >::min_z_size_ [private]

Minimum size in Z direction of top layer of pyramid.

Definition at line 48 of file vimt3d_gaussian_pyramid_builder_3d.h.

template<class T>
bool vimt3d_gaussian_pyramid_builder_3d< T >::uniform_reduction_ [private]

When true, subsample in x,y,z every time.

When not true and width of z pixels much more than that in x and y, then only smooth and sub-sample in x and y

Definition at line 34 of file vimt3d_gaussian_pyramid_builder_3d.h.

template<class T>
vil3d_image_view<T> vimt3d_gaussian_pyramid_builder_3d< T >::work_im1_ [mutable, private]

Definition at line 36 of file vimt3d_gaussian_pyramid_builder_3d.h.

template<class T>
vil3d_image_view<T> vimt3d_gaussian_pyramid_builder_3d< T >::work_im2_ [mutable, private]

Definition at line 36 of file vimt3d_gaussian_pyramid_builder_3d.h.


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