00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
#ifndef __itkVectorNeighborhoodInnerProduct_h
00018
#define __itkVectorNeighborhoodInnerProduct_h
00019
00020
#include "itkNeighborhoodIterator.h"
00021
#include "itkVector.h"
00022
#include "itkNeighborhood.h"
00023
#include "itkConstSliceIterator.h"
00024
#include "itkImageBoundaryCondition.h"
00025
00026
namespace itk {
00027
00041
template<
class TImage>
00042 class ITK_EXPORT VectorNeighborhoodInnerProduct
00043 {
00044
public:
00046 typedef VectorNeighborhoodInnerProduct
Self;
00047
00048
itkStaticConstMacro(ImageDimension,
unsigned int, TImage::ImageDimension);
00049
00051 typedef typename TImage::PixelType
PixelType;
00052 typedef typename PixelType::ValueType
ScalarValueType;
00053
typedef Neighborhood<
PixelType,
00054 itkGetStaticConstMacro(ImageDimension)>
NeighborhoodType;
00055
00057
itkStaticConstMacro(VectorDimension,
unsigned int,
00058 PixelType::Dimension);
00059
00061
typedef Neighborhood<
ScalarValueType,
00062 itkGetStaticConstMacro(ImageDimension)>
OperatorType;
00063
00065
PixelType operator()(
const std::slice &s,
00066
const ConstNeighborhoodIterator<TImage> &it,
00067
const OperatorType &op)
const;
00068
00070 PixelType operator()(
const ConstNeighborhoodIterator<TImage> &it,
00071
const OperatorType &op)
const
00072
{
00073
return this->operator()(std::slice(0, it.Size(), 1), it, op);
00074 }
00075
00076 PixelType operator()(
const std::slice &s,
const NeighborhoodType &N,
00077
const OperatorType &op)
const;
00078
00079 };
00080
00081 }
00082
00083
#ifndef ITK_MANUAL_INSTANTIATION
00084
#include "itkVectorNeighborhoodInnerProduct.txx"
00085
#endif
00086
00087
#endif