ITK
4.12.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.
Public Types | |
typedef SmartPointer< const Self > | ConstPointer |
typedef unsigned int | HilbertOrderType |
typedef HilbertPathType::size_type | HilbertPathSizeType |
typedef std::vector< IndexType > | HilbertPathType |
typedef OutputType | IndexType |
typedef Superclass::InputType | InputType |
typedef Superclass::OffsetType | OffsetType |
typedef Superclass::OutputType | OutputType |
typedef InputType | PathIndexType |
typedef SmartPointer< Self > | Pointer |
typedef HilbertPath < TIndexValue, VDimension > | Self |
typedef Path< unsigned int, Index< VDimension > , VDimension > | Superclass |
Public Types inherited from itk::Path< TIndexValue, Index< VDimension >, VDimension > | |
typedef SmartPointer< const Self > | ConstPointer |
typedef Index< VDimension > | IndexType |
typedef TIndexValue | InputType |
typedef Offset< VDimension > | OffsetType |
typedef Index< VDimension > | OutputType |
typedef SmartPointer< Self > | Pointer |
typedef Path | Self |
typedef DataObject | Superclass |
Static Public Member Functions | |
static Pointer | New () |
Static Public Attributes | |
static const unsigned int | Dimension = VDimension |
Static Public Attributes inherited from itk::Path< TIndexValue, Index< VDimension >, VDimension > | |
static const unsigned int | PathDimension |
Protected Member Functions | |
HilbertPath () | |
void | PrintSelf (std::ostream &os, Indent indent) const override |
~HilbertPath () | |
Protected Member Functions inherited from itk::Path< TIndexValue, Index< VDimension >, VDimension > | |
virtual IndexType | GetZeroIndex () const |
virtual OffsetType | GetZeroOffset () const |
Path () | |
~Path () | |
Private Member Functions | |
void | ConstructHilbertPath () |
PathIndexType | GetBitRange (const PathIndexType, const PathIndexType, const PathIndexType, const PathIndexType) |
PathIndexType | GetDirection (const PathIndexType, const PathIndexType) |
PathIndexType | GetEntry (const PathIndexType) |
PathIndexType | GetGrayCode (const PathIndexType) |
PathIndexType | GetInverseGrayCode (const PathIndexType) |
PathIndexType | GetInverseTransform (const PathIndexType, const PathIndexType, const PathIndexType, const PathIndexType) |
PathIndexType | GetLeftBitRotation (PathIndexType, PathIndexType, const PathIndexType) |
PathIndexType | GetRightBitRotation (PathIndexType, PathIndexType, const PathIndexType) |
PathIndexType | GetTrailingSetBits (const PathIndexType, const PathIndexType) |
PathIndexType | GetTransform (const PathIndexType, const PathIndexType, const PathIndexType, const PathIndexType) |
PathIndexType | SetBit (const PathIndexType, const PathIndexType, const PathIndexType, const PathIndexType) |
Private Attributes | |
HilbertOrderType | m_HilbertOrder |
HilbertPathType | m_HilbertPath |
typedef SmartPointer<const Self> itk::HilbertPath< TIndexValue, VDimension >::ConstPointer |
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 |
Definition at line 79 of file itkHilbertPath.h.
typedef Superclass::InputType itk::HilbertPath< TIndexValue, VDimension >::InputType |
Definition at line 75 of file itkHilbertPath.h.
typedef Superclass::OffsetType itk::HilbertPath< TIndexValue, VDimension >::OffsetType |
Definition at line 83 of file itkHilbertPath.h.
typedef Superclass::OutputType itk::HilbertPath< TIndexValue, VDimension >::OutputType |
OutputType typedef support.
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 |
Definition at line 61 of file itkHilbertPath.h.
typedef HilbertPath<TIndexValue, VDimension> itk::HilbertPath< TIndexValue, VDimension >::Self |
Standard class typedefs.
Definition at line 59 of file itkHilbertPath.h.
typedef Path<unsigned int, Index<VDimension>, VDimension> itk::HilbertPath< TIndexValue, VDimension >::Superclass |
Definition at line 60 of file itkHilbertPath.h.
|
protected |
|
inlineprotected |
Definition at line 155 of file itkHilbertPath.h.
|
inlinevirtual |
Remove all steps from the path
Definition at line 119 of file itkHilbertPath.h.
|
private |
virtual::itk::LightObject::Pointer itk::HilbertPath< TIndexValue, VDimension >::CreateAnother | ( | ) | const |
|
inlineoverridevirtual |
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.
|
inlineoverridevirtual |
Evaluate the hilbert path for the index at the specified path-position.
Definition at line 88 of file itkHilbertPath.h.
|
inlinevirtual |
Evaluate the hilbert path for the path-position at the specified index.
Definition at line 99 of file itkHilbertPath.h.
|
inlineoverridevirtual |
Definition at line 93 of file itkHilbertPath.h.
|
private |
|
private |
|
private |
|
private |
|
virtual |
Set/get Hilbert order. The multi-dimensional space is of size 2^(HilbertOrder).
|
private |
|
private |
|
private |
|
virtual |
Run-time type information (and related methods).
Reimplemented from itk::Path< TIndexValue, Index< VDimension >, VDimension >.
|
private |
|
private |
|
private |
|
inlineoverridevirtual |
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.
|
inlineoverridevirtual |
Needed for Pipelining
Definition at line 133 of file itkHilbertPath.h.
|
static |
New() method for dynamic construction
|
inlinevirtual |
How many steps in the path?
Definition at line 127 of file itkHilbertPath.h.
|
overrideprotectedvirtual |
Reimplemented from itk::Path< TIndexValue, Index< VDimension >, VDimension >.
|
private |
|
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
|
static |
Dimension underlying input image.
Definition at line 71 of file itkHilbertPath.h.
|
private |
Definition at line 185 of file itkHilbertPath.h.
|
private |
Definition at line 186 of file itkHilbertPath.h.