i3dlib

Documentation

i3d::ExplicitSchemeFunction< VOXEL > Class Template Reference

This class is together with class ExplicitSchemeFunction the abstract class for segmentation methods and image preproccessing filters, which compute the solution of underlying PDE on the whole domain (i.e. whole image). The explicit scheme in time is implemented in these two sister classes. The finite difference solver implemented in these two "sister" classes computes the update to the solution and the "ideal" (possible maximal) time step in every iteration. The computed update is then added to the solution. These two "sister" classes implements only the solver, the user should instantiate some offspring to get the full functional filter or segmentation method. More...

#include <LevelSet.h>

Inheritance diagram for i3d::ExplicitSchemeFunction< VOXEL >:

i3d::PDESolverFunction< VOXEL > i3d::GradientMagnitudeEstimator< VOXEL > i3d::MCDEFilterFunction< VOXEL > i3d::MCFFilterFunction< VOXEL > i3d::PMFilterFunction< VOXEL > i3d::SpatialDerivatives< VOXEL > List of all members.

Public Member Functions

virtual void ComputeUpdateData ()
 Computes the update to the buffer valarray.
virtual VOXEL ComputeUpdate (size_t *neighbors, size_t center)
 Compute the update value for one voxel, returns the ideal timestep for the particular voxel.
virtual void UpdateTimeStep (size_t *neighbors, size_t index, VOXEL tempTimeStep)
 Udates the Globaltime step from the value returned by ComputeUpdate() method.
void SetConductance (VOXEL c)
 Set the conductance parameter. This parameter is used in the anisotropic diffusion filters.
VOXEL GetConductance ()
 Get the conductance parameter.

Public Attributes

valarray< VOXEL > BufferArray
 in this val array is saved the update buffer.

Detailed Description

template<class VOXEL>
class i3d::ExplicitSchemeFunction< VOXEL >

This class is together with class ExplicitSchemeFunction the abstract class for segmentation methods and image preproccessing filters, which compute the solution of underlying PDE on the whole domain (i.e. whole image). The explicit scheme in time is implemented in these two sister classes. The finite difference solver implemented in these two "sister" classes computes the update to the solution and the "ideal" (possible maximal) time step in every iteration. The computed update is then added to the solution. These two "sister" classes implements only the solver, the user should instantiate some offspring to get the full functional filter or segmentation method.

Thre finite difference solver which is implemented in these two "sister" classes primarilly serves to find solutions in the whole domain (update every voxel in every timestep), the implemented numerical scheme is explicit, so there are some typical limitation to the time step (the CFL condition and so on). The finite difference solver implemented in this class and in class ExplicitScheme computes the update first in the interior image (not taking into account the boundary voxels). The update in boundary voxels is computed separately. This design allows to compute the filter as fast as possible. The neighbourhood of the voxel is in the interior image computed only for one pixel, the other neighbourhoods are computed only with incrementation. The neighbourhoods on boundary voxels are computed to fulfill the Zero-Flux Neumann boundary condition. The provided neighbourhood can differ. The Four or Six-Neighbourhood is provided for discretisations of some "simple" equations. If these neighbourhoods are not sufficient, the user can by setting Epsilon > 0.0 turn to computations with Eight or Eighteen neighbourhoods.

Method ComputeUpdateData() calls for every voxel the ComputeUpdate() method in every time step. The method ComputeUpdate() computes the update for the particular voxel and save it in the buffer array and returns the maximum possible value of the timestep for the particular voxel. This time step value is compared to the up to now maximum possible time step by UpdateTimeStep() method and if the new timestep is lower than the up to now time step, the new value is the new global time step.

Author:
Jan Hubený xhubeny@fi.muni.cz
Date:
2005


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