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 TSourceImage,
unsigned int dim >
00039 class ITK_EXPORT BloxBoundaryProfileImageToBloxCoreAtomImageFilter :
00040
public ImageToImageFilter< BloxBoundaryProfileImage<dim>,
00041 BloxCoreAtomImage<dim> >
00042 {
00043
public:
00045
typedef BloxBoundaryProfileImageToBloxCoreAtomImageFilter
Self;
00046 typedef ImageToImageFilter<BloxBoundaryProfileImage<dim>,
00047
BloxCoreAtomImage<dim> >
Superclass;
00048 typedef SmartPointer<Self> Pointer;
00049 typedef SmartPointer<const Self> ConstPointer;
00050
00052
itkNewMacro(
Self);
00053
00055
itkTypeMacro( itkBloxBoundaryProfileImageToBloxCoreAtomImageFilter,
ImageToImageFilter );
00056
00058
itkStaticConstMacro(NDimensions,
unsigned int, TSourceImage::ImageDimension);
00059
00060
typedef BloxCoreAtomImage<dim> TOutputImage;
00061 typedef BloxCoreAtomImage<dim> OutputImageType;
00062 typedef typename OutputImageType::Pointer
OutputImagePointer;
00063
00065
typedef BloxBoundaryProfileImage<dim> BoundaryProfileImageType;
00066 typedef typename BoundaryProfileImageType::Pointer
BoundaryProfileImagePointer;
00067 typedef typename BoundaryProfileImageType::RegionType
BoundaryProfileImageRegionType;
00068 typedef typename BoundaryProfileImageType::PixelType
BoundaryProfileImagePixelType;
00069 typedef typename BoundaryProfileImageType::ConstPointer
BoundaryProfileImageConstPointer;
00070
00072
typedef TSourceImage
SourceImageType;
00073 typedef typename SourceImageType::Pointer
SourceImagePointer;
00074 typedef typename SourceImageType::RegionType
SourceImageRegionType;
00075 typedef typename SourceImageType::PixelType
SourceImagePixelType;
00076 typedef typename SourceImageType::ConstPointer
SourceImageConstPointer;
00077 typedef typename SourceImageType::IndexType
SourceImageIndexType;
00078
00080
typedef Size<itkGetStaticConstMacro(NDimensions)> SizeType;
00081
00083
typedef typename TOutputImage::IndexType
IndexType;
00084
00086
typedef typename TOutputImage::PixelType
PixelType;
00087
00089
typedef typename TOutputImage::RegionType
OutputImageRegionType;
00090
00092
typedef Point<double, itkGetStaticConstMacro(NDimensions)> PositionType;
00093
00095
typedef typename PositionType::VectorType
VectorType;
00096
00098
typedef CovariantVector<double, itkGetStaticConstMacro(NDimensions)> GradientType;
00099
00101
void FindCoreAtoms();
00102
00104
void FindCoreAtomsAtBoundaryPoint(
BloxBoundaryProfileItem<dim>* pItem);
00105
00107
itkSetMacro(DistanceMin,
double);
00108
itkSetMacro(DistanceMax,
double);
00109
itkSetMacro(Epsilon,
double);
00110
itkSetMacro(Polarity,
bool);
00111
00113
void GenerateInputRequestedRegion();
00114
00116
void SetInput1(
const SourceImageType * image1);
00117
void SetInput2(
const BoundaryProfileImageType * image2);
00118
00119
00120
protected:
00121 BloxBoundaryProfileImageToBloxCoreAtomImageFilter();
00122
virtual ~BloxBoundaryProfileImageToBloxCoreAtomImageFilter() {};
00123
void PrintSelf(std::ostream& os,
Indent indent)
const;
00124
00126
void GenerateData();
00127
00128
private:
00129 BloxBoundaryProfileImageToBloxCoreAtomImageFilter(
const Self&);
00130
void operator=(
const Self&);
00131
00133 BoundaryProfileImageConstPointer m_BoundaryProfileImagePtr;
00134 SourceImageConstPointer m_SourceImagePtr;
00135 OutputImagePointer m_OutputPtr;
00136
00140
double m_DistanceMin;
00141
double m_DistanceMax;
00142
double m_Epsilon;
00143
bool m_Polarity;
00144
bool m_IntensityFlag;
00145
unsigned int m_IntensityThreshold;
00146
bool m_CreateCoreAtom;
00147
int m_CoreAtomsCreated;
00148 };
00149
00150 }
00151
00152
#ifndef ITK_MANUAL_INSTANTIATION
00153
#include "itkBloxBoundaryProfileImageToBloxCoreAtomImageFilter.txx"
00154
#endif
00155
00156
#endif