Cone-adapted bandlimited shearlet system
shearletSystem object represents a cone-adapted
bandlimited shearlet system. After you create the shearlet system, you can use
obtain the shearlet transform of a real-valued 2-D image. You can also use
obtain the inverse transform. Additional Object Functions are
creates a cone-adapted
real-valued bandlimited shearlet system for a real-valued image of size 128-by-128 with
the number of scales equal to 4. The system
sls = shearletSystem
sls is a nondecimated
shearlet system. Shearlets extending beyond the 2-D frequency bounds are periodically
extended. Using real-valued shearlets with periodic boundary conditions results in
real-valued shearlet coefficients.
The implementation of
follows the approach described in Häuser and Steidl 
creates a cone-adapted bandlimited shearlet system with Properties specified by one or
sls = shearletSystem(
Name,Value pairs. For example,
shearletSystem('ImageSize',[100 100]) creates a shearlet system for
images of size 100-by-100. Properties can be specified in any order as
Name1,Value1,...,NameN,ValueN. Enclose each property name in single
' ') or double quotes (
Property values of a shearlet system are fixed. For example, if the shearlet
SLS is created with an
[128 128], you cannot change that
ImageSize — Image size
[128 128] (default) | two-element integer-valued vector
Image size for the shearlet system, specified as a two-element integer-valued vector
numcolumns]. Images must be at least 16-by-16.
sls = shearletSystem('ImageSize',[100 200]) creates a shearlet system
for 100-by-200 images.
NumScales — Number of scales
4 (default) | positive integer
Number of scales in the shearlet system, specified as a positive integer less than
or equal to log2(min([M
N]))–3, where M and N are the
row and column dimensions of the input image. For a 16-by-16 input image,
log2(min([16 16]))–3 = 4–3 = 1, so the
smallest image compatible with
shearletSystem has a minimum dimension
of 16. For the default image size 128-by-128, the number of scales equals 4.
sls = shearletSystem('NumScales',1) creates a shearlet
NumScales equal to 1.
TransformType — Shearlet system type
'real' (default) |
Shearlet system type, specified as
'complex'. Real-valued shearlets have two-sided 2-D frequency
spectra, while complex-valued shearlets have one-sided 2-D spectra. If FilterBoundary is set to
'periodic', shearlets at the
finest spatial scales have energy that wraps around in the 2-D frequency response. For
'complex' shearlet systems, the
Fourier transforms of the shearlets are real valued.
FilterBoundary — Shearlet filter boundary handling
'periodic' (default) |
Shearlet filter boundary handling, specified as
'truncated'. When set to
extending beyond the 2-D frequency boundaries are periodically extended. When set to
'truncated', shearlets are truncated at the 2-D frequency
PreserveEnergy — Shearlet system analysis normalization
0 (default) |
Shearlet system analysis normalization, specified as a numeric or logical
false). When set to
true, the shearlet system
is normalized to be a Parseval frame, and the energy of the input image is preserved in
the shearlet transform coefficients.
Precision — Shearlet system precision
'double' (default) |
Shearlet system precision, specified as
'single'. All computations are done using the specified precision.
To obtain the shearlet transform of an image, the precision of the image must match the precision of the shearlet system.
|Inverse shearlet transform|
|Shearlet system frame bounds|
|Shearlet system filters|
|Number of shearlets|
Create Energy-Preserving Shearlet System
Load an image. Create two real-valued shearlet systems that can be applied to the image. Normalize the first system so that energy is preserved in the shearlet transform coefficients. Leave the second shearlet system with the default (
load mask [numRows,numCols] = size(X); slsA = shearletSystem('ImageSize',[numRows numCols],'PreserveEnergy',true); slsB = shearletSystem('ImageSize',[numRows numCols]);
Take the shearlet transform of the image using both shearlet systems.
cfA = sheart2(slsA,X); cfB = sheart2(slsB,X);
Determine the energy of the input image and both sets of transform coefficients. Confirm that only the first shearlet system preserved energy.
energyA = sum(cfA(:).^2); energyB = sum(cfB(:).^2); energyImage = sum(X(:).^2)
energyImage = 2.4655e+09
diffSystemA = abs(energyImage-energyA)
diffSystemA = 1.9073e-06
diffSystemB = abs(energyImage-energyB)
diffSystemB = 1.4869e+07
Boundary effects of a real-valued shearlet transform of a non-square image can result in complex-valued coefficients. As implemented,
shearletSystemconstructs shearlets in the 2-D Fourier domain. For a real-valued shearlet transform, the shearlets in the 2-D Fourier domain should be symmetric in the positive and negative 2-D frequency plane. Shearlets constructed for square images are symmetric. However, as the image aspect ratio increases, the shearlets constructed become less symmetric. If the support of the lowpass filter in the 2-D frequency plane is too large, boundary effects can increase. Whenever possible, use square images. See Boundary Effects in Real-Valued Bandlimited Shearlet Systems for additional information and strategies to mitigate boundary effects.
 Guo, K., G. Kutyniok, and D. Labate. "Sparse multidimensional representations using anisotropic dilation and shear operators." In Wavelets and Splines: Athens 2005 (G. Chen, and M.-J. Chen, eds.), 189–201. Brentwood, TN: Nashboro Press, 2006.
 Guo, K., and D. Labate. "Optimally Sparse Multidimensional Representation Using Shearlets." SIAM Journal on Mathematical Analysis. Vol. 39, Number 1, 2007, pp. 298–318.
 Kutyniok, G., and W.-Q Lim. "Compactly supported shearlets are optimally sparse." Journal of Approximation Theory. Vol. 163, Number 11, 2011, pp. 1564–1589.
 Shearlets: Multiscale Analysis for Multivariate Data (G. Kutyniok, and D. Labate, eds.). New York: Springer, 2012.
 Häuser, S., and G. Steidl. "Fast Finite Shearlet Transform: a tutorial." arXiv preprint arXiv:1202.1773 (2014).
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Introduced in R2019b