Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef BOUNDINGOBJECTCUTTER_H_HEADER_INCLUDED_C10B22CD
00020 #define BOUNDINGOBJECTCUTTER_H_HEADER_INCLUDED_C10B22CD
00021
00022 #include "mitkCommon.h"
00023 #include "MitkExtExports.h"
00024 #include "mitkImageToImageFilter.h"
00025 #include "mitkBoundingObject.h"
00026 #include "mitkImageTimeSelector.h"
00027 #include "itkImage.h"
00028
00029
00030 namespace mitk {
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 class MitkExt_EXPORT BoundingObjectCutter : public ImageToImageFilter
00042 {
00043 public:
00044 mitkClassMacro(BoundingObjectCutter, ImageToImageFilter);
00045 itkNewMacro(Self);
00046
00047 void SetBoundingObject( const mitk::BoundingObject* boundingObject );
00048 const mitk::BoundingObject* GetBoundingObject() const;
00049
00050
00051 itkSetMacro(InsideValue, ScalarType);
00052 itkGetMacro(InsideValue, ScalarType);
00053
00054
00055 itkSetMacro(OutsideValue, ScalarType);
00056 itkGetMacro(OutsideValue, ScalarType);
00057 itkSetMacro(UseInsideValue, bool);
00058 itkGetMacro(UseInsideValue, bool);
00059 itkBooleanMacro(UseInsideValue);
00060
00061
00062
00063 itkSetMacro(AutoOutsideValue, bool);
00064 itkGetMacro(AutoOutsideValue, bool);
00065 itkBooleanMacro(AutoOutsideValue);
00066
00067 itkGetMacro(InsidePixelCount, unsigned int);
00068 itkGetMacro(OutsidePixelCount, unsigned int);
00069
00070 itkSetMacro(UseWholeInputRegion, bool);
00071 itkGetMacro(UseWholeInputRegion, bool);
00072
00073 protected:
00074 BoundingObjectCutter();
00075 virtual ~BoundingObjectCutter();
00076
00077 virtual const std::type_info& GetOutputPixelType();
00078
00079 virtual void GenerateInputRequestedRegion();
00080 virtual void GenerateOutputInformation();
00081 virtual void GenerateData();
00082
00083 template < typename TPixel, unsigned int VImageDimension, typename TOutputPixel >
00084 friend void CutImageWithOutputTypeSelect( itk::Image< TPixel, VImageDimension >* inputItkImage, mitk::BoundingObjectCutter* cutter, int boTimeStep=0, TOutputPixel* dummy=NULL );
00085 template < typename TPixel, unsigned int VImageDimension >
00086 friend void CutImage( itk::Image< TPixel, VImageDimension >* itkImage, mitk::BoundingObjectCutter* cutter, int boTimeStep );
00087 virtual void ComputeData(mitk::Image* input3D, int boTimeStep);
00088
00089
00090
00091 mitk::BoundingObject::Pointer m_BoundingObject;
00092
00093
00094
00095
00096 ScalarType m_InsideValue;
00097
00098
00099
00100
00101 ScalarType m_OutsideValue;
00102
00103
00104
00105 bool m_AutoOutsideValue;
00106
00107
00108
00109
00110
00111
00112
00113 bool m_UseInsideValue;
00114
00115 unsigned int m_OutsidePixelCount;
00116 unsigned int m_InsidePixelCount;
00117
00118
00119
00120 mitk::SlicedData::RegionType m_InputRequestedRegion;
00121
00122
00123
00124 itk::TimeStamp m_TimeOfHeaderInitialization;
00125
00126 mitk::ImageTimeSelector::Pointer m_InputTimeSelector;
00127 mitk::ImageTimeSelector::Pointer m_OutputTimeSelector;
00128
00129 bool m_UseWholeInputRegion;
00130 };
00131 }
00132
00133 #endif
00134
00135
00136