Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes

mitk::LabeledImageVolumeCalculator Class Reference

Class for calculating the volume (or area) for each label in a labeled image. More...

#include <mitkLabeledImageVolumeCalculator.h>

List of all members.

Public Types

typedef std::vector< double > VolumeVector
typedef std::vector< Point3D > PointVector
typedef
LabeledImageVolumeCalculator 
Self
typedef itk::Object Superclass
typedef itk::SmartPointer< SelfPointer
typedef itk::SmartPointer
< const Self
ConstPointer

Public Member Functions

virtual const char * GetClassName () const
virtual void SetImage (const mitk::Image *_arg)
virtual void Calculate ()
double GetVolume (unsigned int label) const
const Point3D & GetCentroid (unsigned int label) const
const VolumeVectorGetVolumes () const
const PointVectorGetCentroids () const

Static Public Member Functions

static Pointer New ()

Protected Member Functions

 LabeledImageVolumeCalculator ()
virtual ~LabeledImageVolumeCalculator ()
template<typename TPixel , unsigned int VImageDimension>
void _InternalCalculateVolumes (itk::Image< TPixel, VImageDimension > *image, LabeledImageVolumeCalculator *volumeCalculator, Geometry3D *geometry)

Protected Attributes

ImageTimeSelector::Pointer m_InputTimeSelector
Image::ConstPointer m_Image
VolumeVector m_VolumeVector
PointVector m_CentroidVector
Point3D m_DummyPoint

Detailed Description

Class for calculating the volume (or area) for each label in a labeled image.

Labels are expected to be of an unsigned integer type.

TODO: Extend class for time resolved images

Definition at line 42 of file mitkLabeledImageVolumeCalculator.h.


Member Typedef Documentation

typedef itk::SmartPointer<const Self> mitk::LabeledImageVolumeCalculator::ConstPointer

Definition at line 49 of file mitkLabeledImageVolumeCalculator.h.

Definition at line 49 of file mitkLabeledImageVolumeCalculator.h.

typedef std::vector< Point3D > mitk::LabeledImageVolumeCalculator::PointVector

Definition at line 47 of file mitkLabeledImageVolumeCalculator.h.

Definition at line 49 of file mitkLabeledImageVolumeCalculator.h.

Definition at line 49 of file mitkLabeledImageVolumeCalculator.h.

typedef std::vector< double > mitk::LabeledImageVolumeCalculator::VolumeVector

Definition at line 46 of file mitkLabeledImageVolumeCalculator.h.


Constructor & Destructor Documentation

mitk::LabeledImageVolumeCalculator::LabeledImageVolumeCalculator (  ) [protected]
mitk::LabeledImageVolumeCalculator::~LabeledImageVolumeCalculator (  ) [protected, virtual]

Definition at line 30 of file mitkLabeledImageVolumeCalculator.cpp.


Member Function Documentation

template<typename TPixel , unsigned int VImageDimension>
void mitk::LabeledImageVolumeCalculator::_InternalCalculateVolumes ( itk::Image< TPixel, VImageDimension > *  image,
LabeledImageVolumeCalculator volumeCalculator,
Geometry3D geometry 
) [protected]

Definition at line 92 of file mitkLabeledImageVolumeCalculator.cpp.

{
  typedef itk::Image< TPixel, VImageDimension > ImageType;
  typedef typename ImageType::IndexType IndexType;
  typedef itk::ImageRegionConstIteratorWithIndex< ImageType > IteratorType;

  // Reset volume and centroid vectors
  m_VolumeVector.clear();
  m_CentroidVector.clear();

  // Iterate over image and determine number of voxels and centroid
  // per label
  IteratorType it( image, image->GetBufferedRegion() );
  for ( it.GoToBegin(); !it.IsAtEnd(); ++it )
  {
    const IndexType &index = it.GetIndex();
    unsigned int pixel = static_cast<unsigned int>( it.Get() );

    if ( m_VolumeVector.size() <= pixel )
    {
      m_VolumeVector.resize( pixel + 1 );
      m_CentroidVector.resize( pixel + 1 );
    }

    m_VolumeVector[pixel] += 1.0;

    m_CentroidVector[pixel][0] += index[0];
    m_CentroidVector[pixel][1] += index[1];
    m_CentroidVector[pixel][2] += index[2];
  }

  // Calculate voxel volume from spacing
  const Vector3D &spacing = geometry->GetSpacing();
  double voxelVolume = spacing[0] * spacing[1] * spacing[2];

  // Calculate centroid (in world coordinates) and volumes for all labels
  for ( unsigned int i = 0; i < m_VolumeVector.size(); ++i )
  {
    if ( m_VolumeVector[i] > 0.0 )
    {
      m_CentroidVector[i][0] /= m_VolumeVector[i];
      m_CentroidVector[i][1] /= m_VolumeVector[i];
      m_CentroidVector[i][2] /= m_VolumeVector[i];
      geometry->IndexToWorld( m_CentroidVector[i], m_CentroidVector[i] );
void mitk::LabeledImageVolumeCalculator::Calculate (  ) [virtual]

Definition at line 66 of file mitkLabeledImageVolumeCalculator.cpp.

References m_CentroidVector.

{
  return m_CentroidVector;
}


void LabeledImageVolumeCalculator::Calculate()
{
  if ( m_Image.IsNull() )
  {
    itkExceptionMacro( << "Image not set!" );
    return;
  }

  m_InputTimeSelector->SetInput( m_Image );

  //const TimeSlicedGeometry *timeSlicedGeometry = m_Image->GetTimeSlicedGeometry();
  //for( unsigned int t = 0; t < timeSlicedGeometry->GetTimeSteps(); ++t )
  //{
  m_InputTimeSelector->SetTimeNr( 0 );
  m_InputTimeSelector->UpdateLargestPossibleRegion();

  AccessByItk_2( 
    m_InputTimeSelector->GetOutput(),
const Point3D & mitk::LabeledImageVolumeCalculator::GetCentroid ( unsigned int  label ) const

Definition at line 43 of file mitkLabeledImageVolumeCalculator.cpp.

{
const LabeledImageVolumeCalculator::PointVector & mitk::LabeledImageVolumeCalculator::GetCentroids (  ) const

Definition at line 60 of file mitkLabeledImageVolumeCalculator.cpp.

virtual const char* mitk::LabeledImageVolumeCalculator::GetClassName (  ) const [virtual]
double mitk::LabeledImageVolumeCalculator::GetVolume ( unsigned int  label ) const

Definition at line 35 of file mitkLabeledImageVolumeCalculator.cpp.

{
}


double LabeledImageVolumeCalculator::GetVolume( unsigned int label ) const
{
const LabeledImageVolumeCalculator::VolumeVector & mitk::LabeledImageVolumeCalculator::GetVolumes (  ) const

Definition at line 53 of file mitkLabeledImageVolumeCalculator.cpp.

static Pointer mitk::LabeledImageVolumeCalculator::New (  ) [static]
virtual void mitk::LabeledImageVolumeCalculator::SetImage ( const mitk::Image _arg ) [virtual]

Member Data Documentation

Definition at line 89 of file mitkLabeledImageVolumeCalculator.h.

Referenced by Calculate().

Definition at line 91 of file mitkLabeledImageVolumeCalculator.h.

Definition at line 85 of file mitkLabeledImageVolumeCalculator.h.

ImageTimeSelector::Pointer mitk::LabeledImageVolumeCalculator::m_InputTimeSelector [protected]

Definition at line 82 of file mitkLabeledImageVolumeCalculator.h.

Referenced by LabeledImageVolumeCalculator().

Definition at line 88 of file mitkLabeledImageVolumeCalculator.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines