1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
/*=========================================================================
Program: Insight Segmentation & Registration Toolkit
Module: $RCSfile: itkImageToHistogramGenerator.h,v $
Language: C++
Date: $Date: 2009-03-04 15:23:50 $
Version: $Revision: 1.8 $
Copyright (c) Insight Software Consortium. All rights reserved.
See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef __itkImageToHistogramGenerator_h
#define __itkImageToHistogramGenerator_h
#include "itkImageToListAdaptor.h"
#include "itkListSampleToHistogramGenerator.h"
#include "itkObject.h"
namespace itk {
namespace Statistics {
template <typename TAdaptor >
struct GetAdaptorMeasurementVectorLength
{
itkStaticConstMacro( MeasurementVectorLength, unsigned int, TAdaptor::MeasurementVectorSize );
};
/** \class ImageToHistogramGenerator
* \brief This class generates an histogram from an image.
*
* The concept of Histogram in ITK is quite generic. It has been designed to
* manage multiple components data. This class facilitates the computation of
* an histogram from an image. Internally it creates a List that is feed into
* the ListSampleToHistogramGenerator.
*
*/
template< class TImageType >
class ImageToHistogramGenerator : public Object
{
public:
/** Standard typedefs */
typedef ImageToHistogramGenerator Self;
typedef Object Superclass;
typedef SmartPointer<Self> Pointer;
typedef SmartPointer<const Self> ConstPointer;
/** Run-time type information (and related methods). */
itkTypeMacro(ImageToHistogramGenerator, Object);
/** standard New() method support */
itkNewMacro(Self);
typedef TImageType ImageType;
typedef ImageToListAdaptor< ImageType > AdaptorType;
typedef typename AdaptorType::Pointer AdaptorPointer;
typedef typename ImageType::PixelType PixelType;
typedef typename PixelType::ValueType ValueType;
typedef typename NumericTraits< ValueType >::RealType ValueRealType;
typedef DenseFrequencyContainer FrequencyContainerType;
typedef ListSampleToHistogramGenerator<
AdaptorType,
ValueRealType,
FrequencyContainerType,
::itk::Statistics::GetAdaptorMeasurementVectorLength<
AdaptorType >::MeasurementVectorLength
> GeneratorType;
typedef typename GeneratorType::Pointer GeneratorPointer;
typedef typename GeneratorType::HistogramType HistogramType;
typedef typename HistogramType::Pointer HistogramPointer;
typedef typename HistogramType::ConstPointer HistogramConstPointer;
typedef typename HistogramType::SizeType SizeType;
typedef typename HistogramType::MeasurementVectorType MeasurementVectorType;
public:
/** Triggers the Computation of the histogram */
void Compute( void );
/** Connects the input image for which the histogram is going to be computed */
void SetInput( const ImageType * );
/** Return the histogram. o
\warning This output is only valid after the Compute() method has been invoked
\sa Compute */
const HistogramType * GetOutput() const;
/** Set number of histogram bins */
void SetNumberOfBins( const SizeType & size );
/** Set marginal scale value to be passed to the histogram generator */
void SetMarginalScale( double marginalScale );
void SetHistogramMin(const MeasurementVectorType & histogramMin);
void SetHistogramMax(const MeasurementVectorType & histogramMax);
void SetAutoMinMax(bool autoMinMax);
protected:
ImageToHistogramGenerator();
virtual ~ImageToHistogramGenerator() {};
void PrintSelf(std::ostream& os, Indent indent) const;
private:
AdaptorPointer m_ImageToListAdaptor;
GeneratorPointer m_HistogramGenerator;
};
} // end of namespace Statistics
} // end of namespace itk
#ifndef ITK_MANUAL_INSTANTIATION
#include "itkImageToHistogramGenerator.txx"
#endif
#endif
|