PCL
|
Discretized vector surface interpolation/approximation in two dimensions. More...
#include <GridInterpolation.h>
Public Member Functions | |
PointGridInterpolation ()=default | |
PointGridInterpolation (const PointGridInterpolation &)=default | |
PointGridInterpolation (PointGridInterpolation &&)=default | |
void | Clear () |
double | Delta () const |
template<class R , class PSI > | |
void | Initialize (const R &rect, double delta, const PSI &PS, bool verbose=true) |
template<class R , class SI > | |
void | Initialize (const R &rect, double delta, const SI &Sx, const SI &Sy, bool verbose=true) |
template<class R > | |
void | Initialize (const R &rect, int delta, const DMatrix &Gx, const DMatrix &Gy) |
bool | IsValid () const |
template<typename T > | |
DPoint | operator() (const GenericPoint< T > &p) const |
template<typename T > | |
DPoint | operator() (T x, T y) const |
PointGridInterpolation & | operator= (const PointGridInterpolation &)=default |
PointGridInterpolation & | operator= (PointGridInterpolation &&)=default |
const DRect & | ReferenceRect () const |
const DMatrix & | XInterpolationMatrix () const |
const DMatrix & | YInterpolationMatrix () const |
Public Member Functions inherited from pcl::ParallelProcess | |
ParallelProcess ()=default | |
ParallelProcess (const ParallelProcess &)=default | |
virtual | ~ParallelProcess () |
void | DisableParallelProcessing (bool disable=true) noexcept |
void | EnableParallelProcessing (bool enable=true, int maxProcessors=0) noexcept |
bool | IsParallelProcessingEnabled () const noexcept |
int | MaxProcessors () const noexcept |
ParallelProcess & | operator= (const ParallelProcess &)=default |
void | SetMaxProcessors (int maxProcessors) noexcept |
void | Swap (ParallelProcess &process) noexcept |
This class performs the same tasks as a point surface interpolation device, such as PointSurfaceSpline or PointShepardInterpolation, but allows for much faster interpolation with negligible accuracy loss in most applications.
Interpolation from discrete grids can be orders of magnitude faster than direct evaluation of surface interpolation/approximation devices, depending on the number of input data points.
Definition at line 393 of file GridInterpolation.h.
|
default |
Default constructor. Yields an empty instance that cannot be used without initialization.
|
default |
Copy constructor.
|
default |
Move constructor.
|
inline |
Deallocates internal structures, yielding an empty object that cannot be used before a new call to Initialize().
Definition at line 731 of file GridInterpolation.h.
|
inline |
Returns the current grid distance for calculation of discrete function values. See Initialize() for more information.
Definition at line 754 of file GridInterpolation.h.
|
inline |
Initializes a PointGridInterpolation object with a point surface interpolation/approximation.
rect | Reference rectangle. Interpolation will be initialized within the boundaries of this rectangle at discrete delta coordinate intervals. |
delta | Grid distance for calculation of discrete function values. Must be > 0. |
PS | Reference to a point surface interpolation/approximation object that will be used to evaluate function values at discrete coordinate intervals. This object must have been previously initialized and must be valid. |
verbose | If true, this function will write information to the standard PixInsight console to provide some feedback to the user during the (potentially long) initialization process. If false, no feedback will be provided. |
The template parameter PSI must provide a member function of the form:
DPoint PSI::operator ()( int x, int y ) const
or an equivalent operator member function whose return value can be statically casted to DPoint, with two by-value parameters that can be statically casted from the int type. This function will be called multiple times to evaluate the approximated surface at discrete grid coordinate pairs {x,y}. The implementation of this member function must be thread-safe if parallel processing has been enabled and allowed for this object.
If parallel processing is allowed, this function executes the initialization process using multiple concurrent threads. See EnableParallelProcessing() for additional information.
Definition at line 461 of file GridInterpolation.h.
|
inline |
Initializes a PointGridInterpolation object with separate surface interpolations/approximations for the X and Y directions.
rect | Reference rectangle. Interpolation will be initialized within the boundaries of this rectangle at discrete delta coordinate intervals. |
delta | Grid distance for calculation of discrete function values. Must be > 0. |
Sx | Reference to a surface interpolation/approximation object that will be used to evaluate function values at discrete coordinate intervals on the X axis. This object must have been previously initialized and must be valid. |
Sy | Reference to a surface interpolation/approximation object that will be used to evaluate function values at discrete coordinate intervals on the Y axis. This object must have been previously initialized and must be valid. |
verbose | If true, this function will write information to the standard PixInsight console to provide some feedback to the user during the (potentially long) initialization process. If false, no feedback will be provided. |
The template parameter SI must provide a member function of the form:
double SI::operator ()( int x, int y ) const
or an equivalent operator member function whose return value can be statically casted to double, with two by-value parameters that can be statically casted from the int type. This function will be called multiple times for the Sx and Sy objects to evaluate the approximated surface at discrete grid coordinate pairs {x,y}, respectively on the X and Y plane directions. The implementation of this member function must be thread-safe if parallel processing has been enabled and allowed for this object.
If parallel processing is allowed, this function executes the initialization process using multiple concurrent threads. See EnableParallelProcessing() for additional information.
Definition at line 549 of file GridInterpolation.h.
|
inline |
Initializes this PointGridInterpolation object with prescribed interpolation matrices.
rect | Reference rectangle. Interpolation will be initialized within the boundaries of this rectangle at discrete delta coordinate intervals. |
delta | Grid distance for calculation of discrete function values. Must be > 0. |
Gx | interpolation matrix in the X direction. |
Gy | Interpolation matrix in the Y direction. |
Both Gx and Gy matrices must have n rows and m columns, which are given by:
n = 1 + Ceil( rect.Height()/delta )
m = 1 + Ceil( rect.Width()/delta )
If one or both matrices have different dimensions, this function will throw an Error exception.
Matrix elements must be function values computed at discrete delta intervals within rect boundaries. For a given matrix row r and matrix column c, the corresponding matrix element must be a function value computed at coordinates {x,y} given by:
x = rect.x0 + c*delta
y = rect.y0 + r*delta
Definition at line 626 of file GridInterpolation.h.
|
inline |
Returns true iff this is a valid, initialized object ready for interpolation.
Definition at line 722 of file GridInterpolation.h.
|
inline |
Returns an interpolated point at the given p.x and p.y coordinates.
Definition at line 799 of file GridInterpolation.h.
References pcl::GenericPoint< T >::x, and pcl::GenericPoint< T >::y.
|
inline |
Returns an interpolated point at the specified coordinates.
Definition at line 787 of file GridInterpolation.h.
|
default |
Copy assignment operator. Returns a reference to this object.
|
default |
Move assignment operator. Returns a reference to this object.
|
inline |
Returns the current interpolation reference rectangle. See Initialize() for more information.
The returned rectangle is ordered (see pcl::IsOrderedRect()).
Definition at line 745 of file GridInterpolation.h.
|
inline |
Returns a reference to the discrete matrix used for interpolation of function values in the X direction.
If this object has not been initialized, this member function returns a reference to an empty matrix.
Definition at line 766 of file GridInterpolation.h.
|
inline |
Returns a reference to the discrete matrix used for interpolation of function values in the Y direction.
If this object has not been initialized, this member function returns a reference to an empty matrix.
Definition at line 778 of file GridInterpolation.h.