Class for calculating the volume (or area) for each label in a labeled image. More...
#include <mitkLabeledImageVolumeCalculator.h>
Public Types | |
typedef std::vector< double > | VolumeVector |
typedef std::vector< Point3D > | PointVector |
typedef LabeledImageVolumeCalculator | Self |
typedef itk::Object | Superclass |
typedef itk::SmartPointer< Self > | Pointer |
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 VolumeVector & | GetVolumes () const |
const PointVector & | GetCentroids () 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 |
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.
typedef itk::SmartPointer<const Self> mitk::LabeledImageVolumeCalculator::ConstPointer |
Definition at line 49 of file mitkLabeledImageVolumeCalculator.h.
typedef itk::SmartPointer<Self> mitk::LabeledImageVolumeCalculator::Pointer |
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.
typedef itk::Object mitk::LabeledImageVolumeCalculator::Superclass |
Definition at line 49 of file mitkLabeledImageVolumeCalculator.h.
typedef std::vector< double > mitk::LabeledImageVolumeCalculator::VolumeVector |
Definition at line 46 of file mitkLabeledImageVolumeCalculator.h.
mitk::LabeledImageVolumeCalculator::LabeledImageVolumeCalculator | ( | ) | [protected] |
Definition at line 22 of file mitkLabeledImageVolumeCalculator.cpp.
References m_InputTimeSelector, and New().
mitk::LabeledImageVolumeCalculator::~LabeledImageVolumeCalculator | ( | ) | [protected, virtual] |
Definition at line 30 of file mitkLabeledImageVolumeCalculator.cpp.
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] |
Referenced by LabeledImageVolumeCalculator().
virtual void mitk::LabeledImageVolumeCalculator::SetImage | ( | const mitk::Image * | _arg ) | [virtual] |
Definition at line 89 of file mitkLabeledImageVolumeCalculator.h.
Referenced by Calculate().
Point3D mitk::LabeledImageVolumeCalculator::m_DummyPoint [protected] |
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.