PCL
|
A redundant multiscale transform using separable convolutions. More...
#include <MultiscaleLinearTransform.h>
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 > |
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 |
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.
Represents a multiscale transform layer.
Definition at line 106 of file MultiscaleLinearTransform.h.
using pcl::MultiscaleLinearTransform::layer_state_set = RedundantMultiscaleTransform::layer_state_set |
Represents a set of layer enabled/disabled states.
Definition at line 116 of file MultiscaleLinearTransform.h.
Represents a set of multiscale transform layers, or multiscale transform.
Definition at line 111 of file MultiscaleLinearTransform.h.
|
inline |
Constructs a MultiscaleLinearTransform instance.
n | Number 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. |
d | Scaling 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. |
useMeanFilters | If 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:
Definition at line 148 of file MultiscaleLinearTransform.h.
|
default |
Copy constructor.
|
default |
Move constructor.
|
inlineoverride |
Destroys a MultiscaleLinearTransform object. All existing transform layers are destroyed and deallocated.
Definition at line 168 of file MultiscaleLinearTransform.h.
|
default |
Copy assignment operator. Returns a reference to this object.
|
default |
Move assignment operator. Returns a reference to this object.
|
overrideprotectedvirtual |
Transforms a 32-bit complex image.
Reimplemented from pcl::BidirectionalImageTransformation.
|
overrideprotectedvirtual |
Transforms a 64-bit complex image.
Reimplemented from pcl::BidirectionalImageTransformation.
|
overrideprotectedvirtual |
Transforms a 64-bit floating point image.
Reimplemented from pcl::BidirectionalImageTransformation.
|
overrideprotectedvirtual |
Transforms a 32-bit floating point image.
Reimplemented from pcl::BidirectionalImageTransformation.
|
overrideprotectedvirtual |
Transforms a 16-bit unsigned integer image.
Reimplemented from pcl::BidirectionalImageTransformation.
|
overrideprotectedvirtual |
Transforms a 32-bit unsigned integer image.
Reimplemented from pcl::BidirectionalImageTransformation.
|
overrideprotectedvirtual |
Transforms an 8-bit unsigned integer image.
Reimplemented from pcl::BidirectionalImageTransformation.
|
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.
|
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.