19 #include <itkImageRegionConstIterator.h> 25 template<
typename TPixel,
unsigned int VImageDimension>
29 typedef itk::Image<TPixel, VImageDimension>
ImageType;
32 maximum = std::numeric_limits<TPixel>::lowest();
34 itk::ImageRegionConstIterator<ImageType> iter(itkImage, itkImage->GetLargestPossibleRegion());
36 while (!iter.IsAtEnd())
38 minimum = std::min<TPixel>(minimum, iter.Get());
39 maximum = std::max<TPixel>(maximum, iter.Get());
44 template<
typename TPixel,
unsigned int VImageDimension>
48 typedef itk::Image<TPixel, VImageDimension>
ImageType;
49 typedef itk::Image<int, VImageDimension> MaskType;
51 typename MaskType::Pointer itkMask = MaskType::New();
55 maximum = std::numeric_limits<TPixel>::lowest();
57 itk::ImageRegionConstIterator<ImageType> iter(itkImage, itkImage->GetLargestPossibleRegion());
58 itk::ImageRegionConstIterator<MaskType> maskIter(itkMask, itkMask->GetLargestPossibleRegion());
60 while (!iter.IsAtEnd())
62 if (maskIter.Get() > 0)
64 minimum = std::min<TPixel>(minimum, iter.Get());
65 maximum = std::max<TPixel>(maximum, iter.Get());
84 m_Binsize = (maximum - minimum) / bins;
90 m_Maximum = minimum + bins*binsize;
98 m_Bins = std::ceil((maximum - minimum) / binsize);
99 m_Maximum = minimum + m_Bins*binsize;
101 m_Initialized =
true;
105 double minimum, maximum;
123 double minimum, maximum;
141 double minimum, maximum;
159 double minimum, maximum;
178 double index = std::floor((intensity - m_Minimum) / m_Binsize);
179 return std::max<double>(0, std::min<double>(index, m_Bins-1));
184 return index*m_Binsize + m_Minimum;
189 return (index + 0.5) * m_Binsize + m_Minimum;
194 return (index + 1) * m_Binsize + m_Minimum;
#define AccessByItk_3(mitkImage, itkImageTypeFunction, arg1, arg2, arg3)
double IndexToMinimumIntensity(unsigned int index)
itk::Image< unsigned char, 3 > ImageType
void InitializeByImage(mitk::Image::Pointer image, unsigned int bins)
void InitializeByImageAndMaximum(mitk::Image::Pointer image, double maximum, unsigned int bins)
double IndexToMaximumIntensity(unsigned int index)
double IndexToMeanIntensity(unsigned int index)
void InitializeByMinimumMaximum(double minimum, double maximum, unsigned int bins)
void InitializeByImageAndBinsizeAndMaximum(mitk::Image::Pointer image, double maximum, double binsize)
void InitializeByBinsizeAndBins(double minimum, unsigned int bins, double binsize)
void InitializeByImageRegion(mitk::Image::Pointer image, mitk::Image::Pointer mask, unsigned int bins)
void InitializeByImageRegionAndBinsize(mitk::Image::Pointer image, mitk::Image::Pointer mask, double binsize)
unsigned int IntensityToIndex(double intensity)
mitk::Image::Pointer image
void InitializeByImageRegionAndBinsizeAndMinimum(mitk::Image::Pointer image, mitk::Image::Pointer mask, double minimum, double binsize)
static void CalculateImageMinMax(itk::Image< TPixel, VImageDimension > *itkImage, double &minimum, double &maximum)
void MITKCORE_EXPORT CastToItkImage(const mitk::Image *mitkImage, itk::SmartPointer< ItkOutputImageType > &itkOutputImage)
Cast an mitk::Image to an itk::Image with a specific type.
static void CalculateImageRegionMinMax(itk::Image< TPixel, VImageDimension > *itkImage, mitk::Image::Pointer mask, double &minimum, double &maximum)
void InitializeByImageRegionAndBinsizeAndMaximum(mitk::Image::Pointer image, mitk::Image::Pointer mask, double maximum, double binsize)
mitk::Image::Pointer mask
void InitializeByImageRegionAndMinimum(mitk::Image::Pointer image, mitk::Image::Pointer mask, double minimum, unsigned int bins)
#define AccessByItk_2(mitkImage, itkImageTypeFunction, arg1, arg2)
void InitializeByBinsizeAndMaximum(double minimum, double maximum, double binsize)
void InitializeByImageAndMinimum(mitk::Image::Pointer image, double minimum, unsigned int bins)
void InitializeByImageAndBinsizeAndMinimum(mitk::Image::Pointer image, double minimum, double binsize)
void InitializeByImageRegionAndMaximum(mitk::Image::Pointer image, mitk::Image::Pointer mask, double maximum, unsigned int bins)
void InitializeByImageAndBinsize(mitk::Image::Pointer image, double binsize)