Main Content


Cone-adapted bandlimited shearlet system


The shearletSystem object represents a cone-adapted bandlimited shearlet system. After you create the shearlet system, you can use sheart2 to obtain the shearlet transform of a real-valued 2-D image. You can also use isheart2 to obtain the inverse transform. Additional Object Functions are provided.



sls = shearletSystem 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 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 shearletSystem follows the approach described in Häuser and Steidl [6]


sls = shearletSystem(Name,Value) creates a cone-adapted bandlimited shearlet system with Properties specified by one or more 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 quotes (' ') or double quotes (" ").


Property values of a shearlet system are fixed. For example, if the shearlet system SLS is created with an ImageSize of [128 128], you cannot change that ImageSize to [200 200].


expand all

Image size for the shearlet system, specified as a two-element integer-valued vector [numrows numcolumns]. Images must be at least 16-by-16.

Example: sls = shearletSystem('ImageSize',[100 200]) creates a shearlet system for 100-by-200 images.

Data Types: single | double

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.

Example: sls = shearletSystem('NumScales',1) creates a shearlet system with NumScales equal to 1.

Data Types: single | double

Shearlet system type, specified as 'real' or '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 both 'real' and 'complex' shearlet systems, the Fourier transforms of the shearlets are real valued.

Shearlet filter boundary handling, specified as 'periodic' or 'truncated'. When set to 'periodic', shearlets extending beyond the 2-D frequency boundaries are periodically extended. When set to 'truncated', shearlets are truncated at the 2-D frequency boundaries.

Shearlet system analysis normalization, specified as a numeric or logical 1 (true) or 0 (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.

Example: sls = shearletSystem('PreserveEnergy',true)

Data Types: logical

Shearlet system precision, specified as 'double' or '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.

Object Functions

sheart2Shearlet transform
isheart2Inverse shearlet transform
frameboundsShearlet system frame bounds
filterbankShearlet system filters
numshearsNumber of shearlets


collapse all

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 (false) normalization.

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, shearletSystem constructs 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.


[1] 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.

[2] Guo, K., and D. Labate. "Optimally Sparse Multidimensional Representation Using Shearlets." SIAM Journal on Mathematical Analysis. Vol. 39, Number 1, 2007, pp. 298–318.

[3] Kutyniok, G., and W.-Q Lim. "Compactly supported shearlets are optimally sparse." Journal of Approximation Theory. Vol. 163, Number 11, 2011, pp. 1564–1589.

[4] Shearlets: Multiscale Analysis for Multivariate Data (G. Kutyniok, and D. Labate, eds.). New York: Springer, 2012.

[5] ShearLab.

[6] Häuser, S., and G. Steidl. "Fast Finite Shearlet Transform: a tutorial." arXiv preprint arXiv:1202.1773 (2014).

Extended Capabilities

C/C++ Code Generation

Introduced in R2019b