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{
148template <typename TImage, typename TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
149class ITK_TEMPLATE_EXPORT ShapedNeighborhoodIterator
150 : public ConstShapedNeighborhoodIterator<TImage, TBoundaryCondition>
151{
152public:
154 using InternalPixelType = typename TImage::InternalPixelType;
155 using PixelType = typename TImage::PixelType;
158 static constexpr unsigned int Dimension = TImage::ImageDimension;
163
165 using typename Superclass::OffsetType;
167 using typename Superclass::RadiusType;
168 using typename Superclass::SizeType;
169 using typename Superclass::SizeValueType;
170 using typename Superclass::ConstIterator;
171 using typename Superclass::IndexListType;
174 using typename Superclass::NeighborhoodType;
175 using typename Superclass::IndexType;
176 using typename Superclass::ImageType;
177 using typename Superclass::RegionType;
178 using typename Superclass::IndexValueType;
183 Iterator() = default;
184 Iterator(Self * s)
185 : ConstIterator(s)
186 {}
187
188 ~Iterator() = default;
189 Iterator &
190 operator=(const Iterator & o)
191 {
192 ConstIterator::operator=(o);
193 return *this;
194 }
195
196 // Promote to public
197 void
198 Set(const PixelType & v) const
199 {
200 ConstIterator::ProtectedSet(v);
201 }
203 protected:
204 friend Self;
205
206 Iterator(const Self * s, const typename IndexListType::const_iterator & li)
207 : ConstIterator(s, li)
208 {}
209 };
212 ShapedNeighborhoodIterator() = default;
215 ~ShapedNeighborhoodIterator() override = default;
219
222 ShapedNeighborhoodIterator(const SizeType & radius, const ImageType * ptr, const RegionType & region)
223 : Superclass(radius, const_cast<ImageType *>(ptr), region)
224 {}
225
226 // Expose the following methods from the superclass. This is a restricted
227 // subset of the methods available for NeighborhoodIterator.
228 using Superclass::SetPixel;
229 using Superclass::SetCenterPixel;
230
231
233 Self &
234 operator=(const Self & orig)
235 {
236 Superclass::operator=(orig);
237 return *this;
238 }
243 Iterator
244 Begin()
245 {
246 return Iterator(this, this->m_ActiveIndexList.begin());
248 Iterator
249 End()
250 {
251 return Iterator(this, this->m_ActiveIndexList.end());
252 }
255 using Superclass::Begin;
256 using Superclass::End;
258protected:
259 friend Superclass;
260
261 using typename Superclass::NeighborIndexType;
262};
263} // namespace itk
264
265#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