imgirdwt [-w wavelet] [-b boundary] icpfiles... imgfile
imgrdwt implements a 2D separable redundant discrete wavelet transform (RDWT) of grayscale image imgfile. This wavelet decomposition is accomplished by applying a 1D RDWT along every row and then along every column. The output of this process is a low-resolution approximation (the baseband image) to the original image, as well as highpass subbands in the horizontal, vertical, and diagonal directions. Each of these subbands has the same size as the original image. If levels is greater than 1, the baseband subband is recursively decomposed using this same process.
wavelet is the name of a file containing either the filter bank (FBK format) or lifting scheme (LFT format) to use in performing the DWT. The name of the filter-bank/lifting-scheme file is given by wavelet; this file must be found in the path given by the environment variable QCCPACK_WAVELET_PATH. The appropriate transform implementation (filter bank, lifting) is used based upon the type (FBK, LFT) of the found file. If the user does not specify a wavelet, the default wavelet is a lifting implementation of the Cohen-Feauveau-Daubechies 9/7 spline with less dissimilar lengths, a biorthogonal wavelet popular wavelet for image-processing applications (see Cohen et al., Antonini et al.).
boundary gives the method for handling the image boundaries. Possible values for boundary are described in the page for QccWAVWavelet(3) . Not all boundary methods are permitted for all wavelets; check the comments at the start of FBK or LFT files for possible values for particular wavelets. The default boundary-extension method is "symmetric".
levels gives the number of transform decomposition levels. Since at every scale, or level, of RDWT decomposition, four subbands are produced, the total number of subbands produced in a transform with levels levels of decomposition is 3 * levels + 1. imgdwt saves the resulting subbands to the ICP-format files icpfiles. If levels is specified, imgrdwt ensures that the number of output icpfiles is less than or equal 3 * levels + 1. On the other hand, if levels is not specified, imgrdwt looks at how many icpfiles are given on the command line to determine the number of levels of transform to take. In this case, imgrdwt checks to see that the number of icpfiles correctly specifies a number of levels. For example, if one gives 10 icpfiles on the command line, then imgrdwt performs a 3-level RDWT, since levels = (10 - 1) / 3 = 3. On the other hand, if ones gives, say, 9 or 11 icpfiles on the command line, imgrdwt exits in error, since neither 8 nor 10 are divisble by 3 and therefore do not specify a possible number of transform scales.
imgirdwt implements the corresponding inverse RDWT. The number of levels of inverse RDWT to be performed is extracted from the the number of input icpfiles specified on the command line in a manner identical to that described above for imgrdwt.
imgrdwt and imgrdwt are implemented via calls to QccWAVWaveletRedundantDWT2D(3) and QccWAVWaveletRedundantDWT2D(3) , respectively. See the corresponding documentation for those functions for details on the RDWT and its relation to the usual critically sampled DWT as implemented by imgdwt(1) .
A. Cohen, I. Daubechies, J. C. Feauveau, "Biorthogonal Bases of Compactly Supported Wavelets," Communications on Pure and Applied Mathematics, vol. 45, no. 5, pp. 485-560, May 1992.
M. Antonini, M. Barlaud, P. Mathieu, I. Daubechies, "Image Coding Using Wavelet Transform," IEEE Transactions on Image Processing, vol. 1, no. 2, pp. 205-220, April 1992.