Calculates the volume of a mitk::Image. The given volume is in milliliters or as a voxel count. Voxels are counted if their gray value is above a threshold (see SetThreshold), the default threshold is 0. More...
#include <mitkVolumeCalculator.h>
Public Member Functions | |
mitkClassMacro (VolumeCalculator, itk::Object) | |
virtual void | SetImage (Image *_arg) |
virtual void | SetThreshold (int _arg) |
virtual float | GetVolume () |
virtual unsigned long int | GetVoxelCount () |
std::vector< float > | GetVolumes () |
void | ComputeVolume () |
void | ComputeVolumeFromImageStatistics () |
Static Public Member Functions | |
static Pointer | New () |
static float | ComputeVolume (Vector3D spacing, unsigned int voxelCount) |
Protected Member Functions | |
VolumeCalculator () | |
virtual | ~VolumeCalculator () |
template<typename TPixel , unsigned int VImageDimension> | |
void | InternalCompute (itk::Image< TPixel, VImageDimension > *itkImage) |
Protected Attributes | |
Image::ConstPointer | m_Image |
int | m_Threshold |
float | m_Volume |
unsigned long int | m_VoxelCount |
std::vector< float > | m_Volumes |
ImageTimeSelector::Pointer | m_TimeSelector |
Calculates the volume of a mitk::Image. The given volume is in milliliters or as a voxel count. Voxels are counted if their gray value is above a threshold (see SetThreshold), the default threshold is 0.
The filter works for 2D, 3D and 3D+t. In the 3D+t case a vector of volumes is provided (see GetVolumes()).
Definition at line 38 of file mitkVolumeCalculator.h.
mitk::VolumeCalculator::VolumeCalculator | ( | ) | [protected] |
Definition at line 46 of file mitkVolumeCalculator.cpp.
References m_TimeSelector, and New().
: m_Image(NULL), m_Threshold(0), m_Volume(0) { m_TimeSelector = ImageTimeSelector::New(); }
mitk::VolumeCalculator::~VolumeCalculator | ( | ) | [protected, virtual] |
Definition at line 54 of file mitkVolumeCalculator.cpp.
{ }
void mitk::VolumeCalculator::ComputeVolume | ( | ) |
Definition at line 63 of file mitkVolumeCalculator.cpp.
References AccessFixedDimensionByItk, and InternalCompute().
Referenced by mitk::ImageMapperGL2D::Paint().
{ const_cast<Image*>(m_Image.GetPointer())->SetRequestedRegionToLargestPossibleRegion(); if (m_Image->GetDimension() == 4) { m_TimeSelector->SetInput(m_Image); m_Volumes.resize(m_Image->GetDimension(3)); for (unsigned int timeStep = 0; timeStep<m_Image->GetDimension(3); ++timeStep) { m_TimeSelector->SetTimeNr(timeStep); m_TimeSelector->Update(); AccessFixedDimensionByItk(m_TimeSelector->GetOutput(),InternalCompute,3); m_Volumes[timeStep] = m_Volume; } } else if (m_Image->GetDimension() == 3) { const_cast<Image*>(m_Image.GetPointer())->Update(); AccessFixedDimensionByItk(m_Image,InternalCompute,3); } else if (m_Image->GetDimension() == 2) { const_cast<Image*>(m_Image.GetPointer())->Update(); AccessFixedDimensionByItk(m_Image,InternalCompute,2); } }
float mitk::VolumeCalculator::ComputeVolume | ( | Vector3D | spacing, |
unsigned int | voxelCount | ||
) | [static] |
Definition at line 117 of file mitkVolumeCalculator.cpp.
{
return (voxelCount / 1000.0 * spacing[0] * spacing[1] * spacing[2]);
}
void mitk::VolumeCalculator::ComputeVolumeFromImageStatistics | ( | ) |
Definition at line 90 of file mitkVolumeCalculator.cpp.
References QuadProgPP::t().
{ unsigned int dim = m_Image->GetDimension(); if(dim == 4) { m_Volumes.resize(m_Image->GetDimension(3),0); Vector3D spacing = m_Image->GetSlicedGeometry()->GetSpacing(); for(unsigned int t = 0; t < m_Image->GetDimension(3); ++t ) { m_Volumes[t] = m_Image->GetCountOfMaxValuedVoxels(t) / 1000.0 * spacing[0] * spacing[1] * spacing[2]; } } else if(dim == 3) { Vector3D spacing = m_Image->GetSlicedGeometry()->GetSpacing(); m_Volume = m_Image->GetCountOfMaxValuedVoxels() / 1000.0 * spacing[0] * spacing[1] * spacing[2]; } else if (dim == 2) { Vector3D spacing = m_Image->GetGeometry()->GetSpacing(); m_Volume = m_Image->GetCountOfMaxValuedVoxels() / 100.0 * spacing[0] * spacing[1]; } else itkExceptionMacro(<<"Wrong image dimension..."); }
virtual float mitk::VolumeCalculator::GetVolume | ( | ) | [virtual] |
std::vector< float > mitk::VolumeCalculator::GetVolumes | ( | ) |
Definition at line 58 of file mitkVolumeCalculator.cpp.
{ return m_Volumes; }
virtual unsigned long int mitk::VolumeCalculator::GetVoxelCount | ( | ) | [virtual] |
void mitk::VolumeCalculator::InternalCompute | ( | itk::Image< TPixel, VImageDimension > * | itkImage ) | [protected] |
Definition at line 23 of file mitkVolumeCalculator.cpp.
References m_Threshold, m_Volume, and m_VoxelCount.
{ itk::ImageRegionConstIterator<itk::Image < TPixel, VImageDimension > > imageIt(itkImage, itkImage->GetLargestPossibleRegion() ); unsigned long int count = 0; for (imageIt.GoToBegin(); !imageIt.IsAtEnd(); ++imageIt) { if ( (int)(imageIt.Get()) >= m_Threshold ) { count++; } } if (itkImage->GetLargestPossibleRegion().GetImageDimension() == 3) { m_Volume = count / 1000.0 * itkImage->GetSpacing()[0] * itkImage->GetSpacing()[1] * itkImage->GetSpacing()[2]; } else if (itkImage->GetLargestPossibleRegion().GetImageDimension() == 2) { m_Volume = count / 100.0 * itkImage->GetSpacing()[0] * itkImage->GetSpacing()[1]; } m_VoxelCount = count; }
mitk::VolumeCalculator::mitkClassMacro | ( | VolumeCalculator | , |
itk::Object | |||
) |
static Pointer mitk::VolumeCalculator::New | ( | ) | [static] |
virtual void mitk::VolumeCalculator::SetImage | ( | Image * | _arg ) | [virtual] |
virtual void mitk::VolumeCalculator::SetThreshold | ( | int | _arg ) | [virtual] |
Image::ConstPointer mitk::VolumeCalculator::m_Image [protected] |
Definition at line 63 of file mitkVolumeCalculator.h.
int mitk::VolumeCalculator::m_Threshold [protected] |
Definition at line 64 of file mitkVolumeCalculator.h.
Referenced by InternalCompute().
ImageTimeSelector::Pointer mitk::VolumeCalculator::m_TimeSelector [protected] |
Definition at line 68 of file mitkVolumeCalculator.h.
Referenced by VolumeCalculator().
float mitk::VolumeCalculator::m_Volume [protected] |
Definition at line 65 of file mitkVolumeCalculator.h.
Referenced by InternalCompute().
std::vector<float> mitk::VolumeCalculator::m_Volumes [protected] |
Definition at line 67 of file mitkVolumeCalculator.h.
unsigned long int mitk::VolumeCalculator::m_VoxelCount [protected] |
Definition at line 66 of file mitkVolumeCalculator.h.
Referenced by InternalCompute().