120 likes | 375 Views
A Parallel Implementation of the Discrete Wavelet Transform for Image Compression. Andria Dyess Proposal for EE 691/2. Presentation Overview. What is the Discrete Wavelet Transform (DWT)? Applications in Image Compression Sequential DWT Algorithm Possible Parallel Approaches
E N D
A Parallel Implementation of the Discrete Wavelet Transform for Image Compression Andria Dyess Proposal for EE 691/2
Presentation Overview • What is the Discrete Wavelet Transform (DWT)? • Applications in Image Compression • Sequential DWT Algorithm • Possible Parallel Approaches • Expected Results
What is a Wavelet? • A signal that is non-zero over a finite range, and zero elsewhere • Haar Wavelet • Daubechies Wavelet
Discrete Wavelet Transform • Fourier analysis expresses a signal as the sum of sinusoids • Wavelet Analysis expresses the signal as the sum of scaled and shifted versions of the mother wavelet • Discrete Wavelet Transform finds the wavelet coefficients for an NxN input matrix
Image Processing Applications • In JPEG2000, DWT replaces the traditional DCT for transforming image data before encoding. • Why DWT? • Low resolution data first – progressive transmission • Wavelets are better suited for sharp edges
1-D Wavelet Example Original pixels: 64 48 16 32 56 56 48 24 Iteration #1: 56 24 56 368 -8 0 12 Iteration #2: 40 4616 10 8 -8 0 12 Iteration #3: 43-3 16 10 8 -8 0 12 averagedifference
2-D Wavelet Transform • First step is to perform row transformation: 18 14 12 4 12 4 2 4 10 6 8 8 8 0 2 0 16 4 8 0 7 3 6 4 12 0 4 4 5 1 6 0 • Next step is to transform the columns: 12 4 2 4 8 2 4 2 8 0 2 0 2 0 -2 0 7 3 6 4 2 2 0 2 5 1 6 0 1 1 0 2
Parallel Approach #1 • Each row can be transformed independently of the others • Data partitioning – assign a number of rows to each available processor • When row transformation is complete, divide the columns among available processors • Shared memory approach using OpenMP
Approach #2 - Pipelining • Two-stage pipeline (suggested by Sava et al) • First stage: perform the first iteration • n operations • Second stage: perform the remaining iterations • n/2 + n/4 + n/8 + … < n operations • Hybrid solution: • Use MPI Tasks for each stage • Use parallel OpenMP threads within each stage
Expected Results • Measure execution times for the sequential algorithm and both parallel approaches on bragg.eng.uah.edu • Do parallel algorithms significantly improve performance? • How does the data size of the input matrix impact performance?