MeVisLab Toolbox Reference
ml::IdenticalIntensitiesClusterAlgorithm< DATATYPE > Class Template Reference

Implementation of a clustering algorithm checking for identical image intensity values. More...

#include <mlIdenticalIntensitiesClusterAlgorithm.h>

Inheritance diagram for ml::IdenticalIntensitiesClusterAlgorithm< DATATYPE >:
ml::ClusterAlgorithm< DATATYPE, IdenticalIntensitiesClusterAlgorithm< DATATYPE > > ml::ClusterAlgorithmBase

Public Member Functions

 IdenticalIntensitiesClusterAlgorithm (const ComputeClusterParameters &parameters, Clusters *clusters)
 
ML_FORCE_INLINE bool isInTolerance (DATATYPE neighborValue, DATATYPE currentValue)
 Tolerance calculation for scalar images.
 
- Public Member Functions inherited from ml::ClusterAlgorithm< DATATYPE, IdenticalIntensitiesClusterAlgorithm< DATATYPE > >
 ClusterAlgorithm (const ComputeClusterParameters &parameters, Clusters *clusters)
 Constructor to be used.
 
MLErrorCode runClustering ()
 
MLErrorCode processSlice (MLint zi, const ImageVector &inputImageExtent, TSubImage< MLint8 > &inMaskSlice)
 
- Public Member Functions inherited from ml::ClusterAlgorithmBase
 ClusterAlgorithmBase (const ComputeClusterParameters &parameters, Clusters *clusters)
 Constructor to be used.
 
virtual ~ClusterAlgorithmBase ()
 Default virtual destructor.
 
bool hasResults () const
 Returns whether getCluster() and getClusterOfVoxel() contains cluster data.
 

Static Public Member Functions

static ML_FORCE_INLINE DATATYPE getVoxel (void *position)
 Get the typed voxel value for current position.
 
static ML_FORCE_INLINE MLdouble getVoxelAsDouble (void *position)
 

Additional Inherited Members

- Public Types inherited from ml::ClusterAlgorithm< DATATYPE, IdenticalIntensitiesClusterAlgorithm< DATATYPE > >
typedef DATATYPE ClusterVoxelType
 The used type of the voxels, needed by derived classes.
 
- Protected Types inherited from ml::ClusterAlgorithmBase
enum  { _NR_OF_SUBIMAGES = 2 }
 We do not load the whole image into memory, only keep two slices at once. More...
 
- Protected Member Functions inherited from ml::ClusterAlgorithm< DATATYPE, IdenticalIntensitiesClusterAlgorithm< DATATYPE > >
MLuint updateClusterRefForNeighbor (void *neighborVoxelPtr, MLint x, MLint y, MLint z, DATATYPE currentValue, MLuint currentClusterRef)
 Checks if neighbor at position x,y,z belongs to the same cluster given by currentClusterRef.
 
MLErrorCode calcClustersForSlices ()
 Template applying cluster calculations for one slice.
 
- Protected Member Functions inherited from ml::ClusterAlgorithmBase
void setInSliceVoxelType (MLDataType dt)
 Sets voxel type of input slices.
 
void freeInSliceData ()
 Releases memory of input image slices.
 
void storeNextSlice (SubImage &slice)
 Sets next image data, expects the data to be managed by memory manager.
 
MLErrorCode loadNextSlice (MLint sliceNr, const ImageVector &inImgExt)
 Gets next image data.
 
MLErrorCode loadMaskSlice (TSubImage< MLint8 > &slice, MLint sliceNr, const ImageVector &inImgExt) const
 Gets current slice of the mask image.
 
MLuint mergeClusterReference (MLint x, MLint y, MLint z, MLuint currClusterRef)
 Merges a cluster reference currClusterRef for position (x,y,z).
 
void setResultFlag (bool result)
 Sets internal result flag to result.
 
- Static Protected Member Functions inherited from ml::ClusterAlgorithm< DATATYPE, IdenticalIntensitiesClusterAlgorithm< DATATYPE > >
static DATATYPE convertBackgroundValue (MLdouble backgroundValue)
 
- Protected Attributes inherited from ml::ClusterAlgorithmBase
enum ml::ClusterAlgorithmBase:: { ... }  NumInImagesEnum
 We do not load the whole image into memory, only keep two slices at once.
 
Clusters_clusters
 Result clusters.
 
SubImage _currentSlices [_NR_OF_SUBIMAGES]
 do not load the whole image into memory, only keep two slices at once
 
ComputeClusterParameters _parameters
 

Detailed Description

template<typename DATATYPE>
class ml::IdenticalIntensitiesClusterAlgorithm< DATATYPE >

Implementation of a clustering algorithm checking for identical image intensity values.

It uses internally two data structures. One (class ClusterRefVolume) holds references for every image voxel to a field of cluster informations (here ClusterRefCollection). Every image voxel will be checked whether it belongs to the background or if not, if it has neighbors with the same gray value. Merging adjacent cluster is done within ClusterRefCollection.

Definition at line 30 of file mlIdenticalIntensitiesClusterAlgorithm.h.

Constructor & Destructor Documentation

◆ IdenticalIntensitiesClusterAlgorithm()

template<typename DATATYPE >
ml::IdenticalIntensitiesClusterAlgorithm< DATATYPE >::IdenticalIntensitiesClusterAlgorithm ( const ComputeClusterParameters & parameters,
Clusters * clusters )
inline

Definition at line 33 of file mlIdenticalIntensitiesClusterAlgorithm.h.

Member Function Documentation

◆ getVoxel()

Get the typed voxel value for current position.

Definition at line 38 of file mlIdenticalIntensitiesClusterAlgorithm.h.

References mlrange_cast().

◆ getVoxelAsDouble()

template<typename DATATYPE >
static ML_FORCE_INLINE MLdouble ml::IdenticalIntensitiesClusterAlgorithm< DATATYPE >::getVoxelAsDouble ( void * position)
inlinestatic

Definition at line 43 of file mlIdenticalIntensitiesClusterAlgorithm.h.

◆ isInTolerance()

template<typename DATATYPE >
ML_FORCE_INLINE bool ml::IdenticalIntensitiesClusterAlgorithm< DATATYPE >::isInTolerance ( DATATYPE neighborValue,
DATATYPE currentValue )
inline

Tolerance calculation for scalar images.

Here the test is for equality (zero tolerance). Needed by template function updateClusterRefForNeighbor in base class.

Definition at line 50 of file mlIdenticalIntensitiesClusterAlgorithm.h.

References mlrange_cast().


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