PCL
pcl::BicubicFilterInterpolation< T > Class Template Reference

Bicubic filter interpolation algorithms. More...

#include <BicubicFilterInterpolation.h>

+ Inheritance diagram for pcl::BicubicFilterInterpolation< T >:

Public Member Functions

 BicubicFilterInterpolation (const BicubicFilterInterpolation &)=default
 
 BicubicFilterInterpolation (int rx, int ry, const CubicFilter &filter)
 
 ~BicubicFilterInterpolation () override
 
const CubicFilterFilter () const noexcept
 
int HorizontalRadius () const noexcept
 
void Initialize (const T *data, int dataWidth, int dataHeight) override
 
PCL_HOT_FUNCTION double operator() (double x, double y) const override
 
void SetFilter (const CubicFilter &filter)
 
void SetRadii (int rx, int ry)
 
int VerticalRadius () const noexcept
 
- Public Member Functions inherited from pcl::BidimensionalInterpolation< T >
 BidimensionalInterpolation ()=default
 
 BidimensionalInterpolation (const BidimensionalInterpolation &)=default
 
virtual ~BidimensionalInterpolation ()
 
const T * BeingInterpolated () const
 
double BorderFillValue () const
 
virtual void Clear ()
 
void DisableBorderFilling (bool disable=true)
 
void EnableBorderFilling (bool enable=true)
 
int Height () const
 
bool IsBorderFillingEnabled () const
 
void SetBorderFillValue (double v)
 
int Width () const
 

Detailed Description

template<typename T>
class pcl::BicubicFilterInterpolation< T >

Bicubic filter interpolation uses a cubic filter (an instance of CubicFilter or a derived class) to interpolate pixel values in a rectangular pixel matrix of the specified horizontal and vertical radii. Thanks to the separability of cubic filters, BicubicFilterInterpolation can be applied with a different filter size on each axis.

See also
BidimensionalInterpolation, CubicFilter, MitchellNetravaliCubicFilter, CatmullRomSplineFilter, CubicBSplineFilter, NearestNeighborInterpolation, BilinearInterpolation, BicubicSplineInterpolation, BicubicBSplineInterpolation, LanczosInterpolation

Definition at line 351 of file BicubicFilterInterpolation.h.

Constructor & Destructor Documentation

◆ BicubicFilterInterpolation() [1/2]

template<typename T >
pcl::BicubicFilterInterpolation< T >::BicubicFilterInterpolation ( int  rx,
int  ry,
const CubicFilter filter 
)
inline

Constructs a new BicubicFilterInterpolation instance.

Parameters
rx,ryHorizontal and vertical interpolation radii, respectively, in pixels. Both radii must be >= 1. Interpolation will take place in a rectangular pixel matrix with 2*rx + 1 columns and 2*ry + 1 rows.
filterReference to a CubicFilter instance that will be used as the interpolation filter.

Definition at line 366 of file BicubicFilterInterpolation.h.

◆ BicubicFilterInterpolation() [2/2]

template<typename T >
pcl::BicubicFilterInterpolation< T >::BicubicFilterInterpolation ( const BicubicFilterInterpolation< T > &  )
default

Copy constructor.

◆ ~BicubicFilterInterpolation()

template<typename T >
pcl::BicubicFilterInterpolation< T >::~BicubicFilterInterpolation ( )
inlineoverride

Virtual destructor.

Definition at line 384 of file BicubicFilterInterpolation.h.

Member Function Documentation

◆ Filter()

template<typename T >
const CubicFilter& pcl::BicubicFilterInterpolation< T >::Filter ( ) const
inlinenoexcept

Returns a constant reference to the cubic filter being used by this interpolation.

Definition at line 626 of file BicubicFilterInterpolation.h.

◆ HorizontalRadius()

template<typename T >
int pcl::BicubicFilterInterpolation< T >::HorizontalRadius ( ) const
inlinenoexcept

Returns the horizontal interpolation radius in pixels.

Definition at line 582 of file BicubicFilterInterpolation.h.

◆ Initialize()

template<typename T >
void pcl::BicubicFilterInterpolation< T >::Initialize ( const T *  data,
int  width,
int  height 
)
inlineoverridevirtual

Initializes a new interpolation.

Parameters
dataTwo-dimensional matrix of function values stored in row-order. Must remain valid and accessible while this object is used to compute interpolated function values.
widthHorizontal dimension (most rapidly varying coordinate) of the data array.
heightVertical dimension (most slowly varying coordinate) of the data array.

Reimplemented from pcl::BidimensionalInterpolation< T >.

Definition at line 390 of file BicubicFilterInterpolation.h.

◆ operator()()

template<typename T >
PCL_HOT_FUNCTION double pcl::BicubicFilterInterpolation< T >::operator() ( double  x,
double  y 
) const
inlineoverridevirtual

Returns an interpolated value at {x,y} location.

Parameters
x,yCoordinates of the interpolation point (horizontal,vertical).

Interpolation takes place on a rectangular matrix whose center is the nearest pixel to {x, y}. The interpolation matrix has 2*rx + 1 columns and 2*ry + 1 rows, where rx and ry are the horizontal and vertical interpolation radii, respectively.

Implements pcl::BidimensionalInterpolation< T >.

Definition at line 413 of file BicubicFilterInterpolation.h.

◆ SetFilter()

template<typename T >
void pcl::BicubicFilterInterpolation< T >::SetFilter ( const CubicFilter filter)
inline

Sets a new cubic filter to be applied by this interpolation.

Definition at line 634 of file BicubicFilterInterpolation.h.

◆ SetRadii()

template<typename T >
void pcl::BicubicFilterInterpolation< T >::SetRadii ( int  rx,
int  ry 
)
inline

Sets new interpolation radii.

Parameters
rx,ryHorizontal and vertical interpolation radii, respectively, in pixels. Both radii must be >= 1. Interpolation will take place in a rectangular pixel matrix with 2*rh + 1 columns and 2*rv + 1 rows.

Definition at line 603 of file BicubicFilterInterpolation.h.

References pcl::Max().

◆ VerticalRadius()

template<typename T >
int pcl::BicubicFilterInterpolation< T >::VerticalRadius ( ) const
inlinenoexcept

Returns the vertical interpolation radius in pixels.

Definition at line 590 of file BicubicFilterInterpolation.h.


The documentation for this class was generated from the following file: