The main goal of this thesis is to implement image and video sequence wavelet compressor. The compressor is implemented using NVIDIA CUDA technology which allows computing on GPU. The algorithms for wavelet transform, quantization and arithmetic coding are presented.
The thesis describes basics of the NVIDIA CUDA architecture. The particular emphasis is placed on the feasibility of the algorithms on the GPU. Developed encoder is verified for GPU implementation effectiveness.
Developed application allows compressing images and video sequences using wavelet transform. Moreover, some parts of compressor are both implemented on CPU and GPU. This allows comparing speedup gained by using NVIDIA CUDA technology. Main features of developed application:
Developed codec uses standard lossy transform scheme. Input images and video sequence frames are transformed by wavelet transform and quantized. Then lossless step is performed by arithmetic coder. Image 1 shows encoding scheme with steps implemented on GPU, marked with green color.
Developed codec was verified for compression effectiveness and speed. Particular emphasis was put on comparison of NVIDIA CUDA GPU implementation with CPU implementation. Due to special mechanisms built into application it was possible to measure time spend in each step of compression algorithm. Below there are results for image compression and decompression.
Developed compressor allows compression of image and video sequences. NVIDIA CUDA implementation of wavelet transform is up to 10 times faster than regular CPU implementation. However, due to high RD optimization cost, this leads only to 40 percent overall efficiency gain in image encoding. Other very costly step is arithmetic encoding, which due to its sequential character is impossible to parallelize. Video sequence encoding has similar results to image encoding. Complete verification results can be found in thesis text.