ITK  5.2.0
Insight Toolkit
itkNeighborhoodAlgorithm.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright NumFOCUS
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 itkNeighborhoodAlgorithm_h
19 #define itkNeighborhoodAlgorithm_h
20 
21 #include <list>
22 #include "itkImage.h"
25 
26 namespace itk
27 {
28 namespace NeighborhoodAlgorithm
29 {
62 template <typename TImage>
64 {
66  using RegionType = typename TImage::RegionType;
67  using IndexType = typename TImage::IndexType;
68  using SizeType = typename TImage::SizeType;
69  using FaceListType = std::list<RegionType>;
70  static constexpr unsigned int ImageDimension = TImage::ImageDimension;
71 
78  class Result
79  {
80  public:
84  {
85  return m_NonBoundaryRegion;
86  }
87 
89  const FaceListType &
91  {
92  return m_BoundaryFaces;
93  }
94 
96  friend bool
97  operator==(const Result & lhs, const Result & rhs)
98  {
99  return (lhs.m_NonBoundaryRegion == rhs.m_NonBoundaryRegion) && (lhs.m_BoundaryFaces == rhs.m_BoundaryFaces);
100  }
101 
103  friend bool
104  operator!=(const Result & lhs, const Result & rhs)
105  {
106  return !(lhs == rhs);
107  }
108 
109  private:
111 
114  };
115 
118  static Result
119  Compute(const TImage &, RegionType, RadiusType);
120 
122  operator()(const TImage *, RegionType, RadiusType);
123 };
124 
134 template <typename TImage>
136 {
138  OffsetType
139  operator()(TImage *, TImage *) const;
140 };
141 } // end namespace NeighborhoodAlgorithm
142 } // end namespace itk
143 
144 #ifndef ITK_MANUAL_INSTANTIATION
145 # include "itkNeighborhoodAlgorithm.hxx"
146 #endif
147 
148 #endif
itk::NeighborhoodAlgorithm::ImageBoundaryFacesCalculator
Splits an image into a main region and several "face" regions which are used to handle computations o...
Definition: itkNeighborhoodAlgorithm.h:63
itk::NeighborhoodAlgorithm::ImageBoundaryFacesCalculator::operator()
FaceListType operator()(const TImage *, RegionType, RadiusType)
itkNeighborhoodIterator.h
itk::NeighborhoodAlgorithm::ImageBoundaryFacesCalculator::RadiusType
typename NeighborhoodIterator< TImage >::RadiusType RadiusType
Definition: itkNeighborhoodAlgorithm.h:65
itk::NeighborhoodAlgorithm::ImageBoundaryFacesCalculator::Result::operator==
friend bool operator==(const Result &lhs, const Result &rhs)
Definition: itkNeighborhoodAlgorithm.h:97
itkNeighborhoodOperator.h
itk::GTest::TypedefsAndConstructors::Dimension2::SizeType
ImageBaseType::SizeType SizeType
Definition: itkGTestTypedefsAndConstructors.h:49
itkImage.h
itk::NeighborhoodAlgorithm::ImageBoundaryFacesCalculator::Result
Definition: itkNeighborhoodAlgorithm.h:78
itk::NeighborhoodAlgorithm::ImageBoundaryFacesCalculator::Result::m_BoundaryFaces
FaceListType m_BoundaryFaces
Definition: itkNeighborhoodAlgorithm.h:113
itk::NeighborhoodAlgorithm::CalculateOutputWrapOffsetModifiers::operator()
OffsetType operator()(TImage *, TImage *) const
itk::NeighborhoodAlgorithm::ImageBoundaryFacesCalculator::Compute
static Result Compute(const TImage &, RegionType, RadiusType)
itk::GTest::TypedefsAndConstructors::Dimension2::IndexType
ImageBaseType::IndexType IndexType
Definition: itkGTestTypedefsAndConstructors.h:50
itk::NeighborhoodAlgorithm::ImageBoundaryFacesCalculator::Result::m_NonBoundaryRegion
RegionType m_NonBoundaryRegion
Definition: itkNeighborhoodAlgorithm.h:112
itk::GTest::TypedefsAndConstructors::Dimension2::RegionType
ImageBaseType::RegionType RegionType
Definition: itkGTestTypedefsAndConstructors.h:54
itk::NeighborhoodAlgorithm::ImageBoundaryFacesCalculator::IndexType
typename TImage::IndexType IndexType
Definition: itkNeighborhoodAlgorithm.h:67
itk::NeighborhoodIterator::RadiusType
typename Superclass::RadiusType RadiusType
Definition: itkNeighborhoodIterator.h:226
itk::NeighborhoodAlgorithm::ImageBoundaryFacesCalculator::Result::operator!=
friend bool operator!=(const Result &lhs, const Result &rhs)
Definition: itkNeighborhoodAlgorithm.h:104
itk::Offset
Represent a n-dimensional offset between two n-dimensional indexes of n-dimensional image.
Definition: itkOffset.h:67
itk::NeighborhoodAlgorithm::ImageBoundaryFacesCalculator::Result::GetNonBoundaryRegion
RegionType GetNonBoundaryRegion() const
Definition: itkNeighborhoodAlgorithm.h:83
itk::NeighborhoodAlgorithm::ImageBoundaryFacesCalculator::Result::GetBoundaryFaces
const FaceListType & GetBoundaryFaces() const
Definition: itkNeighborhoodAlgorithm.h:90
itk::NeighborhoodAlgorithm::ImageBoundaryFacesCalculator::FaceListType
std::list< RegionType > FaceListType
Definition: itkNeighborhoodAlgorithm.h:69
itk
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
Definition: itkAnnulusOperator.h:24
itk::NeighborhoodAlgorithm::ImageBoundaryFacesCalculator::ImageDimension
static constexpr unsigned int ImageDimension
Definition: itkNeighborhoodAlgorithm.h:70
itk::NeighborhoodAlgorithm::ImageBoundaryFacesCalculator::RegionType
typename TImage::RegionType RegionType
Definition: itkNeighborhoodAlgorithm.h:66
itk::NeighborhoodAlgorithm::ImageBoundaryFacesCalculator::SizeType
typename TImage::SizeType SizeType
Definition: itkNeighborhoodAlgorithm.h:68
itk::NeighborhoodAlgorithm::CalculateOutputWrapOffsetModifiers
Sets up itkNeighborhoodIterator output buffers.
Definition: itkNeighborhoodAlgorithm.h:135