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 #ifndef __mitkAutoCropImageFilter_h_
00019 #define __mitkAutoCropImageFilter_h_
00020
00021 #include "mitkCommon.h"
00022 #include "MitkExtExports.h"
00023 #include "mitkSubImageSelector.h"
00024 #include "mitkImageTimeSelector.h"
00025
00026 #include <itkImageRegion.h>
00027 #include <itkCropImageFilter.h>
00028
00029 namespace mitk {
00030
00059 class MitkExt_EXPORT AutoCropImageFilter : public SubImageSelector
00060 {
00061 public:
00062
00063 typedef itk::ImageRegion<3> RegionType;
00064
00065 mitkClassMacro(AutoCropImageFilter, SubImageSelector);
00066
00067 itkNewMacro(Self);
00068
00069 itkGetConstMacro(BackgroundValue,float);
00070 itkSetMacro(BackgroundValue,float);
00071
00072 itkGetConstMacro(MarginFactor,float);
00073 itkSetMacro(MarginFactor,float);
00074
00075
00076 void SetCroppingRegion(RegionType overrideRegion);
00077
00078 virtual const std::type_info& GetOutputPixelType();
00079
00080 protected:
00081
00082
00083 AutoCropImageFilter();
00084
00085
00086 virtual ~AutoCropImageFilter();
00087
00088
00089 void ComputeNewImageBounds();
00090
00091
00092 template < typename TPixel, unsigned int VImageDimension>
00093 void ITKCrop3DImage( itk::Image< TPixel, VImageDimension >* inputItkImage, unsigned int timestep );
00094
00095
00096 virtual void GenerateOutputInformation();
00097
00098
00099 virtual void GenerateInputRequestedRegion();
00100
00101
00102 virtual void GenerateData();
00103
00104 float m_BackgroundValue;
00105
00106 RegionType m_CroppingRegion;
00107
00108 float m_MarginFactor;
00109
00110 typedef itk::Image<float,3> ImageType;
00111 typedef ImageType::Pointer ImagePointer;
00112 typedef itk::CropImageFilter<ImageType,ImageType> CropFilterType;
00113
00114 ImageType::RegionType::SizeType m_RegionSize;
00115 ImageType::RegionType::IndexType m_RegionIndex;
00116
00117 CropFilterType::SizeType m_LowerBounds;
00118 CropFilterType::SizeType m_UpperBounds;
00119
00120 mitk::ImageTimeSelector::Pointer m_TimeSelector;
00121
00122 mitk::SlicedData::RegionType m_InputRequestedRegion;
00123 itk::TimeStamp m_TimeOfHeaderInitialization;
00124
00125 bool m_OverrideCroppingRegion;
00126
00127 };
00128
00129 }
00130
00131 #endif
00132
00133