PCL
|
A kernel filter with variable kurtosis. More...
#include <VariableShapeFilter.h>
Public Member Functions | |
VariableShapeFilter ()=default | |
VariableShapeFilter (const VariableShapeFilter &)=default | |
VariableShapeFilter (float sigma, float shape, float epsilon, float rho, float theta=0, const String &name=String()) | |
VariableShapeFilter (float sigma, float shape=2, float epsilon=0.01, const String &name=String()) | |
VariableShapeFilter (int n, float shape, float epsilon, float rho, float theta=0, const String &name=String()) | |
VariableShapeFilter (int n, float shape=2, float epsilon=0.01, const String &name=String()) | |
VariableShapeFilter (VariableShapeFilter &&)=default | |
float | AspectRatio () const |
SeparableFilter | AsSeparableFilter (float tolerance=__PCL_DEFAULT_FILTER_SEPARABILITY_TOLERANCE) const override |
KernelFilter * | Clone () const override |
double | FWHM () const |
double | FWHMx () const |
double | FWHMy () const |
bool | IsSeparable () const override |
VariableShapeFilter & | operator= (const VariableShapeFilter &)=default |
VariableShapeFilter & | operator= (VariableShapeFilter &&)=default |
void | Resize (int n) override |
float | RotationAngle () const |
void | Set (float sigma) |
void | Set (float sigma, float shape) |
void | Set (float sigma, float shape, float epsilon) |
void | Set (float sigma, float shape, float epsilon, float rho) |
void | Set (float sigma, float shape, float epsilon, float rho, float theta) |
void | SetAspectRatio (float rho) |
void | SetRotationAngle (float theta) |
void | SetShape (float shape) |
void | SetSigma (float sigma) |
void | SetTruncation (float epsilon) |
float | Shape () const |
float | Sigma () const |
float | SigmaX () const |
float | SigmaY () const |
float | Truncation () const |
Public Member Functions inherited from pcl::KernelFilter | |
KernelFilter (const coefficient_matrix &F, const String &name=String()) | |
KernelFilter (const KernelFilter &)=default | |
KernelFilter (const String &name=String()) | |
template<typename T > | |
KernelFilter (const T *k, int n, const String &name=String()) | |
KernelFilter (int n, const String &name=String()) | |
template<typename T > | |
KernelFilter (int n, const T &x, const String &name=String()) | |
KernelFilter (KernelFilter &&)=default | |
virtual | ~KernelFilter () |
const coefficient * | Begin () const |
const coefficient * | begin () const |
virtual void | Clear () |
coefficient_matrix | Coefficients () const |
const coefficient * | End () const |
const coefficient * | end () const |
void | Flip () |
KernelFilter | Flipped () const |
bool | IsEmpty () const |
bool | IsFlipped () const |
bool | IsHighPassFilter () const |
double | Modulus () const |
String | Name () const |
void | Normalize () |
KernelFilter | Normalized () const |
int | NumberOfCoefficients () const |
operator bool () const | |
KernelFilter & | operator= (const coefficient &x) |
KernelFilter & | operator= (const coefficient_matrix &F) |
KernelFilter & | operator= (const KernelFilter &)=default |
KernelFilter & | operator= (KernelFilter &&)=default |
bool | operator== (const KernelFilter &f) const |
const coefficient * | operator[] (int row) const |
virtual void | Rename (const String &newName) |
bool | SameCoefficients (const KernelFilter &f) const |
int | Size () const |
template<class P > | |
void | ToImage (GenericImage< P > &image) const |
void | ToImage (ImageVariant &v) const |
double | Weight () const |
Additional Inherited Members | |
Public Types inherited from pcl::KernelFilter | |
using | coefficient = float |
using | coefficient_matrix = GenericMatrix< coefficient > |
A VariableShapeFilter object is a specialized KernelFilter whose elements are calculated as a discrete representation of the following elliptical function centered at the origin:
G(x,y) = Exp( -( x^k/(k*sx^k) + y^k/(k*sy^k) ) )
where sx and sy are the standard deviations of the filter distribution on the horizontal and vertical axes, respectively, and k is a shape parameter controlling the kurtosis of the filter function. When k < 2 the distribution is leptokurtic (peaked), while k > 2 leads to a platykurtic (flat) distribution. When k = 2 the distribution is normal (Gaussian) and the VariableShapeFilter is equivalent to a GaussianFilter object with the same standard deviations.
VariableShapeFilter also supports arbitrary rotation around the origin. When the filter is rotated, the coordinates x, y in the equation above are replaced by their rotated counterparts.
A VariableShapeFilter instance is formally defined by the following set of parameters:
sigma | Standard deviation of the filter distribution on the X axis (sigma > 0). |
shape | Filter shape: 2 = Gaussian, < 2 = leptokurtic, > 2 = platykurtic (shape > 0). |
rho | The ratio sy/sx (see equation above) of the generated filter distribution (0 ≤ rho ≤ 1). |
theta | Rotation angle of the horizontal axis in radians (0 ≤ theta < PI). This parameter only makes sense when rho < 1. |
epsilon | Maximum truncation error of the computed filter coefficients (eps > 0). |
Definition at line 104 of file VariableShapeFilter.h.
|
default |
Constructs an empty VariableShapeFilter object with default functional parameters: sigma=2, shape=2, epsilon=0.01, rho=1, theta=0.
|
inline |
Constructs a VariableShapeFilter object given the standard deviation sigma > 0, shape > 0, and coefficient truncation epsilon > 0. Assigns an optional name to the new filter object.
Definition at line 119 of file VariableShapeFilter.h.
|
inline |
Constructs a VariableShapeFilter object given the standard deviation sigma > 0, shape > 0, coefficient truncation error epsilon > 0, aspect ratio 0 <= rho <= 1, and rotation angle 0 <= theta <= PI in radians. Assigns an optional name to the new filter object.
Definition at line 131 of file VariableShapeFilter.h.
|
inline |
Constructs a VariableShapeFilter object given the odd kernel size n >= 3, shape > 0, and coefficient truncation error epsilon > 0. Assigns an optional name to the new filter object.
Definition at line 142 of file VariableShapeFilter.h.
|
inline |
Constructs a VariableShapeFilter object given the odd kernel size n >= 3, shape > 0, coefficient truncation epsilon > 0, aspect ratio 0 <= rho <= 1, and rotation angle 0 <= theta <= PI in radians. Assigns an optional name to the new filter object.
Definition at line 154 of file VariableShapeFilter.h.
|
default |
Copy constructor.
|
default |
Move constructor.
|
inline |
Returns the aspect ratio of the filter distribution. This is the ratio vertical:horizontal between filter axes in the range [0,1].
Definition at line 276 of file VariableShapeFilter.h.
|
inlineoverridevirtual |
Returns a separable filter equivalent to this VariableShapeFilter object.
A VariableShapeFilter is separable when it represents an undistorted Gaussian distribution. This is only true when shape=2 and the filter is circular (rho=1). Otherwise an empty SeparableFilter object is returned because this filter is not separable.
Reimplemented from pcl::KernelFilter.
Definition at line 188 of file VariableShapeFilter.h.
|
inlineoverridevirtual |
Returns a pointer to a dynamically allocated duplicate of this kernel filter.
Reimplemented from pcl::KernelFilter.
Definition at line 174 of file VariableShapeFilter.h.
|
inline |
Returns the full width at half maximum, in sigma units, for the horizontal axis of the elliptical filter distribution.
This function is an alias to FWHMx().
Definition at line 317 of file VariableShapeFilter.h.
|
inline |
Returns the full width at half maximum (FWHM), in sigma units, for the horizontal axis of the elliptical filter distribution.
Definition at line 295 of file VariableShapeFilter.h.
References pcl::Pow().
|
inline |
Returns the full width at half maximum (FWHM), in sigma units, for the vertical axis of the elliptical filter distribution.
Definition at line 305 of file VariableShapeFilter.h.
|
inlineoverridevirtual |
Returns true iff this filter is separable.
A VariableShapeFilter is separable only when it represents an undistorted Gaussian distribution. This is only true when shape=2 and the filter is circular (rho=1).
Reimplemented from pcl::KernelFilter.
Definition at line 205 of file VariableShapeFilter.h.
|
default |
Copy assignment operator. Returns a reference to this object.
|
default |
Move assignment operator. Returns a reference to this object.
|
inlineoverridevirtual |
Recalculates filter coefficients for the given odd kernel size n >= 3. This routine computes the required standard deviation to sample the filter function on a matrix of the specified size, preserving the current shape, coefficient truncation, aspect ratio and rotation angle.
Reimplemented from pcl::KernelFilter.
Definition at line 422 of file VariableShapeFilter.h.
|
inline |
Returns the rotation angle of the filter distribution. This is the rotation angle in radians with respect to the central pixel, in the range [0,+PI].
Definition at line 286 of file VariableShapeFilter.h.
|
inline |
Recalculates filter coefficients for the specified sigma > 0. The current shape, coefficient truncation error, aspect ratio and rotation angle are not changed.
Definition at line 367 of file VariableShapeFilter.h.
|
inline |
Recalculates filter coefficients for the specified sigma > 0 and shape > 0. Coefficient truncation, aspect ratio and rotation angle are not changed.
Definition at line 357 of file VariableShapeFilter.h.
|
inline |
Recalculates filter coefficients for the specified sigma > 0, shape > 0, and coefficient truncation error epsilon > 0. Does not change the current aspect ratio and rotation angle.
Definition at line 347 of file VariableShapeFilter.h.
|
inline |
Recalculates filter coefficients for the specified sigma > 0, shape > 0, coefficient truncation error epsilon > 0, and aspect ratio 0 <= rho <= 1. Does not change the current rotation angle.
Definition at line 337 of file VariableShapeFilter.h.
|
inline |
Recalculates filter coefficients for the specified sigma > 0, shape > 0, coefficient truncation error epsilon > 0, aspect ratio 0 <= rho <= 1, and rotation angle 0 <= theta <= PI in radians.
Definition at line 327 of file VariableShapeFilter.h.
|
inline |
This is a convenience member function, equivalent to Set( Sigma(), Shape(), Truncation(), rho ).
Definition at line 402 of file VariableShapeFilter.h.
|
inline |
This is a convenience member function, equivalent to Set( Sigma(), Shape(), Truncation(), AspectRatio(), theta ).
Definition at line 411 of file VariableShapeFilter.h.
|
inline |
This is a convenience member function, equivalent to Set( Sigma(), shape ).
Definition at line 384 of file VariableShapeFilter.h.
|
inline |
This is a convenience member function, equivalent to Set( sigma ).
Definition at line 375 of file VariableShapeFilter.h.
|
inline |
This is a convenience member function, equivalent to Set( Sigma(), Shape(), epsilon ).
Definition at line 393 of file VariableShapeFilter.h.
|
inline |
Returns the shape parameter of this VariableShapeFilter object. The shape parameter controls the kurtosis of the filter distribution:
shape < 2 | Leptokurtic distribution |
shape = 2 | Normal (Gaussian) distribution |
shape > 2 | Platykurtic distribution |
Definition at line 259 of file VariableShapeFilter.h.
|
inline |
Returns the standard deviation of the filter distribution on the X (horizontal) axis.
This function is an alias to SigmaX().
Definition at line 244 of file VariableShapeFilter.h.
|
inline |
Returns the standard deviation of the filter distribution on the X (horizontal) axis.
Definition at line 224 of file VariableShapeFilter.h.
|
inline |
Returns the standard deviation of the filter distribution on the Y (vertical) axis.
Definition at line 233 of file VariableShapeFilter.h.
|
inline |
Returns the maximum truncation error of calculated filter coefficients.
Definition at line 267 of file VariableShapeFilter.h.