|
Ponca
8e4373a7fc557bbfb1afb9210d70f03872388d04
Point Cloud Analysis library
|
Weight neighbors according to the euclidean distance between a query and a reference position. More...
#include <weightFunc.h>
Inheritance diagram for Ponca::DistWeightFunc< DataPoint, WeightKernel >:
Collaboration diagram for Ponca::DistWeightFunc< DataPoint, WeightKernel >:Public Types | |
| using | Scalar = typename DataPoint::Scalar |
| Scalar type from DataPoint. | |
| using | VectorType = typename DataPoint::VectorType |
| Vector type from DataPoint. | |
| using | MatrixType = typename DataPoint::MatrixType |
| Matrix type from DataPoint. | |
| using | WeightReturnType = std::pair< Scalar, VectorType > |
| Return type of the method #w() | |
| using | NeighborhoodFrame = CenteredNeighborhoodFrame< DataPoint > |
| Frame used to express the neighbors locally. | |
Public Types inherited from Ponca::CenteredNeighborhoodFrame< DataPoint > | |
| using | Scalar = typename DataPoint::Scalar |
| Scalar type from DataPoint. | |
| using | VectorType = typename DataPoint::VectorType |
| Vector type from DataPoint. | |
Public Member Functions | |
| DistWeightFunc (const VectorType &_evalPos=VectorType::Zero(), const Scalar &_t=Scalar(1.)) | |
| Constructor that defines the current evaluation scale. | |
| WeightReturnType | operator() (const DataPoint &q) const |
| Compute the weight of the given query with respect to its coordinates. | |
| VectorType | spacedw (const VectorType &_q, const DataPoint &) const |
| First order derivative in space (for each spatial dimension \(\mathsf{x})\). | |
| MatrixType | spaced2w (const VectorType &_q, const DataPoint &) const |
| Second order derivative in space (for each spatial dimension \(\mathsf{x})\). | |
| Scalar | scaledw (const VectorType &_q, const DataPoint &) const |
| First order derivative in scale \(t\). | |
| Scalar | scaled2w (const VectorType &_q, const DataPoint &) const |
| Second order derivative in scale \(t\). | |
| VectorType | scaleSpaced2w (const VectorType &_q, const DataPoint &) const |
| Cross derivative in scale \(t\) and in space (for each spatial dimension \(\mathsf{x})\). | |
| Scalar | evalScale () const |
| Access to the evaluation scale set during the initialization. | |
Public Member Functions inherited from Ponca::CenteredNeighborhoodFrame< DataPoint > | |
| CenteredNeighborhoodFrame (const VectorType &_evalPos=VectorType::Zero()) | |
| void | changeNeighborhoodFrame (const VectorType &_newEvalPos) |
| Change neighborhood frame (move basis center) | |
| VectorType | convertToGlobalBasis (const VectorType &_q) const |
| Convert query from local to global coordinate system, such as \(\mathbf{x}=\mathbf{x}'+\mathbf{p}\). | |
| VectorType | convertToLocalBasis (const VectorType &_q) const |
| Convert query from global to local coordinate system, such as \(\mathbf{x}'=\mathbf{x}-\mathbf{p}\). | |
| VectorType | evalPos () const |
| Get access to the stored points of evaluation. | |
Static Public Attributes | |
| static constexpr bool | isCompact = WeightKernel::isCompact |
| Flag indicating if the weighting kernel is compact of not. | |
Static Public Attributes inherited from Ponca::CenteredNeighborhoodFrame< DataPoint > | |
| static constexpr bool | hasLocalFrame = true |
| Flag indicating that this class modifies the coordinates when passing from global to local. | |
Protected Attributes | |
| Scalar | m_t |
| Evaluation scale. | |
| WeightKernel | m_wk |
| 1D function applied to weight queries | |
Weight neighbors according to the euclidean distance between a query and a reference position.
The evaluation position is set in the constructor. All the queries are expressed in global system, and converted internally to relatively to the evaluation position using CenteredNeighborhoodFrame.
| DataPoint | Type of input points. |
| WeightKernel | 1d function used to compute the weight depending on the distance between query point and the basis center. If WeightKernel::isCompact == true, the distance to the basis center is checked against the scale parameter, and any point whose distance is larger than the scale will be assigned with a weight of \(0\). For non-compact (ie. global) kernels, the weights are computed for all points. |
Definition at line 126 of file weightFunc.h.
| using Ponca::DistWeightFunc< DataPoint, WeightKernel >::MatrixType = typename DataPoint::MatrixType |
Matrix type from DataPoint.
Definition at line 134 of file weightFunc.h.
| using Ponca::DistWeightFunc< DataPoint, WeightKernel >::NeighborhoodFrame = CenteredNeighborhoodFrame<DataPoint> |
Frame used to express the neighbors locally.
Definition at line 138 of file weightFunc.h.
| using Ponca::DistWeightFunc< DataPoint, WeightKernel >::Scalar = typename DataPoint::Scalar |
Scalar type from DataPoint.
Definition at line 130 of file weightFunc.h.
| using Ponca::DistWeightFunc< DataPoint, WeightKernel >::VectorType = typename DataPoint::VectorType |
Vector type from DataPoint.
Definition at line 132 of file weightFunc.h.
| using Ponca::DistWeightFunc< DataPoint, WeightKernel >::WeightReturnType = std:: pair <Scalar, VectorType> |
Return type of the method #w()
Definition at line 136 of file weightFunc.h.
|
inline |
Constructor that defines the current evaluation scale.
Definition at line 146 of file weightFunc.h.
|
inline |
Access to the evaluation scale set during the initialization.
Definition at line 274 of file weightFunc.h.
|
inline |
Compute the weight of the given query with respect to its coordinates.
| _q | Query in global coordinate system |
As the query \(\mathbf{q}\) is expressed in global coordinate, it is first converted to the centered basis. Then, the WeightKernel is directly applied to the norm of its coordinates with respect to the current scale \( t \) :
\( w(\frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}) \)
Definition at line 11 of file weightFunc.hpp.
|
inline |
Second order derivative in scale \(t\).
| _q | Query in global coordinate system |
\( \frac{\delta^2 \frac{\left|\mathbf{q}\right|}{t}}{\delta t^2} \nabla w(\frac{\left|\mathbf{q}\right|}{t}) + \left(\frac{\delta \frac{\left|\mathbf{q}\right|}{t}}{\delta t}\right)^2 \nabla^2 w(\frac{\left|\mathbf{q}\right|}{t}) = \frac{2\left|\mathbf{q}\right|}{t^3} \nabla{w(\frac{\left|\mathbf{q}\right|}{t})} + \frac{\left|\mathbf{q}\right|^2}{t^4} \nabla^2{w(\frac{\left|\mathbf{q}\right|}{t})} \)
where \( \left|\mathbf{q}\right| \) represents the norm of the query coordinates expressed in centered basis.
Definition at line 66 of file weightFunc.hpp.
|
inline |
First order derivative in scale \(t\).
| _q | Query in global coordinate system |
\( \frac{\delta \frac{\left|\mathbf{q}\right|}{t}}{\delta t} \nabla w(\frac{\left|\mathbf{q}\right|}{t}) = - \frac{\left|\mathbf{q}\right|}{t^2} \nabla{w(\frac{\left|\mathbf{q}\right|}{t})} \)
where \( \left|\mathbf{q}\right| \) represents the norm of the query coordinates expressed in centered basis.
Definition at line 56 of file weightFunc.hpp.
|
inline |
Cross derivative in scale \(t\) and in space (for each spatial dimension \(\mathsf{x})\).
| _q | Query in global coordinate system |
\( \frac{\delta^2 \frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}}{\delta t\ \delta \mathsf{x}} \nabla w(\frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}) + \frac{\delta \frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}}{\delta \mathsf{x}} \frac{\delta \frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}}{\delta t} \nabla^2 w(\frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}) = -\frac{\mathbf{q}_\mathsf{x}}{t^2} \left( \frac{1}{\left|\mathbf{q}_\mathsf{x}\right|}\nabla w(\frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}) + \frac{1}{t}\nabla^2 w(\frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}) \right)\)
where \( \left|\mathbf{q}_\mathsf{x}\right| \) represents the norm of the query coordinates expressed in centered basis.
Definition at line 78 of file weightFunc.hpp.
|
inline |
Second order derivative in space (for each spatial dimension \(\mathsf{x})\).
| _q | Query in global coordinate system |
\( \frac{\delta^2 \frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}}{\delta \mathsf{x}^2} \nabla w(\frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}) + \left(\frac{\delta \frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}}{\delta \mathsf{x}}\right)^2 \nabla^2 w(\frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}) = \frac{1}{t\left|\mathbf{q}_\mathsf{x}\right|} \left( I_d - \frac{\mathbf{q}_\mathsf{x}\mathbf{q}_\mathsf{x}^T}{\left|\mathbf{q}_\mathsf{x}\right|^2}\right) \nabla w(\frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}) + \frac{\mathbf{q}_\mathsf{x}\mathbf{q}_\mathsf{x}^T}{t^2\left|\mathbf{q}_\mathsf{x}\right|^2} \nabla^2 w(\frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}) \)
where \( \left|\mathbf{q}_\mathsf{x}\right| \) represents the norm of the query coordinates expressed in centered basis, for each spatial dimensions \( \mathsf{x}\).
Definition at line 37 of file weightFunc.hpp.
|
inline |
First order derivative in space (for each spatial dimension \(\mathsf{x})\).
| _q | Query in global coordinate system |
\( \frac{\delta \frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}}{\delta \mathsf{x}} \nabla w(\frac{\left|\mathbf{q}_\mathsf{x}\right|}{t}) = \frac{\mathbf{q}}{t\left|q\right|} \nabla{w(\frac{\left|\mathbf{q}_\mathsf{x}\right|}{t})} \)
where \( \left|\mathbf{q}_\mathsf{x}\right| \) represents the norm of the query coordinates expressed in centered basis, for each spatial dimensions \( \mathsf{x}\).
Definition at line 23 of file weightFunc.hpp.
|
staticconstexpr |
Flag indicating if the weighting kernel is compact of not.
Definition at line 140 of file weightFunc.h.
|
protected |
Evaluation scale.
Definition at line 277 of file weightFunc.h.
|
protected |
1D function applied to weight queries
Definition at line 278 of file weightFunc.h.