PCL
pcl::MultiscaleLinearTransform Class Reference

A redundant multiscale transform using separable convolutions. More...

#include <MultiscaleLinearTransform.h>

+ Inheritance diagram for pcl::MultiscaleLinearTransform:

Public Types

using layer = RedundantMultiscaleTransform::layer
 
using layer_state_set = RedundantMultiscaleTransform::layer_state_set
 
using transform = RedundantMultiscaleTransform::transform
 
- Public Types inherited from pcl::RedundantMultiscaleTransform
using layer = Image
 
using layer_state_set = GenericVector< bool >
 
using transform = Array< layer >
 

Public Member Functions

 MultiscaleLinearTransform (const MultiscaleLinearTransform &)=default
 
 MultiscaleLinearTransform (int n=4, int d=0, bool useMeanFilters=false)
 
 MultiscaleLinearTransform (MultiscaleLinearTransform &&)=default
 
 ~MultiscaleLinearTransform () override
 
MultiscaleLinearTransformoperator= (const MultiscaleLinearTransform &)=default
 
MultiscaleLinearTransformoperator= (MultiscaleLinearTransform &&)=default
 
bool UsesGaussianFilters () const
 
bool UsesMeanFilters () const
 
- Public Member Functions inherited from pcl::RedundantMultiscaleTransform
 RedundantMultiscaleTransform (const RedundantMultiscaleTransform &x)
 
 RedundantMultiscaleTransform (int n=4, int d=0)
 
 RedundantMultiscaleTransform (RedundantMultiscaleTransform &&)=default
 
 ~RedundantMultiscaleTransform () override
 
void BiasLayer (int i, float k)
 
void DeleteLayer (int i)
 
void DisableLayer (int i, bool disable=true)
 
void EnableLayer (int i, bool enable=true)
 
int FilterSize (int j) const
 
bool IsLayer (int i) const
 
bool IsLayerEnabled (int i) const
 
layerLayer (int i)
 
const layerLayer (int i) const
 
int NumberOfLayers () const
 
RedundantMultiscaleTransformoperator= (const RedundantMultiscaleTransform &x)
 
RedundantMultiscaleTransformoperator= (RedundantMultiscaleTransform &&)=default
 
layeroperator[] (int i)
 
const layeroperator[] (int i) const
 
virtual transform ReleaseTransform ()
 
virtual void Reset ()
 
int ScalingSequence () const
 
void SetDyadicScalingSequence ()
 
void SetLinearScalingSequence (int d=1)
 
void SetNumberOfLayers (int n)
 
void SetScalingSequence (int d)
 
- Public Member Functions inherited from pcl::BidirectionalImageTransformation
 BidirectionalImageTransformation ()=default
 
 BidirectionalImageTransformation (const BidirectionalImageTransformation &)=default
 
 ~BidirectionalImageTransformation () override
 
template<class P >
const GenericImage< P > & operator<< (const GenericImage< P > &image)
 
const ImageVariantoperator<< (const ImageVariant &image)
 
- Public Member Functions inherited from pcl::ImageTransformation
 ImageTransformation ()=default
 
 ImageTransformation (const ImageTransformation &)=default
 
virtual ~ImageTransformation ()
 
template<class P >
GenericImage< P > & operator>> (GenericImage< P > &image) const
 
ImageVariantoperator>> (ImageVariant &image) 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
 
ParallelProcessoperator= (const ParallelProcess &)=default
 
void SetMaxProcessors (int maxProcessors) noexcept
 
void Swap (ParallelProcess &process) noexcept
 

Protected Member Functions

void Transform (const pcl::ComplexImage &) override
 
void Transform (const pcl::DComplexImage &) override
 
void Transform (const pcl::DImage &) override
 
void Transform (const pcl::Image &) override
 
void Transform (const pcl::UInt16Image &) override
 
void Transform (const pcl::UInt32Image &) override
 
void Transform (const pcl::UInt8Image &) override
 
- Protected Member Functions inherited from pcl::RedundantMultiscaleTransform
void Apply (pcl::ComplexImage &) const override
 
void Apply (pcl::DComplexImage &) const override
 
void Apply (pcl::DImage &) const override
 
void Apply (pcl::Image &) const override
 
void Apply (pcl::UInt16Image &) const override
 
void Apply (pcl::UInt32Image &) const override
 
void Apply (pcl::UInt8Image &) const override
 

Detailed Description

The multiscale linear transform algorithm produces a set {w1,w2,...,wN,cN}, where each wj is a set of coefficients at scale j, which we call detail layer, and cN is a large-scale smoothed residual, which we call residual layer. Each layer has the same dimensions as the input image, hence the generated multiscale transform is redundant.

The algorithm applies successive convolutions with separable filter kernels of increasing size 2*s + 1, where s grows following a monotonically increasing sequence (the dyadic sequence 1, 2, 4, ... is used by default). Multiscale coefficients are the differences between each pair of successive convolved images. By default Gaussian filters are used, but block average filters can also be used (see the class constructor) for special applications.

The reconstruction algorithm consists of the sum of all wj multiscale layers for 1 <= j <= N, plus the residual layer cN.

In our implementation, each layer in a multiscale linear transform is a floating-point image with the same dimensions as the transformed image. Layers are indexed from 0 to N. Layers at indexes from 0 to N-1 are detail layers, whose elements are actually convolved difference coefficients. Pixels in a detail layer can be negative, zero or positive real values.

The last layer, at index N, is the large-scale residual layer. Pixels in the residual layer image can only be positive or zero real values.

Definition at line 99 of file MultiscaleLinearTransform.h.

Member Typedef Documentation

◆ layer

Represents a multiscale transform layer.

Definition at line 106 of file MultiscaleLinearTransform.h.

◆ layer_state_set

Represents a set of layer enabled/disabled states.

Definition at line 116 of file MultiscaleLinearTransform.h.

◆ transform

Represents a set of multiscale transform layers, or multiscale transform.

Definition at line 111 of file MultiscaleLinearTransform.h.

Constructor & Destructor Documentation

◆ MultiscaleLinearTransform() [1/3]

pcl::MultiscaleLinearTransform::MultiscaleLinearTransform ( int  n = 4,
int  d = 0,
bool  useMeanFilters = false 
)
inline

Constructs a MultiscaleLinearTransform instance.

Parameters
nNumber of detail layers. The transform will consist of n detail layers plus a residual layer, that is n+1 total layers. The default value is 4.
dScaling sequence. If d <= 0, the transform will use the dyadic sequence: 1, 2, 4, ... 2^i. If d > 0, its value is the distance in pixels between two successive scales.
useMeanFiltersIf true, the transformation will use block average filters (mean) instead of Gaussian filters. Mean filters have important special applications, such as computation of multiscale local variances. Gaussian filters are always used by default.

The default values for n and d are 4 and 0, respectively (four layers and the dyadic scaling sequence).

Successive layers are computed by applying separable convolutions with kernel filters of size 2*s + 1. The scaling sequence parameter d is interpreted as follows:

  • If the specified sequence parameter d is zero 0, then the transform uses the dyadic sequence: s = 1, 2, 4, ..., 2^j for 0 <= j < n.
  • If d > 0, then d is the constant increment in pixels between two successive scales (linear scaling sequence): s = d*j for 1 <= j < n.

Definition at line 148 of file MultiscaleLinearTransform.h.

◆ MultiscaleLinearTransform() [2/3]

pcl::MultiscaleLinearTransform::MultiscaleLinearTransform ( const MultiscaleLinearTransform )
default

Copy constructor.

◆ MultiscaleLinearTransform() [3/3]

pcl::MultiscaleLinearTransform::MultiscaleLinearTransform ( MultiscaleLinearTransform &&  )
default

Move constructor.

◆ ~MultiscaleLinearTransform()

pcl::MultiscaleLinearTransform::~MultiscaleLinearTransform ( )
inlineoverride

Destroys a MultiscaleLinearTransform object. All existing transform layers are destroyed and deallocated.

Definition at line 168 of file MultiscaleLinearTransform.h.

Member Function Documentation

◆ operator=() [1/2]

MultiscaleLinearTransform& pcl::MultiscaleLinearTransform::operator= ( const MultiscaleLinearTransform )
default

Copy assignment operator. Returns a reference to this object.

◆ operator=() [2/2]

MultiscaleLinearTransform& pcl::MultiscaleLinearTransform::operator= ( MultiscaleLinearTransform &&  )
default

Move assignment operator. Returns a reference to this object.

◆ Transform() [1/7]

void pcl::MultiscaleLinearTransform::Transform ( const pcl::ComplexImage image)
overrideprotectedvirtual

Transforms a 32-bit complex image.

Reimplemented from pcl::BidirectionalImageTransformation.

◆ Transform() [2/7]

void pcl::MultiscaleLinearTransform::Transform ( const pcl::DComplexImage image)
overrideprotectedvirtual

Transforms a 64-bit complex image.

Reimplemented from pcl::BidirectionalImageTransformation.

◆ Transform() [3/7]

void pcl::MultiscaleLinearTransform::Transform ( const pcl::DImage image)
overrideprotectedvirtual

Transforms a 64-bit floating point image.

Reimplemented from pcl::BidirectionalImageTransformation.

◆ Transform() [4/7]

void pcl::MultiscaleLinearTransform::Transform ( const pcl::Image image)
overrideprotectedvirtual

Transforms a 32-bit floating point image.

Reimplemented from pcl::BidirectionalImageTransformation.

◆ Transform() [5/7]

void pcl::MultiscaleLinearTransform::Transform ( const pcl::UInt16Image image)
overrideprotectedvirtual

Transforms a 16-bit unsigned integer image.

Reimplemented from pcl::BidirectionalImageTransformation.

◆ Transform() [6/7]

void pcl::MultiscaleLinearTransform::Transform ( const pcl::UInt32Image image)
overrideprotectedvirtual

Transforms a 32-bit unsigned integer image.

Reimplemented from pcl::BidirectionalImageTransformation.

◆ Transform() [7/7]

void pcl::MultiscaleLinearTransform::Transform ( const pcl::UInt8Image image)
overrideprotectedvirtual

Transforms an 8-bit unsigned integer image.

Reimplemented from pcl::BidirectionalImageTransformation.

◆ UsesGaussianFilters()

bool pcl::MultiscaleLinearTransform::UsesGaussianFilters ( ) const
inline

Returns true iff this transform applies Gaussian filters instead of block average filters. See the class constructor for more information.

Definition at line 195 of file MultiscaleLinearTransform.h.

◆ UsesMeanFilters()

bool pcl::MultiscaleLinearTransform::UsesMeanFilters ( ) const
inline

Returns true iff this transform applies block average filters instead of Gaussian filters. See the class constructor for more information.

Definition at line 186 of file MultiscaleLinearTransform.h.


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