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.
1.7.2