Optimised C++ routines for image up-conversion and down-conversion

Table of Contents | Abstract | Up-conversion

Introduction

Up-conversion of images is an important part of the motion estimation and compensation methods used within video compression systems. Down-conversion is of use in compression codecs that use hierarchical motion estimation to generate their pixel accurate motion vectors. This article describes the development of C++ code to quickly scale images up or down. The code has been integrated into Dirac wavelet based codec.

This article covers the optimisation of the code and briefly describes the filters used on the images. The filters will need to be adapted once the conversion routines are used in a real situation and the results can be observed properly. A general knowledge of C/C++ and PC architecture is assumed for some of the more detailed optimisation descriptions.

It is likely that the code will be released into the open source community or at the least be modified in the future. To facilitate this I have attempted to make the source code easily readable and have not over optimised. Fast code that is completely unreadable will most likely become obsolete long before a slightly slower version that is easy to modify. I have also tried to avoid optimising the code for a particular platform.

In the remainder of this document I will describe the optimisations to the up- and down-conversion procedures before presenting some timing results. The majority of the optimisation theory applicable to the down-conversion process is mentioned in the up-conversion section and will not be repeated.

SourceForge.net Logo