00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __itkBloxBoundaryProfileImageToBloxCoreAtomImageFilter_h
00019 #define __itkBloxBoundaryProfileImageToBloxCoreAtomImageFilter_h
00020
00021 #include "itkImageToImageFilter.h"
00022 #include "itkPoint.h"
00023 #include "itkVector.h"
00024 #include "itkCovariantVector.h"
00025 #include "itkBloxBoundaryProfileItem.h"
00026 #include "itkBloxBoundaryProfilePixel.h"
00027 #include "itkBloxBoundaryProfileImage.h"
00028 #include "itkBloxCoreAtomItem.h"
00029 #include "itkBloxCoreAtomPixel.h"
00030 #include "itkBloxCoreAtomImage.h"
00031
00032 namespace itk
00033 {
00034
00038 template< typename TInputImage, typename TOutputImage, typename TSourceImage >
00039 class ITK_EXPORT BloxBoundaryProfileImageToBloxCoreAtomImageFilter :
00040 public ImageToImageFilter< TInputImage, TOutputImage >
00041 {
00042 public:
00043
00045 typedef BloxBoundaryProfileImageToBloxCoreAtomImageFilter Self;
00046 typedef ImageToImageFilter<TInputImage, TOutputImage> Superclass;
00047 typedef SmartPointer<Self> Pointer;
00048 typedef SmartPointer<const Self> ConstPointer;
00049
00051 itkNewMacro(Self);
00052
00054 itkTypeMacro( itkBloxBoundaryProfileImageToBloxCoreAtomImageFilter, ImageToImageFilter );
00055
00057 itkStaticConstMacro(NDimensions, unsigned int, TSourceImage::ImageDimension);
00058
00060 typedef TInputImage InputImageType;
00061 typedef typename InputImageType::Pointer InputImagePointer;
00062 typedef typename InputImageType::RegionType InputImageRegionType;
00063 typedef typename InputImageType::PixelType InputImagePixelType;
00064 typedef typename InputImageType::ConstPointer InputImageConstPointer;
00065
00066 typedef TOutputImage OutputImageType;
00067 typedef typename OutputImageType::Pointer OutputImagePointer;
00068 typedef typename OutputImageType::RegionType OutputImageRegionType;
00069 typedef typename OutputImageType::PixelType OutputImagePixelType;
00070 typedef typename OutputImageType::ConstPointer OutputImageConstPointer;
00071 typedef typename OutputImageType::IndexType OutputImageIndexType;
00072
00073 typedef TSourceImage SourceImageType;
00074 typedef typename SourceImageType::Pointer SourceImagePointer;
00075 typedef typename SourceImageType::RegionType SourceImageRegionType;
00076 typedef typename SourceImageType::PixelType SourceImagePixelType;
00077 typedef typename SourceImageType::ConstPointer SourceImageConstPointer;
00078 typedef typename SourceImageType::IndexType SourceImageIndexType;
00079
00081 typedef Size<itkGetStaticConstMacro(NDimensions)> SizeType;
00082
00084 typedef Point<double, itkGetStaticConstMacro(NDimensions)> PositionType;
00085
00087 typedef typename PositionType::VectorType VectorType;
00088
00090 typedef CovariantVector<double, itkGetStaticConstMacro(NDimensions)> GradientType;
00091
00093 void FindCoreAtoms();
00094
00096 typedef BloxBoundaryProfileItem<itkGetStaticConstMacro(NDimensions)> BloxProfileItemType;
00097 void FindCoreAtomsAtBoundaryPoint(BloxProfileItemType* pItem);
00099
00101 itkSetMacro(DistanceMin, double);
00102 itkSetMacro(DistanceMax, double);
00103 itkSetMacro(Epsilon, double);
00104 itkSetMacro(Polarity, bool);
00106
00108 void GenerateInputRequestedRegion();
00109
00111 void SetInput1(const SourceImageType * image1);
00112 void SetInput2(const InputImageType * image2);
00114
00115 protected:
00116 BloxBoundaryProfileImageToBloxCoreAtomImageFilter();
00117 virtual ~BloxBoundaryProfileImageToBloxCoreAtomImageFilter() {};
00118 void PrintSelf(std::ostream& os, Indent indent) const;
00119
00121 void GenerateData();
00122
00123 private:
00124 BloxBoundaryProfileImageToBloxCoreAtomImageFilter(const Self&);
00125 void operator=(const Self&);
00126
00128 InputImageConstPointer m_BoundaryProfileImagePtr;
00129 OutputImagePointer m_OutputPtr;
00130 SourceImageConstPointer m_SourceImagePtr;
00131
00135 double m_DistanceMin;
00136 double m_DistanceMax;
00137 double m_Epsilon;
00138 bool m_Polarity;
00139 bool m_IntensityFlag;
00140 unsigned int m_IntensityThreshold;
00141 bool m_CreateCoreAtom;
00142 int m_CoreAtomsCreated;
00143 };
00144
00145 }
00146
00147 #ifndef ITK_MANUAL_INSTANTIATION
00148 #include "itkBloxBoundaryProfileImageToBloxCoreAtomImageFilter.txx"
00149 #endif
00150
00151 #endif
00152