PCL
|
A kernel filter implementing a discrete Moffat distribution in two dimensions. More...
#include <MoffatFilter.h>
Public Member Functions | |
MoffatFilter ()=default | |
MoffatFilter (const MoffatFilter &)=default | |
MoffatFilter (float sigma, float beta, float epsilon, float rho, float theta=0, const String &name=String()) | |
MoffatFilter (float sigma, float beta=4, float epsilon=0.01, const String &name=String()) | |
MoffatFilter (int n, float beta, float epsilon, float rho, float theta=0, const String &name=String()) | |
MoffatFilter (int n, float beta=4, float epsilon=0.01, const String &name=String()) | |
MoffatFilter (MoffatFilter &&)=default | |
float | AspectRatio () const |
SeparableFilter | AsSeparableFilter (float tolerance=__PCL_DEFAULT_FILTER_SEPARABILITY_TOLERANCE) const override |
float | Beta () const |
KernelFilter * | Clone () const override |
double | FWHM () const |
double | FWHMx () const |
double | FWHMy () const |
bool | IsSeparable () const override |
MoffatFilter & | operator= (const MoffatFilter &)=default |
MoffatFilter & | operator= (MoffatFilter &&)=default |
void | Resize (int n) override |
float | RotationAngle () const |
void | Set (float sigma) |
void | Set (float sigma, float beta) |
void | Set (float sigma, float beta, float epsilon) |
void | Set (float sigma, float beta, float epsilon, float rho) |
void | Set (float sigma, float beta, float epsilon, float rho, float theta) |
void | SetAspectRatio (float rho) |
void | SetBeta (float beta) |
void | SetRotationAngle (float theta) |
void | SetSigma (float sigma) |
void | SetTruncation (float epsilon) |
float | Sigma () const |
float | SigmaX () const |
float | SigmaY () const |
float | Truncation () const |
![]() | |
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 | |
![]() | |
using | coefficient = float |
using | coefficient_matrix = GenericMatrix< coefficient > |
A MoffatFilter object is a specialized KernelFilter whose elements are calculated as a discrete representation of an elliptical Moffat[1] function centered at the origin:
M(x,y) = 1/(1 + x^2/sx^2 + y^2/sy^2)^beta
where sx and sy are the standard deviations of the distribution on the horizontal and vertical axes, respectively, and the beta exponent controls the shape of the function's profile. The lower the beta, the more peaked the overall shape of the function. For beta=1, the equation above corresponds to a Lorentzian function.
MoffatFilter 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 MoffatFilter instance is formally defined by the following parameters:
sigma | Standard deviation of the filter distribution on the X axis (sigma > 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. |
beta | Exponent controlling the overall shape of the function (beta > 0). |
epsilon | Maximum truncation error of the computed filter coefficients (eps > 0). |
References
Definition at line 105 of file MoffatFilter.h.
|
default |
Constructs an empty MoffatFilter object with default functional parameters: sigma=2, beta=4, epsilon=0.01, rho=1, theta=0.
|
inline |
Constructs a MoffatFilter object given the standard deviation sigma > 0, beta exponent > 0 and truncation error epsilon > 0. Assigns an optional name to the new filter object.
Definition at line 120 of file MoffatFilter.h.
|
inline |
Constructs a MoffatFilter object given the standard deviation sigma > 0, beta exponent > 0, 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 132 of file MoffatFilter.h.
|
inline |
Constructs a MoffatFilter object given the odd kernel size n >= 3, beta exponent > 0 and truncation error epsilon > 0. Assigns an optional name to the new filter object.
Definition at line 143 of file MoffatFilter.h.
|
inline |
Constructs a MoffatFilter object given the odd kernel size n >= 3, beta exponent > 0, 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 155 of file MoffatFilter.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 260 of file MoffatFilter.h.
|
inlineoverridevirtual |
Returns a separable filter equivalent to this kernel filter.
MoffatFilter's reimplementation of this virtual member function returns an empty SeparableFilter object, as a Moffat filter is not separable.
Reimplemented from pcl::KernelFilter.
Definition at line 184 of file MoffatFilter.h.
|
inline |
Returns the beta exponent of the Moffat filter function. The beta exponent controls the overall shape of the filter profile.
Definition at line 243 of file MoffatFilter.h.
|
inlineoverridevirtual |
Returns a pointer to a dynamically allocated duplicate of this kernel filter.
Reimplemented from pcl::KernelFilter.
Definition at line 173 of file MoffatFilter.h.
|
inline |
Returns the full width at half maximum, in sigma units, for the horizontal axis of the elliptical Moffat filter distribution.
This function is an alias to FWHMx().
Definition at line 301 of file MoffatFilter.h.
|
inline |
Returns the full width at half maximum (FWHM), in sigma units, for the horizontal axis of the elliptical Moffat filter distribution.
Definition at line 279 of file MoffatFilter.h.
References pcl::Pow2(), and pcl::Sqrt().
|
inline |
Returns the full width at half maximum (FWHM), in sigma units, for the vertical axis of the elliptical Moffat filter distribution.
Definition at line 289 of file MoffatFilter.h.
|
inlineoverridevirtual |
Returns true iff this filter is separable.
MoffatFilter's reimplementation of this virtual member function returns false, as a Moffat filter is not separable.
Reimplemented from pcl::KernelFilter.
Definition at line 195 of file MoffatFilter.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 Moffat function on a matrix of the specified size, preserving the current beta exponent, coefficient truncation error, aspect ratio and rotation angle.
Reimplemented from pcl::KernelFilter.
Definition at line 407 of file MoffatFilter.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 270 of file MoffatFilter.h.
|
inline |
Recalculates filter coefficients for the specified sigma sigma > 0. The current beta exponent, coefficient truncation error, aspect ratio and rotation angle are not changed.
Definition at line 351 of file MoffatFilter.h.
|
inline |
Recalculates filter coefficients for the specified sigma sigma > 0 and beta exponent. The current coefficient truncation error, aspect ratio and rotation angle are not changed.
Definition at line 341 of file MoffatFilter.h.
|
inline |
Recalculates filter coefficients for the specified sigma sigma > 0, beta exponent and truncation error epsilon > 0. Does not change the current aspect ratio and rotation angle.
Definition at line 331 of file MoffatFilter.h.
|
inline |
Recalculates filter coefficients for the specified sigma sigma > 0, beta exponent, truncation error epsilon > 0 and aspect ratio 0 <= rho <= 1. Does not change the current rotation angle.
Definition at line 321 of file MoffatFilter.h.
|
inline |
Recalculates filter coefficients for the specified sigma sigma > 0, beta exponent, truncation error epsilon > 0, aspect ratio 0 <= rho <= 1 and rotation angle 0 <= theta <= PI in radians.
Definition at line 311 of file MoffatFilter.h.
|
inline |
This is a convenience member function, equivalent to Set( Sigma(), Beta(), Truncation(), rho ).
Definition at line 386 of file MoffatFilter.h.
|
inline |
This is a convenience member function, equivalent to Set( Sigma(), beta ).
Definition at line 368 of file MoffatFilter.h.
|
inline |
This is a convenience member function, equivalent to Set( Sigma(), Beta(), Truncation(), AspectRatio(), a ).
Definition at line 395 of file MoffatFilter.h.
|
inline |
This is a convenience member function, equivalent to Set( sigma ).
Definition at line 359 of file MoffatFilter.h.
|
inline |
This is a convenience member function, equivalent to Set( Sigma(), Beta(), epsilon ).
Definition at line 377 of file MoffatFilter.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 234 of file MoffatFilter.h.
|
inline |
Returns the standard deviation of the filter distribution on the X (horizontal) axis.
Definition at line 214 of file MoffatFilter.h.
|
inline |
Returns the standard deviation of the filter distribution on the Y (vertical) axis.
Definition at line 223 of file MoffatFilter.h.
|
inline |
Returns the maximum truncation error of the filter coefficients.
Definition at line 251 of file MoffatFilter.h.