ITK
4.1.0
Insight Segmentation and Registration Toolkit
|
#include <itkHilbertPath.h>
Represent an n-dimensional Hilbert path for a given order.
This class is used to construct a Hilbert spacing-filling curve (or path) for a given order and given dimension. The locality- preserving properties make the Hilbert path an attractive option for mapping multi-dimensional data to a single array.
The path is defined by its dimensionality and order( >= 1 ) with its starting point at [0]^Dimension. The size of the path in each dimension is 2^order where each discrete location is visited by that path. For example, a 2-D Hilbert path of order 8 can map each pixel of a 256x256 image onto a single array. More properties and visualizations can be found in various places on the web.
The implementation is based on Chris Hamilton, "Compact Hilbert Indices", Technical Report CS-2006-07, July 24, 2006. and a direct porting of the Aldo Cortesi's python code found at https://github.com/cortesi/scurve
Definition at line 53 of file itkHilbertPath.h.
typedef SmartPointer<const Self> itk::HilbertPath< TIndexValue, VDimension >::ConstPointer |
Reimplemented from itk::Path< TIndexValue, Index< VDimension >, VDimension >.
Definition at line 62 of file itkHilbertPath.h.
typedef unsigned int itk::HilbertPath< TIndexValue, VDimension >::HilbertOrderType |
Definition at line 80 of file itkHilbertPath.h.
typedef HilbertPathType::size_type itk::HilbertPath< TIndexValue, VDimension >::HilbertPathSizeType |
Definition at line 82 of file itkHilbertPath.h.
typedef std::vector<IndexType> itk::HilbertPath< TIndexValue, VDimension >::HilbertPathType |
Definition at line 81 of file itkHilbertPath.h.
typedef OutputType itk::HilbertPath< TIndexValue, VDimension >::IndexType |
All paths must be mapable to index space
Reimplemented from itk::Path< TIndexValue, Index< VDimension >, VDimension >.
Definition at line 79 of file itkHilbertPath.h.
typedef Superclass::InputType itk::HilbertPath< TIndexValue, VDimension >::InputType |
Input type
Reimplemented from itk::Path< TIndexValue, Index< VDimension >, VDimension >.
Definition at line 75 of file itkHilbertPath.h.
typedef Superclass::OffsetType itk::HilbertPath< TIndexValue, VDimension >::OffsetType |
Reimplemented from itk::Path< TIndexValue, Index< VDimension >, VDimension >.
Definition at line 83 of file itkHilbertPath.h.
typedef Superclass::OutputType itk::HilbertPath< TIndexValue, VDimension >::OutputType |
OutputType typedef support.
Reimplemented from itk::Path< TIndexValue, Index< VDimension >, VDimension >.
Definition at line 74 of file itkHilbertPath.h.
typedef InputType itk::HilbertPath< TIndexValue, VDimension >::PathIndexType |
The input/output typedefs
Definition at line 78 of file itkHilbertPath.h.
typedef SmartPointer<Self> itk::HilbertPath< TIndexValue, VDimension >::Pointer |
Reimplemented from itk::Path< TIndexValue, Index< VDimension >, VDimension >.
Definition at line 61 of file itkHilbertPath.h.
typedef HilbertPath<TIndexValue, VDimension> itk::HilbertPath< TIndexValue, VDimension >::Self |
Standard class typedefs.
Reimplemented from itk::Path< TIndexValue, Index< VDimension >, VDimension >.
Definition at line 59 of file itkHilbertPath.h.
typedef Path<unsigned int, Index<VDimension>, VDimension> itk::HilbertPath< TIndexValue, VDimension >::Superclass |
Reimplemented from itk::Path< TIndexValue, Index< VDimension >, VDimension >.
Definition at line 60 of file itkHilbertPath.h.
itk::HilbertPath< TIndexValue, VDimension >::HilbertPath | ( | ) | [protected] |
itk::HilbertPath< TIndexValue, VDimension >::~HilbertPath | ( | ) | [inline, protected] |
Definition at line 155 of file itkHilbertPath.h.
itk::HilbertPath< TIndexValue, VDimension >::HilbertPath | ( | const Self & | ) | [private] |
virtual void itk::HilbertPath< TIndexValue, VDimension >::Clear | ( | void | ) | [inline, virtual] |
Remove all steps from the path
Definition at line 119 of file itkHilbertPath.h.
void itk::HilbertPath< TIndexValue, VDimension >::ConstructHilbertPath | ( | ) | [private] |
virtual::itk::LightObject::Pointer itk::HilbertPath< TIndexValue, VDimension >::CreateAnother | ( | void | ) | const [virtual] |
Create an object from an instance, potentially deferring to a factory. This method allows you to create an instance of an object that is exactly the same type as the referring object. This is useful in cases where an object has been cast back to a base class.
Reimplemented from itk::Object.
virtual InputType itk::HilbertPath< TIndexValue, VDimension >::EndOfInput | ( | ) | const [inline, virtual] |
Where does the path end (what is the last valid input value)?
Reimplemented from itk::Path< TIndexValue, Index< VDimension >, VDimension >.
Definition at line 105 of file itkHilbertPath.h.
virtual OutputType itk::HilbertPath< TIndexValue, VDimension >::Evaluate | ( | const PathIndexType & | input | ) | const [inline, virtual] |
Evaluate the hilbert path for the index at the specified path-position.
Definition at line 88 of file itkHilbertPath.h.
virtual InputType itk::HilbertPath< TIndexValue, VDimension >::EvaluateInverse | ( | const IndexType & | input | ) | [inline, virtual] |
Evaluate the hilbert path for the path-position at the specified index.
Definition at line 99 of file itkHilbertPath.h.
virtual OutputType itk::HilbertPath< TIndexValue, VDimension >::EvaluateToIndex | ( | const PathIndexType & | input | ) | const [inline, virtual] |
Definition at line 93 of file itkHilbertPath.h.
PathIndexType itk::HilbertPath< TIndexValue, VDimension >::GetBitRange | ( | const PathIndexType | , |
const PathIndexType | , | ||
const PathIndexType | , | ||
const PathIndexType | |||
) | [private] |
PathIndexType itk::HilbertPath< TIndexValue, VDimension >::GetDirection | ( | const PathIndexType | , |
const PathIndexType | |||
) | [private] |
PathIndexType itk::HilbertPath< TIndexValue, VDimension >::GetEntry | ( | const PathIndexType | ) | [private] |
PathIndexType itk::HilbertPath< TIndexValue, VDimension >::GetGrayCode | ( | const PathIndexType | ) | [private] |
virtual HilbertOrderType itk::HilbertPath< TIndexValue, VDimension >::GetHilbertOrder | ( | ) | const [virtual] |
Set/get Hilbert order. The multi-dimensional space is of size 2^(HilbertOrder).
PathIndexType itk::HilbertPath< TIndexValue, VDimension >::GetInverseGrayCode | ( | const PathIndexType | ) | [private] |
PathIndexType itk::HilbertPath< TIndexValue, VDimension >::GetInverseTransform | ( | const PathIndexType | , |
const PathIndexType | , | ||
const PathIndexType | , | ||
const PathIndexType | |||
) | [private] |
PathIndexType itk::HilbertPath< TIndexValue, VDimension >::GetLeftBitRotation | ( | PathIndexType | , |
PathIndexType | , | ||
const PathIndexType | |||
) | [private] |
virtual const char* itk::HilbertPath< TIndexValue, VDimension >::GetNameOfClass | ( | ) | const [virtual] |
Run-time type information (and related methods).
Reimplemented from itk::Path< TIndexValue, Index< VDimension >, VDimension >.
PathIndexType itk::HilbertPath< TIndexValue, VDimension >::GetRightBitRotation | ( | PathIndexType | , |
PathIndexType | , | ||
const PathIndexType | |||
) | [private] |
PathIndexType itk::HilbertPath< TIndexValue, VDimension >::GetTrailingSetBits | ( | const PathIndexType | , |
const PathIndexType | |||
) | [private] |
PathIndexType itk::HilbertPath< TIndexValue, VDimension >::GetTransform | ( | const PathIndexType | , |
const PathIndexType | , | ||
const PathIndexType | , | ||
const PathIndexType | |||
) | [private] |
virtual OffsetType itk::HilbertPath< TIndexValue, VDimension >::IncrementInput | ( | InputType & | ) | const [inline, virtual] |
Increment the input variable passed by reference and then return the index stored at the new path-position.
Definition at line 113 of file itkHilbertPath.h.
virtual void itk::HilbertPath< TIndexValue, VDimension >::Initialize | ( | void | ) | [inline, virtual] |
Needed for Pipelining
Reimplemented from itk::DataObject.
Definition at line 133 of file itkHilbertPath.h.
static Pointer itk::HilbertPath< TIndexValue, VDimension >::New | ( | ) | [static] |
New() method for dynamic construction
Reimplemented from itk::Object.
virtual HilbertPathSizeType itk::HilbertPath< TIndexValue, VDimension >::NumberOfSteps | ( | ) | const [inline, virtual] |
How many steps in the path?
Definition at line 127 of file itkHilbertPath.h.
void itk::HilbertPath< TIndexValue, VDimension >::operator= | ( | const Self & | ) | [private] |
Reimplemented from itk::Path< TIndexValue, Index< VDimension >, VDimension >.
void itk::HilbertPath< TIndexValue, VDimension >::PrintSelf | ( | std::ostream & | os, |
Indent | indent | ||
) | const [protected, virtual] |
Method for grafting the content of one data object into another one. This method is intended to be overloaded by derived classes. Each one of them should use dynamic_casting in order to verify that the grafted object is actually of the same type as the class on which the Graft() method was invoked.
Reimplemented from itk::Path< TIndexValue, Index< VDimension >, VDimension >.
PathIndexType itk::HilbertPath< TIndexValue, VDimension >::SetBit | ( | const PathIndexType | , |
const PathIndexType | , | ||
const PathIndexType | , | ||
const PathIndexType | |||
) | [private] |
virtual void itk::HilbertPath< TIndexValue, VDimension >::SetHilbertOrder | ( | HilbertOrderType | _arg | ) | [virtual] |
Set/get Hilbert order. The multi-dimensional space is of size 2^(HilbertOrder).
PathIndexType itk::HilbertPath< TIndexValue, VDimension >::TransformMultiDimensionalIndexToPathIndex | ( | const IndexType & | index | ) |
Convert the multidimensional index to the path index
IndexType itk::HilbertPath< TIndexValue, VDimension >::TransformPathIndexToMultiDimensionalIndex | ( | const PathIndexType | id | ) |
Convert the path index to the multidimensional index location
const unsigned int itk::HilbertPath< TIndexValue, VDimension >::Dimension = VDimension [static] |
Dimension underlying input image.
Definition at line 71 of file itkHilbertPath.h.
HilbertOrderType itk::HilbertPath< TIndexValue, VDimension >::m_HilbertOrder [private] |
Definition at line 186 of file itkHilbertPath.h.
HilbertPathType itk::HilbertPath< TIndexValue, VDimension >::m_HilbertPath [private] |
Definition at line 187 of file itkHilbertPath.h.