Jerome Piovano

Research in Medical Imaging and Computer Vision

Segmentation Class Template Reference

Segmentation of an image thanks to the Level-Set method. More...

#include <Segmentation.h>

List of all members.


Public Types

typedef BaseImage< DIM, Pixel > ImageType
typedef Initializer< DIM,
float > 
Initializer
typedef LevelSet< DIM, float > LevelSet
typedef LevelSet::Index Index
typedef SegmentationModule<
DIM, float > 
SegmentationModule
typedef std::vector< SegmentationModule * > Modules
typedef float(*) ModuleAssembler (Modules &, const LevelSet &, const Index &, int &)
typedef Schemes< DIM, float > Schemes
typedef Pixels::RGB< unsigned
char > 
RGBPixel
typedef BaseImage< DIM, RGBPixelColorImageType

Public Member Functions

Constructors - Destructor


 Segmentation (LevelSet *_phi, Initializer *_init, ImageType *_data=NULL, BaseImage< DIM, bool > *_mask=NULL, float _dt=0.5f, int _reinit_freq=1)
 Constructor.
virtual ~Segmentation ()
 Destructor.
Access/Modif data terms


void add_module (SegmentationModule &_sm)
 Add a module to the list of modules.
void remove_module (SegmentationModule &_sm)
 Remove the module from the list of modules.
void set_module_assembler (ModuleAssembler _assembler)
 Set the module assembler.
void set_level_set (LevelSet &_phi)
 Set the LevelSet.
void set_initializer (Initializer &_init)
 Set the Initializer.
void set_data_term (ImageType &_data)
 Set the data term.
void set_mask (BaseImage< DIM, bool > &_mask)
 Add a mask to the segmentation process, the level set will evolve only in this mask.
float & dt ()
 Time step of the evolution.
int & reinit_freq ()
 Frequence of reinitialization of the band.
Results of the segmentation


ColorImageType get_result (RGBPixel neg=RGBPixel(0, 0, 0), RGBPixel pos=RGBPixel(255, 255, 255))
 Return an image on which the contour is drawn on the original image.
ImageType get_binary_result ()
 Return a binary image of the result of the segmentation.
ImageType get_speed (int _module=0)
 Return an image representing the speed induced by the segmentation module '_module'. i=0 mean the final speed, combined by the module assembler.
float get_energy ()
 Compute and return the energy of the segmentation.
segmentation


void segment (int nbiter=30, std::string evodir="", RGBPixel neg=RGBPixel(0, 0, 0), RGBPixel pos=RGBPixel(255, 255, 255))
 Start the segmentation. if nbiter < 0, stop at convergence (if no convergence, may not stop).
bool stop_condition (int iter, int nbiter)
 if true, stop of the segmentation process . CAUTION ! have to be done before reinitialisation process
void init ()
 Initialize the segmentation (not protected because used in the GUI).
void iterate (int iter, int nbiter)
 Compute one iteration (not protected because used in the GUI).

Protected Attributes

Member data


LevelSetm_phi
 Level set.
BaseImage< DIM, float > m_dphi
 Variations of the level set.
Initializerm_init
 Initializer.
ImageTypem_data
 Image to segment.
std::vector< SegmentationModule * > m_sm
 List of segmentation modules.
ModuleAssembler m_assembler
 Functor that compute the final speed given the modules, LevelSet and position.
BaseImage< DIM, bool > * m_mask
 Boolean mask where the segmentation is to be applied (TODO si not null, croper absolument toutes les images).
int m_reinit_freq
 Frequence of reinitialization of the band.
float m_dt
 Time step of the evolution.
bool m_stop_condition
 if true, stop of the segmentation process

Detailed Description

template<unsigned DIM, typename Pixel = float>
class segmentation::Segmentation< DIM, Pixel >

Segmentation of an image thanks to the Level-Set method.

Author:
Mikael Rousson
The constructor takes 3 objects in parameters :

The 'modules' are the object that are giving speed term to the level set.

Note:
_dt <= 1 , for stability
Examples:

2D_Gaussian.C, 2D_GeodesicActiveContour.C, 2D_LocalGaussian.C, 2D_LocalStats.C, 2D_Parzen.C, 2D_SoftShapePrior.C, and 3D_ChanVese.C.

Definition at line 61 of file Segmentation.h.


Constructor & Destructor Documentation

Segmentation ( LevelSet _phi,
Initializer _init,
ImageType _data = NULL,
BaseImage< DIM, bool > *  _mask = NULL,
float  _dt = 0.5f,
int  _reinit_freq = 1 
) [inline]

Constructor.

Parameters:
_phi  level set that will segment the image
_init  Reinitializer of the level-set
_data  Image to segment (NULL if no data term)
_mask  Binary mask to restrict evolution of the level set (NULL if no mask)
_dt  Time step of the evolution (TODO automatic estimation via CFL conditions => a mettre direct dans m_assembler !!!! )
_reinit_freq  frequence of Reinitialization of the LevelSet

Definition at line 175 of file Segmentation.h.

00176                 :m_phi(_phi), m_dphi(_phi->shape()), m_init(_init), m_data(_data), m_assembler(&sum), m_mask(_mask), m_reinit_freq(_reinit_freq), m_dt(_dt), m_stop_condition(false)
00177         { 
00178                 if (_data != NULL && _data->shape() != _phi->shape()) {
00179                         std::cerr << "Error : Shape of the data term and shape of the LevelSet don't match"  << std::endl;
00180                         exit(1);
00181                 }
00182                 if (_mask != NULL && _mask->shape() != _phi->shape()) {
00183                         std::cerr << "Error : Shape of the mask and shape of the LevelSet don't match"  << std::endl;
00184                         exit(1);
00185                 }
00186         }


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

For further information, please contact Jerome Piovano - Last update 2008-02-08