Shapeworks Studio  2.1
Shape analysis software suite
itkPSMSurfaceNeighborhood.h
1 /*=========================================================================
2  *
3  * Copyright Insight Software Consortium
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0.txt
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  *=========================================================================*/
18 #ifndef __itkPSMSurfaceNeighborhood_h
19 #define __itkPSMSurfaceNeighborhood_h
20 
21 #include "itkPSMRegionNeighborhood.h"
22 #include "itkPSMImplicitSurfaceDomain.h"
23 #include "vnl/vnl_vector_fixed.h"
24 
25 namespace itk
26 {
44 template <class TImage>
45 class ITK_EXPORT PSMSurfaceNeighborhood : public PSMRegionNeighborhood<TImage::ImageDimension>
46 {
47 public:
49  typedef TImage ImageType;
52  typedef SmartPointer<Self> Pointer;
53  typedef SmartPointer<const Self> ConstPointer;
54  typedef WeakPointer<const Self> ConstWeakPointer;
55  typedef typename ImageType::PixelType NumericType;
56  typedef typename Superclass::PointTreeType PointTreeType;
57 
58  typedef vnl_vector_fixed<NumericType, TImage::ImageDimension> GradientVectorType;
59 
61  itkStaticConstMacro(Dimension, unsigned int, TImage::ImageDimension);
62 
64  itkNewMacro(Self);
65 
68 
70  typedef typename Superclass::PointType PointType;
71  typedef typename Superclass::PointContainerType PointContainerType;
73  typedef typename Superclass::PointVectorType PointVectorType;
74 
78  virtual PointVectorType FindNeighborhoodPointsWithWeights(const PointType &, std::vector<double> &, double) const;
79 
80  void PrintSelf(std::ostream& os, Indent indent) const
81  {
82  Superclass::PrintSelf(os, indent);
83  }
84 
85 protected:
86  PSMSurfaceNeighborhood() : m_FlatCutoff(0.30) { }
87  virtual ~PSMSurfaceNeighborhood() {};
88 
89 private:
90  PSMSurfaceNeighborhood(const Self&); //purposely not implemented
91  void operator=(const Self&); //purposely not implemented
92  double m_FlatCutoff;
93 
94 };
95 
96 } // end namespace itk
97 
98 #ifndef ITK_MANUAL_INSTANTIATION
99 #include "itkPSMSurfaceNeighborhood.hxx"
100 #endif
101 
102 #endif
PSMSurfaceNeighborhood is a general purpose neighborhood object that computes neighborhoods based on ...
Base class for defining the domain in which a particle system exists.
Definition: itkPSMDomain.h:48
std::vector< PSMPointIndexPair< VDimension > > PointVectorType
A container class that holds particle position information for the PSMParticleSystem class...