00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
#ifndef _itkNeighborhoodOperatorImageFunction_h
00018
#define _itkNeighborhoodOperatorImageFunction_h
00019
00020
#include "itkImageFunction.h"
00021
#include "itkNeighborhood.h"
00022
00023
namespace itk
00024 {
00025
00035
template <
class TInputImage,
class TOutput>
00036 class ITK_EXPORT NeighborhoodOperatorImageFunction :
00037
public ImageFunction< TInputImage, TOutput >
00038 {
00039
public:
00040
00042 typedef NeighborhoodOperatorImageFunction
Self;
00043
00045 typedef ImageFunction<TInputImage, TOutput> Superclass;
00046
00048 typedef SmartPointer<Self> Pointer;
00049 typedef SmartPointer<const Self> ConstPointer;
00050
00052
itkNewMacro(
Self);
00053
00055 typedef TInputImage
InputImageType;
00056 typedef typename InputImageType::PixelType
InputPixelType;
00057 typedef typename Superclass::IndexType
IndexType;
00058 typedef typename Superclass::ContinuousIndexType
ContinuousIndexType;
00059
00061
itkTypeMacro( NeighborhoodOperatorImageFunction,
ImageFunction );
00062
00063
00065
itkStaticConstMacro(ImageDimension,
unsigned int,
00066 InputImageType::ImageDimension);
00067
00068 typedef Neighborhood<TOutput, itkGetStaticConstMacro(ImageDimension)> NeighborhoodType;
00069
00071 typedef typename Superclass::PointType
PointType;
00072
00074
00075
00079 void SetOperator(
const NeighborhoodType &p)
const
00080
{
00081 m_Operator = p;
00082 this->Modified();
00083 }
00084
00087
virtual TOutput Evaluate(
const PointType& )
const
00088 {
00089 std::cout <<
"NeighborhoodOperatorImageFunction::Evaluate(): Not implemented!" << std::endl;
00090 TOutput out;
00091 out = 0;
00092
return out;
00093 }
00095
virtual TOutput EvaluateAtIndex(
const IndexType & index )
const;
00096
00099
virtual TOutput EvaluateAtContinuousIndex(
00100
const ContinuousIndexType & )
const
00101 {
00102 std::cout <<
"NeighborhoodOperatorImageFunction::EvaluateAtContinuousIndex():Not implemented!" << std::endl;
00103 TOutput out;
00104 out = 0;
00105
return out;
00106 }
00107
00108
protected:
00109 NeighborhoodOperatorImageFunction();
00110 NeighborhoodOperatorImageFunction(
const Self& ){};
00111
00112 ~NeighborhoodOperatorImageFunction(){};
00113
00114
void operator=(
const Self& ){};
00115 void PrintSelf(std::ostream& os,
Indent indent)
const;
00116
00117 private:
00118
00119
mutable NeighborhoodType m_Operator;
00120
00121 };
00122
00123 }
00124
00125
#ifndef ITK_MANUAL_INSTANTIATION
00126
#include "itkNeighborhoodOperatorImageFunction.txx"
00127
#endif
00128
00129
#endif
00130