ITK  6.0.0
Insight Toolkit
itkShapedNeighborhoodIterator.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 * https://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 itkShapedNeighborhoodIterator_h
19#define itkShapedNeighborhoodIterator_h
20
21#include <vector>
22#include <list>
24
25namespace itk
26{
149template <typename TImage, typename TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
150class ITK_TEMPLATE_EXPORT ShapedNeighborhoodIterator
151 : public ConstShapedNeighborhoodIterator<TImage, TBoundaryCondition>
152{
153public:
155 using InternalPixelType = typename TImage::InternalPixelType;
156 using PixelType = typename TImage::PixelType;
159 static constexpr unsigned int Dimension = TImage::ImageDimension;
164
166 using typename Superclass::OffsetType;
168 using typename Superclass::RadiusType;
169 using typename Superclass::SizeType;
170 using typename Superclass::SizeValueType;
171 using typename Superclass::ConstIterator;
172 using typename Superclass::IndexListType;
175 using typename Superclass::NeighborhoodType;
176 using typename Superclass::IndexType;
177 using typename Superclass::ImageType;
178 using typename Superclass::RegionType;
179 using typename Superclass::IndexValueType;
184 Iterator() = default;
185 Iterator(Self * s)
186 : ConstIterator(s)
187 {}
188
189 ~Iterator() = default;
190 Iterator &
191 operator=(const Iterator & o)
192 {
193 ConstIterator::operator=(o);
194 return *this;
195 }
196
197 // Promote to public
198 void
199 Set(const PixelType & v) const
200 {
201 ConstIterator::ProtectedSet(v);
202 }
204 protected:
205 friend Self;
206
207 Iterator(const Self * s, const typename IndexListType::const_iterator & li)
208 : ConstIterator(s, li)
209 {}
210 };
213 ShapedNeighborhoodIterator() = default;
216 ~ShapedNeighborhoodIterator() override = default;
220
223 ShapedNeighborhoodIterator(const SizeType & radius, const ImageType * ptr, const RegionType & region)
224 : Superclass(radius, const_cast<ImageType *>(ptr), region)
225 {}
226
227 // Expose the following methods from the superclass. This is a restricted
228 // subset of the methods available for NeighborhoodIterator.
229 using Superclass::SetPixel;
230 using Superclass::SetCenterPixel;
231
232
234 Self &
235 operator=(const Self & orig)
236 {
237 Superclass::operator=(orig);
238 return *this;
239 }
244 Iterator
245 Begin()
246 {
247 return Iterator(this, this->m_ActiveIndexList.begin());
249 Iterator
250 End()
251 {
252 return Iterator(this, this->m_ActiveIndexList.end());
253 }
256 using Superclass::Begin;
257 using Superclass::End;
259protected:
260 friend Superclass;
261
262 using typename Superclass::NeighborIndexType;
263};
264} // namespace itk
265
266#endif
Pixel-wise addition of two images.
Const version of ShapedNeighborhoodIterator, defining iteration of a local N-dimensional neighborhood...
typename NeighborhoodType::NeighborIndexType NeighborIndexType
A virtual base object that defines an interface to a class of boundary condition objects for use by n...
A light-weight container object for storing an N-dimensional neighborhood of values.
A neighborhood iterator which can take on an arbitrary shape.
typename OffsetType::OffsetValueType OffsetValueType
typename TImage::InternalPixelType InternalPixelType
BinaryGeneratorImageFilter< TInputImage1, TInputImage2, TOutputImage > Superclass
AddImageFilter Self
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
long IndexValueType
Definition: itkIntTypes.h:93
unsigned long SizeValueType
Definition: itkIntTypes.h:86
long OffsetValueType
Definition: itkIntTypes.h:97