Go to:
Title Page               Chapter 1           Appendix A   Appendix J
Copyright                Chapter 2           Appendix B   Appendix K
Abstract                 Chapter 3           Appendix C   Appendix L
Acknowledgements         Chapter 4           Appendix D   References
Table of Contents        Chapter 5           Appendix E
List of Figure           Conclusions/        Appendix F
List of Tables           Future Directions   Appendix G
List of Audio Examples                       Appendix H
List of Programs                             Appendix I


Appendix D

C++ source code for programs used in Chapter 3



I. Lifted_wavelet_denoise

A. General Description and Usage

lifted_wavelet_denoise is a program which uses lifted, interpolating scaling and wavelet functions to achieve broad-band denoising as described in Chapter 3. The program can denoise any AIFF file of any AIFF-standard sample rate, number of channels, and sample bitwidth. Type lifted_wavelet_denoise for a usage reminder:

Lifted wavelet broad-band denoising of AIFF sound files,

(any sample rate, any bitwidth, any number of channels)

Written by Corey Cheng, Winter 1996.

usage: lifted_wavelet_denoise /inputfile/ /outputfile/ /window_size/ /iterations/ /vanishing index/ /threshold/

The input and output files are the filenames of AIFF files of the source and destination files. If the destination file already exists, it is erased and replaced with the output of the denoising process.

window_size refers to how many frames of audio (one frame of audio is one sample per channel per time interval; for example, there are two samples in one stereo frame) should be used in the wavelet window. This parameter is linked with the iterations parameter, which dictates how many iterations of the forward and inverse transform to perform on each window of sound data. The window size should be an exact power of two, and should be equal to at least 2iterations+2. Typically, the higher the number of iterations, the more levels of wavelet coefficients are available that describe lower-frequency spectral components. However, the larger the number of iterations, the larger the window will have to be to accommodate the larger number of wavelet coefficients.

The threshold value is the value below which a wavelet coefficient is deemed to be noise, and subsequently eliminated (set to zero). According to the soft thresholding scheme, the threshold value is also subtracted from every other wavelet coefficient, so that the overall power of the input signal is affected.

The vanishing index, N, controls how many vanishing moments the analyzing and synthesizing wavelets will have. Use:

N = 1 for linear interpolation (one vanishing moment)

N = 2 for cubic interpolation (three vanishing moments)

N = 3 for fifth order interpolation (5 vanishing moments)

N = j for 2j-1 order interpolation (2j-1 vanishing moments)

In general, The higher the number of vanishing moments, the sharper the rolloff of the associated high and low pass analyzing and synthesizing filters. However, due to the limitations of the lifting scheme with interpolating wavelets, boundary artifacts become more prevalent for denoising with more vanishing moments. Processing time is also significantly increased for denoising with more vanishing moments.

B. Compiling the program

This program was written in C++ with the GNU G++ dialect, version 2.6.2. The user must have the lifted_wavelet_transforms.h, ac.h, ac2.h, ac.cc, and ac.error.cc files in the same directory as the main source file, lifted_wavelet_denoise.cc to compile the program properly. The audio libraries libaudio.a and libaudiofile.a, available in standard releases of the Irix operating system, are required for compilation. No Makefile is provided, as all compilation can be done with the following command:

g++ -O3 -mips2 -mcpu=r4000 -o lifted_wavelet_denoise

lifted_wavelet_denoise.cc ac.cc ac.error.cc -lm -laudio

-laudiofile

II. circ_conv_wavelet_denoise

A. General Usage

circ_conv_wavelet_denoise is a program which uses binary coefficient wavelets to achieve broad-band denoising as described in Chapter 3. Circular convolution is used to deal with the boundaries. In the current implementation the 5/3 filter pair described in Chapter 1 (five analysis low-pass filter coefficients and three analysis high-pass filter coefficients) is used for the analysis and resynthesis. The program's structure is flexible, however, and the user may easily adopt any set of perfectly reconstructing analysis and resynthesis filters if he wishes to recompile the code. This program can denoise any AIFF file of any AIFF-standard sample rate, number of channels, and sample bitwidth. Type circ_conv_wavelet_denoise for a usage reminder:

Circular convolution wavelet broad-band denoising of AIFF sound files (any sample rate, any bitwidth, any number of channels)

Written by Corey Cheng, Winter 1996.

usage: circ_conv_wavelet_denoise /inputfile/

/outputfile//window_size/

/iterations/ /threshold/


The input and output files are the filenames of AIFF files of the source and destination files. If the destination file already exists, it is erased and replaced with the output of the denoising process.

window_size refers to how many frames of audio (one frame of audio is one sample per channel per time interval; for example, there are two samples in one stereo frame) should be used in the wavelet window. This parameter is linked with the iterations parameter, which dictates how many iterations of the forward and inverse transform to perform on each window of sound data. The window size should be an exact power of two, and should be equal to at least 2iterations+2. Typically, the higher the number of iterations, the more levels of wavelet coefficients are available that describe lower-frequency spectral components. However, the larger the number of iterations, the larger the window will have to be to accommodate the larger number of wavelet coefficients.

The threshold value is the value below which a wavelet coefficient is deemed to be noise, and subsequently eliminated (set to zero). According to the soft thresholding scheme, the threshold value is also subtracted from every other wavelet coefficient, so that the overall power of the input signal is affected.

B. Compiling the program

This program was written in C++ with the GNU G++ dialect, version 2.6.2. The user must have the normal_wavelet_transforms.h, ac.h, ac2.h, ac.cc, and ac.error.cc files in the same directory as the main source file, circ_conv_wavelet_denoise.cc to compile the program properly. The audio libraries libaudio.a and libaudiofile.a, available in standard releases of the Irix operating system, are required for compilation. No Makefile is provided, as all compilation can be done with the following command:

g++ -O3 -mips2 -mcpu=r4000 -o circ_conv_wavelet_denoise

circ_conv_wavelet_denoise.cc ac.cc ac.error.cc -lm -laudio

-laudiofile


Go to:
Title Page               Chapter 1           Appendix A   Appendix J
Copyright                Chapter 2           Appendix B   Appendix K
Abstract                 Chapter 3           Appendix C   Appendix L
Acknowledgements         Chapter 4           Appendix D   References
Table of Contents        Chapter 5           Appendix E
List of Figure           Conclusions/        Appendix F
List of Tables           Future Directions   Appendix G
List of Audio Examples                       Appendix H
List of Programs                             Appendix I