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