MeVisLab Toolbox Reference
ml::SimilarVectorDirectionsClusterAlgorithm Class Reference

Implementation of a clustering algorithm for vector data types. More...

#include <mlSimilarVectorDirectionsClusterAlgorithm.h>

Inheritance diagram for ml::SimilarVectorDirectionsClusterAlgorithm:
ml::ClusterAlgorithm< const void *, SimilarVectorDirectionsClusterAlgorithm > ml::ClusterAlgorithmBase

Public Types

typedef ClusterAlgorithm< const void *, SimilarVectorDirectionsClusterAlgorithm >::ClusterVoxelType SimilarVectorDirectionsClusterVoxelType
 Voxel type to be used for the VectorClusterAlgorithm. More...
 
- Public Types inherited from ml::ClusterAlgorithm< const void *, SimilarVectorDirectionsClusterAlgorithm >
typedef const void * ClusterVoxelType
 The used type of the voxels, needed by derived classes. More...
 

Public Member Functions

 SimilarVectorDirectionsClusterAlgorithm (const ComputeClusterParameters &parameters, Clusters *clusters)
 Constructor. More...
 
MLErrorCode runClustering ()
 
ML_FORCE_INLINE double calcDotProduct (SimilarVectorDirectionsClusterVoxelType vec1Ptr, SimilarVectorDirectionsClusterVoxelType vec2Ptr)
 Calculates the dot product of two n-dimensional vectors. More...
 
ML_FORCE_INLINE bool isInTolerance (SimilarVectorDirectionsClusterVoxelType neighborValue, SimilarVectorDirectionsClusterVoxelType currentValue)
 Tolerance calculation for vector images. More...
 
- Public Member Functions inherited from ml::ClusterAlgorithm< const void *, SimilarVectorDirectionsClusterAlgorithm >
 ClusterAlgorithm (const ComputeClusterParameters &parameters, Clusters *clusters)
 Constructor to be used. More...
 
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. More...
 
virtual ~ClusterAlgorithmBase ()
 Default virtual destructor. More...
 
bool hasResults () const
 Returns whether getCluster() and getClusterOfVoxel() contains cluster data. More...
 

Static Public Member Functions

static ML_FORCE_INLINE SimilarVectorDirectionsClusterVoxelType getVoxel (void *position)
 Get the typed voxel value for current position. More...
 
static ML_FORCE_INLINE MLdouble getVoxelAsDouble (void *)
 
static ML_FORCE_INLINE const void * convertBackgroundValue (MLdouble)
 

Additional Inherited Members

- 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< const void *, SimilarVectorDirectionsClusterAlgorithm >
MLuint updateClusterRefForNeighbor (void *neighborVoxelPtr, MLint x, MLint y, MLint z, const void * currentValue, MLuint currentClusterRef)
 Checks if neighbor at position x,y,z belongs to the same cluster given by currentClusterRef. More...
 
MLErrorCode calcClustersForSlices ()
 Template applying cluster calculations for one slice. More...
 
- Protected Member Functions inherited from ml::ClusterAlgorithmBase
void setInSliceVoxelType (MLDataType dt)
 Sets voxel type of input slices. More...
 
void freeInSliceData ()
 Releases memory of input image slices. More...
 
void storeNextSlice (SubImage &slice)
 Sets next image data, expects the data to be managed by memory manager. More...
 
MLErrorCode loadNextSlice (MLint sliceNr, const ImageVector &inImgExt)
 Gets next image data. More...
 
MLErrorCode loadMaskSlice (TSubImage< MLint8 > &slice, MLint sliceNr, const ImageVector &inImgExt) const
 Gets current slice of the mask image. More...
 
MLuint mergeClusterReference (MLint x, MLint y, MLint z, MLuint currClusterRef)
 Merges a cluster reference currClusterRef for position (x,y,z). More...
 
void setResultFlag (bool result)
 Sets internal result flag to result. More...
 
- Static Protected Member Functions inherited from ml::ClusterAlgorithm< const void *, SimilarVectorDirectionsClusterAlgorithm >
static const void * 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. More...
 
Clusters_clusters
 Result clusters. More...
 
SubImage _currentSlices [_NR_OF_SUBIMAGES]
 do not load the whole image into memory, only keep two slices at once More...
 
ComputeClusterParameters _parameters
 

Detailed Description

Implementation of a clustering algorithm for vector data types.

It uses internally two data structures. One (class ClusterRefVolume) holds references for every image voxel to a field of cluster informations (here ClusterRefCollection). For every image voxel will be checked whether the difference between the directions of neighboring vectors is within a similarity tolerance. Merging adjacent cluster is done within ClusterRefCollection.

Definition at line 30 of file mlSimilarVectorDirectionsClusterAlgorithm.h.

Member Typedef Documentation

◆ SimilarVectorDirectionsClusterVoxelType

Constructor & Destructor Documentation

◆ SimilarVectorDirectionsClusterAlgorithm()

ml::SimilarVectorDirectionsClusterAlgorithm::SimilarVectorDirectionsClusterAlgorithm ( const ComputeClusterParameters parameters,
Clusters clusters 
)
inline

Constructor.

Definition at line 38 of file mlSimilarVectorDirectionsClusterAlgorithm.h.

Member Function Documentation

◆ calcDotProduct()

ML_FORCE_INLINE double ml::SimilarVectorDirectionsClusterAlgorithm::calcDotProduct ( SimilarVectorDirectionsClusterVoxelType  vec1Ptr,
SimilarVectorDirectionsClusterVoxelType  vec2Ptr 
)
inline

Calculates the dot product of two n-dimensional vectors.

Definition at line 74 of file mlSimilarVectorDirectionsClusterAlgorithm.h.

◆ convertBackgroundValue()

static ML_FORCE_INLINE const void* ml::SimilarVectorDirectionsClusterAlgorithm::convertBackgroundValue ( MLdouble  )
inlinestatic

Definition at line 109 of file mlSimilarVectorDirectionsClusterAlgorithm.h.

◆ getVoxel()

static ML_FORCE_INLINE SimilarVectorDirectionsClusterVoxelType ml::SimilarVectorDirectionsClusterAlgorithm::getVoxel ( void *  position)
inlinestatic

Get the typed voxel value for current position.

Definition at line 63 of file mlSimilarVectorDirectionsClusterAlgorithm.h.

◆ getVoxelAsDouble()

static ML_FORCE_INLINE MLdouble ml::SimilarVectorDirectionsClusterAlgorithm::getVoxelAsDouble ( void *  )
inlinestatic

Definition at line 68 of file mlSimilarVectorDirectionsClusterAlgorithm.h.

◆ isInTolerance()

ML_FORCE_INLINE bool ml::SimilarVectorDirectionsClusterAlgorithm::isInTolerance ( SimilarVectorDirectionsClusterVoxelType  neighborValue,
SimilarVectorDirectionsClusterVoxelType  currentValue 
)
inline

Tolerance calculation for vector images.

Needed by template function updateClusterRefForNeighbor in base class.

Definition at line 102 of file mlSimilarVectorDirectionsClusterAlgorithm.h.

References ml::abs().

◆ runClustering()

MLErrorCode ml::SimilarVectorDirectionsClusterAlgorithm::runClustering ( )
inline

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