biowave2 Computes the biorthogonal wavelet transform of an image
biowave2 [-r NLevel] [-h HaarNLevel] [-e EdgeMode] [-n FilterNorm] Image WavTrans ImpulseResponse1 ImpulseResponse2
-r NLevel : Number of levels (default 1)
-h HaarNLevel : Continue decomposition with Haar filter until level HaarNLevel
-e EdgeMode : Edge processing mode (0/1/2, default 2)
-n FilterNorm : Normalization mode for filter bank (0/1/2, default 0)
Image : Input image (fimage)
WavTrans : Output wavelet transform of Image (wtrans2d)
ImpulseResponse1 : Impulse response of filter 1 (fsignal)
ImpulseResponse2 : Impulse response of filter 2 (fsignal)
void biowave2 (NumRec , Haar , Edge , FilterNorm , Image , Output , Ri1 , Ri2 )
int *NumRec ;
int *Haar ;
int *Edge ;
int *FilterNorm ;
Fimage Image ;
Wtrans2d Output ;
Fsignal Ri1 , Ri2 ;
biowave2 computes the two-dimensional discrete wavelet transform of the floating point image stored in the file Image, using filter banks associated to biorthogonal bases of wavelets. See owave1 and biowave1 modules' documentation for definitions and notations and refer to [CDF92] for the theory.
As in owave2 module, this transform is semi-separable, i.e. it can be decomposed at each level in two one-level and one-dimensional wavelet transforms applied successively on the lines and on the columns of the image. It corresponds to separable multiresolution analysis and semi-separable wavelet bases on L2(IR2). The one-dimensional algorithm is the one that is implemented in biowave1, and the multidimensional construction is the same as that of the orthogonal case (owave2). The reader is refered to the documentation of these modules for their description.
At each step the average sub-image is splitted into four sub-images, corresponding to the four generating functions (x)(y),(x)(y),(x)(y),(x)(y).
The different methods for computing the edge coefficients are the same as in the univariate case (see biowave1), unless the dimensions of the image are not multiples of 2J. Then the processing is done in the same way as in the 2D orthogonal case (see owave2 module documentation).
As for orthogonal decomposition, the size of sub-images is divided by four at each step, so that the total size of the wavelet transform is equal to the size of the original image, and the number J of levels in the decomposition is upperbounded.
The complexity of the algorithm is (2 - 2-J+1)(N + ) dx dy multiplications and additions, where dx and dy are respectively the number of columns and the number of lines in the original image.
The resulting sub-images AJ, D11, D12,..., D1J, D21, D22,..., D2J, and D31, D32,..., D3J are stored in files having all the same prefix Wavtrans. The name of the file is prefix_j_A.wtrans2d for Aj and prefix_j_D.wtrans2d for Dj.
The coefficients (hk) and () of the filter's impulse responses are read in the file ImpulseResponse1 and ImpulseResponse2.
Last Modification date : Thu Jan 31 15:01:50 2002