int QccWAVWaveletLWT2D(const QccMatrix input_matrix, QccMatrix output_matrix,
int num_rows, int num_cols, int origin_row, int origin_col, int subsample_pattern_row,
int subsample_pattern_col);
int QccWAVInverseWaveletLWT2D(const QccMatrix
input_matrix, QccMatrix output_matrix, int num_rows, int num_cols, int
origin_row, int origin_col, int subsample_pattern_row, int subsample_pattern_col);
origin_row and origin_col give the row and column index numbers of the upper-left-corner sample of input_matrix and are used to determine the phases of subsampling in each level of the signal decomposition. In most cases, input_matrix starts at (0, 0), so origin_row and origin_col are both 0.
subsample_pattern_row and subsample_pattern_col may both be either QCCWAVWAVELET_PHASE_EVEN or QCCWAVWAVELET_PHASE_ODD, indicating whether even- or odd-phase subsampling is desired along each row and column, respectively. In the usual case, even subsampling is normally used.
In the case that num_rows is even, all four "subbands" of the LWT have the same number of rows. On the other hand, if num_rows is odd, two of the four subbands will be one row longer than the others. Which subbands will be longer will depend on whether origin_row is odd or even. Likewise, num_cols and origin_col determine if the subbands have the same number of columns, and which ones are wider if not.
QccWAVWaveletLWT2D() is implemented as a separable decomposition using 1D LWTs via calls to QccWAVWaveletLWT().
QccWAVWaveletInverseLWT2D() performs the opposite operation as QccWAVWaveletLWT2D(). That is, the subbands are extracted from input_matrix and "interleaved" to produce output_matrix.
For both of these routines, output_matrix must be allocated to sufficient size before calling the routine.
I. Daubechies and W. Sweldens, "Factoring Wavelet Transforms Into Lifting Steps," J. Fourier Anal. Appl., vol. 4, no. 3, pp. 245-267, 1998.