Apply a single-level Contourlet transform to an image.
Apply a single-level Contourlet transform to an image.
The image to be transformed.
Number of directional filters (contourlet filters) to use in the transform.
A (scalar field, complex vector field) tuple. The scalar field is a lowpassed version of the input and carries the information not analyzed by the contourlet filters. The complex vector field carries the compacted contourlet coefficients. In the complex vector field, the number of vector elements is equal to half the number of channels. The real and imaginary parts of the components each contain the coefficients for one of the contourlet channels. This packing of coefficients into a single complex vector field is done for efficiency.
Apply the inverse Contourlet transform.
Apply the inverse Contourlet transform. This inverts apply.
Lowpass output of apply
A complex vector field carries the compacted contourlet coefficients. In the complex vector field, the number of vector elements is equal to half the number of channels. The real and imaginary parts of the components each contain the coefficients for one of the contourlet channels. This packing of coefficients into a single complex vector field is done for efficiency.
Reconstructed image
Implements a simple Contourlet transform and its inverse.
This supports only a single level of decomposition, since that's all that's needed for my application. You may extend this if needed, but it will be tricky since it involves an "a trous" convolution (if you have to ask...).
Implements nsctdec.m and nsctrec.m