ITK  5.2.0
Insight Toolkit
itkFrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex.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 itkFrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex_h
19 #define itkFrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex_h
20 
22 
23 namespace itk
24 {
114 template <typename TImage>
116 {
117 public:
118 
122 
125  using SizeType = typename Superclass::SizeType;
134 
135  using FrequencyType = typename ImageType::SpacingType;
136  using FrequencyValueType = typename ImageType::SpacingValueType;
140  {
141  this->Init();
142  }
143 
147  : ImageRegionConstIteratorWithIndex<TImage>(ptr, region)
148  {
149  this->Init();
150  }
151 
160  {
161  this->Init();
162  }
163 
164  /*
165  * Image Index [0, N - 1] returns [-N/2 + 1, -1] (negative) union [0 to N/2] (positive). So index N/2 + 1 returns the
166  * bin 0. It is a shift by -N/2 + 1, from [0, N-1] to [-N/2 + 1, N/2] If first index of the image is not zero, it
167  * stills returns values in the same range.
168  */
169  IndexType
171  {
172  IndexType freqInd;
173 
174  freqInd.Fill(0);
175  for (unsigned int dim = 0; dim < TImage::ImageDimension; dim++)
176  {
177  freqInd[dim] = this->m_PositionIndex[dim] - this->m_ZeroFrequencyIndex[dim];
178  }
179  return freqInd;
180  }
181 
193  GetFrequency() const
194  {
195  FrequencyType freq;
196  IndexType freqInd = this->GetFrequencyBin();
198 
199  for (unsigned int dim = 0; dim < TImage::ImageDimension; dim++)
200  {
201  freq[dim] = this->m_FrequencyOrigin[dim] + this->m_FrequencySpacing[dim] * freqInd[dim];
202  }
203  return freq;
204  }
205 
208  {
209  FrequencyValueType w2(0);
210  FrequencyType w(this->GetFrequency());
211 
212  for (unsigned int dim = 0; dim < TImage::ImageDimension; dim++)
213  {
214  w2 += w[dim] * w[dim];
215  }
216  return w2;
217  }
218 
225  itkGetConstReferenceMacro(ZeroFrequencyIndex, IndexType);
226 
228  itkGetConstReferenceMacro(FrequencyOrigin, FrequencyType);
229 
236  itkGetConstReferenceMacro(FrequencySpacing, FrequencyType);
237 
240  void
242  {
243  this->m_ActualXDimensionIsOdd = value;
244  };
245  itkGetMacro(ActualXDimensionIsOdd, bool);
246  itkBooleanMacro(ActualXDimensionIsOdd);
248 
249 private:
252  void
254  {
255  IndexType minIndex = this->m_Image->GetLargestPossibleRegion().GetIndex();
256  SizeType sizeImage = this->m_Image->GetLargestPossibleRegion().GetSize();
257  for (unsigned int dim = 0; dim < ImageType::ImageDimension; dim++)
258  {
259  this->m_ZeroFrequencyIndex[dim] =
260  static_cast<FrequencyValueType>(minIndex[dim] + std::floor(sizeImage[dim] / 2.0));
261  // Set frequency metadata.
262  // Origin of frequencies is zero in the standard layout of a FFT output.
263  this->m_FrequencyOrigin[dim] = 0.0;
264  // SamplingFrequency = 1.0 / SpatialImageSpacing
265  // Freq_BinSize = SamplingFrequency / Size
266  this->m_FrequencySpacing[dim] = 1.0 / (this->m_Image->GetSpacing()[dim] * sizeImage[dim]);
267  }
268  }
270 
275 };
276 } // end namespace itk
277 #endif
itk::FrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex::Init
void Init()
Definition: itkFrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex.h:253
itk::ImageRegionConstIteratorWithIndex::PixelType
typename Superclass::PixelType PixelType
Definition: itkImageRegionConstIteratorWithIndex.h:151
itk::FrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex::SetActualXDimensionIsOdd
void SetActualXDimensionIsOdd(bool value)
Definition: itkFrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex.h:241
itk::ImageConstIteratorWithIndex::SizeType
typename TImage::SizeType SizeType
Definition: itkImageConstIteratorWithIndex.h:109
itkImageRegionConstIteratorWithIndex.h
itk::ImageRegionConstIteratorWithIndex
A multi-dimensional iterator templated over image type that walks an image region and is specialized ...
Definition: itkImageRegionConstIteratorWithIndex.h:130
itk::FrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex::FrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex
FrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex(const Superclass &it)
Definition: itkFrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex.h:158
itk::ImageConstIteratorWithIndex::m_Image
TImage::ConstWeakPointer m_Image
Definition: itkImageConstIteratorWithIndex.h:296
itk::ImageRegionConstIteratorWithIndex::PixelContainerPointer
typename Superclass::PixelContainerPointer PixelContainerPointer
Definition: itkImageRegionConstIteratorWithIndex.h:149
itk::ImageConstIteratorWithIndex::PixelContainerPointer
typename PixelContainer::Pointer PixelContainerPointer
Definition: itkImageConstIteratorWithIndex.h:122
itk::ImageRegionConstIteratorWithIndex::ImageType
typename Superclass::ImageType ImageType
Definition: itkImageRegionConstIteratorWithIndex.h:147
itk::ImageConstIteratorWithIndex::PixelType
typename TImage::PixelType PixelType
Definition: itkImageConstIteratorWithIndex.h:128
itk::FrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex::FrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex
FrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex()
Definition: itkFrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex.h:138
itk::ImageRegionConstIteratorWithIndex::OffsetType
typename Superclass::OffsetType OffsetType
Definition: itkImageRegionConstIteratorWithIndex.h:145
itk::FrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex::m_ZeroFrequencyIndex
IndexType m_ZeroFrequencyIndex
Definition: itkFrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex.h:271
itk::ImageConstIteratorWithIndex::IndexType
typename TImage::IndexType IndexType
Definition: itkImageConstIteratorWithIndex.h:105
itk::ImageConstIteratorWithIndex::InternalPixelType
typename TImage::InternalPixelType InternalPixelType
Definition: itkImageConstIteratorWithIndex.h:125
itk::FrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex::m_FrequencyOrigin
FrequencyType m_FrequencyOrigin
Definition: itkFrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex.h:272
itk::ImageRegionConstIteratorWithIndex::RegionType
typename Superclass::RegionType RegionType
Definition: itkImageRegionConstIteratorWithIndex.h:146
itk::FrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex::FrequencyType
typename ImageType::SpacingType FrequencyType
Definition: itkFrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex.h:135
itk::ImageConstIteratorWithIndex::AccessorType
typename TImage::AccessorType AccessorType
Definition: itkImageConstIteratorWithIndex.h:132
itk::ImageRegionConstIteratorWithIndex::IndexType
typename Superclass::IndexType IndexType
Definition: itkImageRegionConstIteratorWithIndex.h:143
itk::ImageConstIteratorWithIndex
A base class for multi-dimensional iterators templated over image type that are designed to efficient...
Definition: itkImageConstIteratorWithIndex.h:92
itk::FrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex::IndexType
typename Superclass::IndexType IndexType
Definition: itkFrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex.h:124
itk::FrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex::GetFrequencyModuloSquare
FrequencyValueType GetFrequencyModuloSquare() const
Definition: itkFrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex.h:207
itk::FrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex::FrequencyValueType
typename ImageType::SpacingValueType FrequencyValueType
Definition: itkFrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex.h:136
itk::ImageRegionConstIteratorWithIndex::AccessorType
typename Superclass::AccessorType AccessorType
Definition: itkImageRegionConstIteratorWithIndex.h:152
itk::ImageRegionConstIteratorWithIndex::InternalPixelType
typename Superclass::InternalPixelType InternalPixelType
Definition: itkImageRegionConstIteratorWithIndex.h:150
itk::FrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex::FrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex
FrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex(const TImage *ptr, const RegionType &region)
Definition: itkFrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex.h:146
itk::ImageRegionConstIteratorWithIndex::SizeType
typename Superclass::SizeType SizeType
Definition: itkImageRegionConstIteratorWithIndex.h:144
itk::FrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex::GetFrequencyBin
IndexType GetFrequencyBin() const
Definition: itkFrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex.h:170
itk
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
Definition: itkAnnulusOperator.h:24
itk::FrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex::m_ActualXDimensionIsOdd
bool m_ActualXDimensionIsOdd
Definition: itkFrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex.h:274
itk::ImageConstIteratorWithIndex::RegionType
typename TImage::RegionType RegionType
Definition: itkImageConstIteratorWithIndex.h:113
itk::ImageConstIteratorWithIndex::m_PositionIndex
IndexType m_PositionIndex
Definition: itkImageConstIteratorWithIndex.h:298
itk::FrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex
A multi-dimensional iterator templated over image type that walks pixels within a region and is speci...
Definition: itkFrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex.h:115
itk::ImageRegionConstIteratorWithIndex::PixelContainer
typename Superclass::PixelContainer PixelContainer
Definition: itkImageRegionConstIteratorWithIndex.h:148
itk::FrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex::m_FrequencySpacing
FrequencyType m_FrequencySpacing
Definition: itkFrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex.h:273
itk::ImageConstIteratorWithIndex::ImageType
TImage ImageType
Definition: itkImageConstIteratorWithIndex.h:116
itk::ImageConstIteratorWithIndex::PixelContainer
typename TImage::PixelContainer PixelContainer
Definition: itkImageConstIteratorWithIndex.h:121
itk::FrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex::GetFrequency
FrequencyType GetFrequency() const
Definition: itkFrequencyShiftedFFTLayoutImageRegionConstIteratorWithIndex.h:193
itk::ImageConstIteratorWithIndex::OffsetType
typename TImage::OffsetType OffsetType
Definition: itkImageConstIteratorWithIndex.h:136