Wavelet Transforms CENG 5931 GNU RADIO INSTRUCTOR: Dr GEORGE COLLINS Contents Introduction Wavelet Transforms wavelet Vs Fourier Transforms GNU Scientific Library Wavelet transform usage in GNU RADIO Functions of wavelet transforms Applications Conclusion Introduction GNU RADIO: Free software development toolkit that provides the signal processing runtime and processing blocks to implement software radios. Used in hobbyist, academic and commercial environments to support wireless communications research. Applications are written using Python. Signal processing path is implemented in C++ using processor floating point extensions. Wavelet Transforms The wavelet transform is a mathematical tool that decomposes a signal into a representation that shows signal details and trends as a function of time. Basis functions of the wavelet transform are small waves located in different times Wavelet Transforms is localized in both time and frequency Types of Wavelet Transforms • • • • • Continuous wavelet transform (CWT) Discrete wavelet transform (DWT) Fast wavelet transform (FWT) Wavelet packets Complex wavelet transform wavelet Vs Fourier transforms • If a signal has a discontinuity, FT produces many coefficients with large magnitude (significant coefficients) • But WT generates a few significant coefficients around the discontinuity • Nonlinear approximation is a method to benchmark the approximation power of a transform • In nonlinear approximation we keep only a few significant coefficients of a signal and set the rest to zero wavelet Vs Fourier transforms (cntd..) • Then we reconstruct the signal using the significant coefficients • WT produces a few significant coefficients for the signals with discontinuities • Thus, we obtain better results for WT nonlinear approximation when compared with the FT • WT has better capability for representing speech and natural signals when compared with the FT GNU Scientific Library The GNU Scientific Library (GSL) is a collection of routines for numerical computing. The routines have been written from scratch in C, and present a modern Applications Programming Interface (API) for C programmers, allowing wrappers to be written for very high level languages. The source code is distributed under the GNU General Public License. Provides a wide range of mathematical routines such as random number generators, special functions and least- squares fitting Blocks C++ Signal Processing Blocks: Top Block and Hierarchical Block Base Classes Signal Sources Signal Sinks Filters Mathematics Signal Modulation Signal Demodulation Information Coding and Decoding Synchronization Type Conversions Signal Level Control (AGC) Fourier Transform Wavelet Transform OFDM Blocks Pager Blocks Miscellaneous Blocks Slicing and Dicing Streams Voice Encoders and Decoders Base classes for GR Blocks Collaboration diagram Wavelet transform usage in GNU RADIO Collaboration diagram for Wavelet Transform: Classes Used in Wavelet Transforms are 1. gr_wavelet_ff compute wavelet transform using gsl routines Inheritance diagram Classes Used in Wavelet Transforms are(cntd..) 2. gr_wvps_ff computes the Wavelet Power Spectrum from a set of wavelet coefficients Inheritance diagram Functions in one dimension The functions used in one dimension wavelet transforms are Function: int gsl_dwt_transform (const gsl_wavelet * w, double * data, size_t stride, size_t n, gsl_wavelet_direction dir, gsl_wavelet_workspace * work) The length of the transform n is restricted to powers of two. For the transform version of the function the argument dir can be either forward (+1) or backward (-1). A workspace work of length n must be provided. Functions in one dimension Function: int gsl_dwt_transform_forward (const gsl_wavelet * w, double * data, size_t stride, size_t n, gsl_wavelet_workspace * work) Function: int gsl_dwt_transform_inverse (const gsl_wavelet * w, double * data, size_t stride, size_t n, gsl_wavelet_workspace * work) Functions in two dimensions Function: int gsl_wavelet2d_transform (const gsl_wavelet * w, double * data, size_t tda, size_t size1, size_t size2, gsl_wavelet_direction dir, gsl_wavelet_workspace * work) This functions compute in standard forms on the array data stored in rowmajor form with dimensions size1 and size2and physical row length tda. The dimensions must be equal (square matrix) and are restricted to powers of two. Functions in two dimensions Function: int gsl_wavelet2d_transform_forward (const gsl_wavelet * w, double * data, size_t tda, size_t size1, size_t size2, gsl_wavelet_workspace * work) Function: int gsl_wavelet2d_transform_inverse (const gsl_wavelet * w, double * data, size_t tda, size_t size1, size_t size2, gsl_wavelet_workspace * work) Two dimensional wavelet in non standrad form Function: int gsl_wavelet2d_nstransform (const gsl_wavelet * w, double * data, size_t tda, size_t size1, size_t size2, gsl_wavelet_direction dir, gsl_wavelet_workspace * work) Function: int gsl_wavelet2d_nstransform_forward (const gsl_wavelet * w, double * data, size_t tda, size_t size1, size_t size2, gsl_wavelet_workspace * work) Function: int gsl_wavelet2d_nstransform_inverse (const gsl_wavelet * w, double * data, size_t tda, size_t size1, size_t size2, gsl_wavelet_workspace * work) These functions compute the two-dimensional wavelet transform in nonstandard form. Functions for standrad form matrix Function: int gsl_wavelet2d_transform_matrix (const gsl_wavelet * w, gsl_matrix * m, gsl_wavelet_direction dir, gsl_wavelet_workspace * work) Function: int gsl_wavelet2d_transform_matrix_forward (const gsl_wavelet * w, gsl_matrix * m, gsl_wavelet_workspace * work) Function: int gsl_wavelet2d_transform_matrix_inverse (const gsl_wavelet * w, gsl_matrix * m, gsl_wavelet_workspace * work) These functions compute the two-dimensional in-place wavelet transform on a matrix a. Functions for non standrad form matrix Function: int gsl_wavelet2d_nstransform_matrix (const gsl_wavelet * w, gsl_matrix * m, gsl_wavelet_direction dir, gsl_wavelet_workspace * work) Function: int gsl_wavelet2d_nstransform_matrix_forward (const gsl_wavelet * w, gsl_matrix * m, gsl_wavelet_workspace * work) Function: int gsl_wavelet2d_nstransform_matrix_inverse (const gsl_wavelet * w, gsl_matrix * m, gsl_wavelet_workspace * work) These functions compute the non-standard form of the two-dimensional inplace wavelet transform on a matrix a. Applications of wavelet transforms The following are applications of wavelet transforms: data and image compression partial differential equation solving transient detection pattern recognition texture analysis noise/trend reduction Conclusion In this presentation we had discussed several kind of blocks that are used in GNU python programming . We had discussed about the wavelet transforms, their usage in GNU Radio and the functions that are used to execute them, Also various applications where these wavelet transforms are used. References http://www.ift.uni.wroc.pl/~zkoza/doc/gsl/gsl-ref_30.html http://gnuradio.org/redmine/wiki/gnuradio http://gnuradio.org/doc/doxygen/group__wavelet__blk.html http://zone.ni.com/devzone/cda/tut/p/id/3887