fld: real matrix representing the field to be transformed
fb1: A list of filter coefficients for the first level. Currently only near_sym_b and near_sym_b_bp are implemented
fb2: A list of filter coefficients for all following levels. Currently only qshift_b and qshift_b_bp are implemented
J: number of levels for the decomposition. Defaults to log2( min(Nx,Ny) ) in the decimated case and log2( min(Nx,Ny) ) - 3 otherwise
dec: whether or not the decimated transform is desired
verbose: if TRUE, the function tells you which level it is working on
pyr: a list containing arrays of complex coefficients for each level of the decomposition, produced by dtcwt( ..., dec=TRUE )
Returns
if dec=TRUE a list of complex coefficient fields, otherwise a complex J x Nx x Ny x 6 array.
Details
This is the 2D complex dualtree wavelet transform as described by Selesnick et al. (2005). It consists of four discerete wavelet transform trees, generated from two filter banks a and b by applying one set of filters to the rows and another (or the same) one to the columns. The 12 resulting coefficients are combined into six complex values representing six directions (15°, 45°, 75°, 105°, 135°, 165°). In the decimated case (dec=TRUE), each convolution is followed by a downsampling by two, meaining that the size of the six coefficient fields is cut in half at each level. The decimated transform can be reversed to recover the original image. For the near_sym_b and qshift_b filter banks, this reconstrcution should be basically perfect. In the case of the the b_bp filters, non-negligible artifacts appear near +-45° edges.
Note
At present, the inverse transform only works if the input image had dimensions 2^N x 2^N. You can use boundaries to achieve that.