ITK
5.0.0
Insight Segmentation and Registration Toolkit
|
#include <itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h>
A multi-dimensional iterator templated over image type that walks pixels within a region and is specialized to keep track of its image index location.
This class is a specialization of ImageRegionConstIteratorWithIndex, adding method GetFrequencyBins to give the frequency bins corresponding to image indices, and GetFrequency to get the frequency of the bin. The frequency bins depends on the image size.
The default assumes that the image to iterate over is the output of a forward FFT filter, where the first index corresponds to 0 frequency, and Nyquist Frequencies are in the middle, between positive and negative frequencies.
This class is specialized to iterate over the frequency layout that result after applying a
This iterator is for the frequency layout that results from applying a FFT (vnl or fftw) to an image. The default ImageInformation is: Origin = {{0}}, Spacing = {{1}}. In this case the frequency values will be in the range: [-1/2, 1/2] Hz Or [-pi, pi] rad/s To modify those ranges: a) Avoid modifying the origin. The origin index always corresponds to zero frequency after a FFT. The range should be always centered around zero. b) The spacing control the range of frequencies (always around zero). If the spacing is = {{0.5}} we get a frequency range of [-1/4, 1/4] or [-pi/2, pi/2].
The frequency layout is assumed to be: where fs is frequency sampling, or frequency spacing (1.0 by default). If N is even: <---------— Frequencies ------------—> 0(DC) fs/N 2*fs/N ... (N/2 -1)*fs/N fs/2 <---------— Indices ----------------—> 0 1 2 ... (N/2-1) N/2
0 <– DC Component (0 freq) 1 2 3 <– Nyquist.
If N is odd: Nyquist frequency is not represented but there are symmetric largest frequencies at index=N/2, N/2 +1 <-------—positive f ---------------—> 0(DC) fs/N ...... fs/2*(N-2)/N fs/2*(N-1)/N <---------— Indices ---------------—> 0 1 ...... (N-1)/2 -1 N/2(rounded down, i.e (N-1)/2)
0 <– DC Component (0 freq) 1 2 <– Largest Frequency bins
Please see ImageRegionConstIteratorWithIndex for more information.
Definition at line 119 of file itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h.
Private Member Functions | |
void | Init () |
Private Attributes | |
bool | m_ActualXDimensionIsOdd {false} |
FrequencyType | m_FrequencyOrigin |
FrequencyType | m_FrequencySpacing |
IndexType | m_LargestPositiveFrequencyIndex |
IndexType | m_MaxIndex |
IndexType | m_MinIndex |
Additional Inherited Members | |
Static Public Member Functions inherited from itk::ImageConstIteratorWithIndex< TImage > | |
static unsigned int | GetImageDimension () |
Static Public Attributes inherited from itk::ImageConstIteratorWithIndex< TImage > | |
static constexpr unsigned int | ImageDimension = TImage::ImageDimension |
Protected Attributes inherited from itk::ImageConstIteratorWithIndex< TImage > | |
const InternalPixelType * | m_Begin |
IndexType | m_BeginIndex |
const InternalPixelType * | m_End |
IndexType | m_EndIndex |
TImage::ConstWeakPointer | m_Image |
OffsetValueType | m_OffsetTable [ImageDimension+1] |
AccessorType | m_PixelAccessor |
AccessorFunctorType | m_PixelAccessorFunctor |
const InternalPixelType * | m_Position |
IndexType | m_PositionIndex |
RegionType | m_Region |
bool | m_Remaining |
using itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::AccessorType = typename Superclass::AccessorType |
Definition at line 137 of file itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h.
using itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::FrequencyType = typename ImageType::SpacingType |
Definition at line 139 of file itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h.
using itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::FrequencyValueType = typename ImageType::SpacingValueType |
Definition at line 140 of file itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h.
using itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::ImageType = typename Superclass::ImageType |
Definition at line 132 of file itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h.
using itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::IndexType = typename Superclass::IndexType |
Types inherited from the Superclass
Definition at line 128 of file itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h.
using itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::InternalPixelType = typename Superclass::InternalPixelType |
Definition at line 135 of file itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h.
using itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::OffsetType = typename Superclass::OffsetType |
Definition at line 130 of file itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h.
using itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::PixelContainer = typename Superclass::PixelContainer |
Definition at line 133 of file itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h.
using itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::PixelContainerPointer = typename Superclass::PixelContainerPointer |
Definition at line 134 of file itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h.
using itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::PixelType = typename Superclass::PixelType |
Definition at line 136 of file itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h.
using itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::RegionType = typename Superclass::RegionType |
Definition at line 131 of file itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h.
using itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::Self = FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex |
Standard class type alias.
Definition at line 124 of file itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h.
using itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::SizeType = typename Superclass::SizeType |
Definition at line 129 of file itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h.
using itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::Superclass = ImageRegionConstIteratorWithIndex< TImage > |
Definition at line 125 of file itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h.
|
inline |
Default constructor. Needed since we provide a cast constructor.
Definition at line 142 of file itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h.
References itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::Init().
|
inline |
Constructor establishes an iterator to walk a particular image and a particular region of that image.
Definition at line 151 of file itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h.
References itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::Init().
|
inlineexplicit |
Constructor that can be used to cast from an ImageIterator to an ImageRegionIteratorWithIndex. Many routines return an ImageIterator, but for a particular task, you may want an ImageRegionIteratorWithIndex. Rather than provide overloaded APIs that return different types of Iterators, itk returns ImageIterators and uses constructors to cast from an ImageIterator to a ImageRegionIteratorWithIndex.
Definition at line 165 of file itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h.
References itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::Init().
|
virtual |
Note that this method is independent of the region in the constructor. It takes into account the ImageInformation of the Image in the frequency domain. This iterator is for the frequency layout that results from applying a FFT (vnl or fftw) to an image. If your image has a different layout, use other frequency iterator. The default ImageInformation is: Origin = {{0}}, Spacing = {{1}}. In this case the frequency values will be in the range: [-1/2, 1/2] Hz Or [-pi, pi] rad/s To modify those ranges: a) Avoid modifying the origin. The origin index always corresponds to zero frequency after a FFT. The range should be always centered around zero. b) The spacing control the range of frequencies (always around zero). If the spacing is = {{0.5}} we get a frequency range of [-1/4, 1/4] or [-pi/2, pi/2].
f = [0, 1, ..., N/2-1, -N/2, ..., -1] * FrequencySpacing if N is even f = [0, 1, ..., (N-1)/2, -(N-1)/2, ..., -1] * FrequencySpacing if N is odd
Where FrequencySpacing = samplingFrequency / N; and samplingFrequency = 1.0 / inputImageSpatialDomainSpacing;
|
virtual |
Note that this method is independent of the region in the constructor. It takes into account the ImageInformation of the Image in the frequency domain. This iterator is for the frequency layout that results from applying a FFT (vnl or fftw) to an image. If your image has a different layout, use other frequency iterator. The default ImageInformation is: Origin = {{0}}, Spacing = {{1}}. In this case the frequency values will be in the range: [-1/2, 1/2] Hz Or [-pi, pi] rad/s To modify those ranges: a) Avoid modifying the origin. The origin index always corresponds to zero frequency after a FFT. The range should be always centered around zero. b) The spacing control the range of frequencies (always around zero). If the spacing is = {{0.5}} we get a frequency range of [-1/4, 1/4] or [-pi/2, pi/2].
f = [0, 1, ..., N/2-1, -N/2, ..., -1] * FrequencySpacing if N is even f = [0, 1, ..., (N-1)/2, -(N-1)/2, ..., -1] * FrequencySpacing if N is odd
Where FrequencySpacing = samplingFrequency / N; and samplingFrequency = 1.0 / inputImageSpatialDomainSpacing;
|
virtual |
Note that this method is independent of the region in the constructor. It takes into account the ImageInformation of the Image in the frequency domain. This iterator is for the frequency layout that results from applying a FFT (vnl or fftw) to an image. If your image has a different layout, use other frequency iterator. The default ImageInformation is: Origin = {{0}}, Spacing = {{1}}. In this case the frequency values will be in the range: [-1/2, 1/2] Hz Or [-pi, pi] rad/s To modify those ranges: a) Avoid modifying the origin. The origin index always corresponds to zero frequency after a FFT. The range should be always centered around zero. b) The spacing control the range of frequencies (always around zero). If the spacing is = {{0.5}} we get a frequency range of [-1/4, 1/4] or [-pi/2, pi/2].
f = [0, 1, ..., N/2-1, -N/2, ..., -1] * FrequencySpacing if N is even f = [0, 1, ..., (N-1)/2, -(N-1)/2, ..., -1] * FrequencySpacing if N is odd
Where FrequencySpacing = samplingFrequency / N; and samplingFrequency = 1.0 / inputImageSpatialDomainSpacing;
Referenced by itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::Init(), and itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::SetActualXDimensionIsOdd().
|
inline |
Note that this method is independent of the region in the constructor. It takes into account the ImageInformation of the Image in the frequency domain. This iterator is for the frequency layout that results from applying a FFT (vnl or fftw) to an image. If your image has a different layout, use other frequency iterator. The default ImageInformation is: Origin = {{0}}, Spacing = {{1}}. In this case the frequency values will be in the range: [-1/2, 1/2] Hz Or [-pi, pi] rad/s To modify those ranges: a) Avoid modifying the origin. The origin index always corresponds to zero frequency after a FFT. The range should be always centered around zero. b) The spacing control the range of frequencies (always around zero). If the spacing is = {{0.5}} we get a frequency range of [-1/4, 1/4] or [-pi/2, pi/2].
f = [0, 1, ..., N/2-1, -N/2, ..., -1] * FrequencySpacing if N is even f = [0, 1, ..., (N-1)/2, -(N-1)/2, ..., -1] * FrequencySpacing if N is odd
Where FrequencySpacing = samplingFrequency / N; and samplingFrequency = 1.0 / inputImageSpatialDomainSpacing;
Definition at line 217 of file itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h.
References itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::GetFrequencyBin(), itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::m_FrequencyOrigin, and itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::m_FrequencySpacing.
Referenced by itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::GetFrequencyModuloSquare().
|
inline |
Definition at line 180 of file itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h.
References itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::m_LargestPositiveFrequencyIndex, itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::m_MaxIndex, itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::m_MinIndex, and itk::ImageConstIteratorWithIndex< TImage >::m_PositionIndex.
Referenced by itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::GetFrequency().
|
inline |
Note that this method is independent of the region in the constructor. It takes into account the ImageInformation of the Image in the frequency domain. This iterator is for the frequency layout that results from applying a FFT (vnl or fftw) to an image. If your image has a different layout, use other frequency iterator. The default ImageInformation is: Origin = {{0}}, Spacing = {{1}}. In this case the frequency values will be in the range: [-1/2, 1/2] Hz Or [-pi, pi] rad/s To modify those ranges: a) Avoid modifying the origin. The origin index always corresponds to zero frequency after a FFT. The range should be always centered around zero. b) The spacing control the range of frequencies (always around zero). If the spacing is = {{0.5}} we get a frequency range of [-1/4, 1/4] or [-pi/2, pi/2].
f = [0, 1, ..., N/2-1, -N/2, ..., -1] * FrequencySpacing if N is even f = [0, 1, ..., (N-1)/2, -(N-1)/2, ..., -1] * FrequencySpacing if N is odd
Where FrequencySpacing = samplingFrequency / N; and samplingFrequency = 1.0 / inputImageSpatialDomainSpacing;
Definition at line 231 of file itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h.
References itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::GetFrequency().
|
virtual |
Origin of frequencies is zero for FFT output.
|
virtual |
This is the pixel width, or the bin size of the frequency in physical or world coordinates. SamplingFrequency = 1.0 / SpatialImageSpacing FrequencySpacing = SamplingFrequency / ImageSize FrequencySpacing = 1.0 / (SpatialImageSpacing * ImageSize) FrequencySpacing is computed at construction from the spacing of the input image, and cannot be modified.
|
virtual |
Index corresponding to the first highest frequency (Nyquist) after a FFT transform. If the size of the image is even, the Nyquist frequency = fs/2 is unique and shared between positive and negative frequencies. (Even Size) LargestPositiveFrequencyIndex = originIndex + N / 2 If odd, Nyquist frequency is not represented, but there is still a largest frequency at this index = fs/2 * (N-1)/N. (Odd Size) LargestPositiveFrequencyIndex = originIndex + (N + 1) / 2
|
virtual |
Default to UpperIndex of the largest possible Region.
|
virtual |
Default to first index of the largest possible Region.
|
inlineprivate |
Calculate Nyquist frequency index (m_LargestPositiveFrequencyIndex), Min/Max indices from LargestPossibleRegion. Also sets FrequencySpacing and FrequencyOrigin. Called by constructors.
Definition at line 293 of file itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h.
References itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::GetActualXDimensionIsOdd(), itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::m_FrequencyOrigin, itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::m_FrequencySpacing, itk::ImageConstIteratorWithIndex< TImage >::m_Image, itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::m_LargestPositiveFrequencyIndex, itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::m_MaxIndex, and itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::m_MinIndex.
|
inline |
In images resulting from itkRealToHalfHermitianForwardFFT the size in the fastest dimension (0) is n/2 + 1. To compute the right frequency spacing and the original size, this information has to be provided.
Definition at line 276 of file itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h.
References itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::GetActualXDimensionIsOdd(), itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::m_ActualXDimensionIsOdd, itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::m_FrequencySpacing, and itk::ImageConstIteratorWithIndex< TImage >::m_Image.
|
private |
Definition at line 332 of file itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h.
Referenced by itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::SetActualXDimensionIsOdd().
|
private |
Definition at line 330 of file itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h.
Referenced by itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::GetFrequency(), and itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::Init().
|
private |
Definition at line 331 of file itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h.
Referenced by itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::GetFrequency(), itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::Init(), and itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::SetActualXDimensionIsOdd().
|
private |
Definition at line 327 of file itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h.
Referenced by itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::GetFrequencyBin(), and itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::Init().
|
private |
Definition at line 329 of file itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h.
Referenced by itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::GetFrequencyBin(), and itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::Init().
|
private |
Definition at line 328 of file itkFrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex.h.
Referenced by itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::GetFrequencyBin(), and itk::FrequencyHalfHermitianFFTLayoutImageRegionConstIteratorWithIndex< TImage >::Init().