Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

vimt3d_gaussian_pyramid_builder_3d< T > Class Template Reference

#include <vimt3d_gaussian_pyramid_builder_3d.h>

Inheritance diagram for vimt3d_gaussian_pyramid_builder_3d< T >:

Inheritance graph
[legend]
List of all members.

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 26 of file vimt3d_gaussian_pyramid_builder_3d.h.

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_builderclone () 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.


Constructor & Destructor Documentation

template<class T>
vimt3d_gaussian_pyramid_builder_3d< T >::vimt3d_gaussian_pyramid_builder_3d  ) 
 

Dflt ctor.

Definition at line 23 of file vimt3d_gaussian_pyramid_builder_3d.txx.

template<class T>
vimt3d_gaussian_pyramid_builder_3d< T >::~vimt3d_gaussian_pyramid_builder_3d  )  [virtual]
 

Destructor.

Definition at line 32 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 386 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 375 of file vimt3d_gaussian_pyramid_builder_3d.txx.

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

Build pyramid.

Implements vimt_image_pyramid_builder.

Definition at line 233 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.

Definition at line 207 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 360 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 198 of file vimt3d_gaussian_pyramid_builder_3d.txx.

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

Extend pyramid.

The first layer of the pyramid must already be set.

Implements vimt_image_pyramid_builder.

Definition at line 304 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 71 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()

Definition at line 142 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.

Definition at line 287 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 344 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 53 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 118 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 122 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 126 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 60 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 115 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 368 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 124 of file vimt3d_gaussian_pyramid_builder_3d.txx.

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

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

Definition at line 131 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.

Implements vimt_image_pyramid_builder.

Definition at line 40 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 227 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 84 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 79 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 352 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 38 of file vimt3d_gaussian_pyramid_builder_3d.h.

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

Definition at line 28 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 41 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 44 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 47 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 33 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 35 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 35 of file vimt3d_gaussian_pyramid_builder_3d.h.


The documentation for this class was generated from the following files:
Generated on Thu Jan 10 14:44:23 2008 for contrib/mul/vimt3d by  doxygen 1.4.4