This course introduces the most important concepts and algorithms that are used in modern image and video coding approaches. We will particularly focus on techniques that are found in current international video coding standards.
In a short first part, we introduce the so-called raw data formats, which are used as input and output formats of image and video codecs. This part covers the following topics:
- Colour spaces and their relation to human visual perception
- Transfer functions (gamma encoding)
- Why do we use the YCbCr format?
The second part of the course deals with still image coding and includes the following topics:
- The start: How does JPEG work?
- Why do we use the Discrete Cosine Transform?
- Efficient coding of transform coefficients
- Prediction of image blocks
- Adaptive block partitioning
- How do we take decisions in an encoder?
- Optimized quantization
In the third part, we discuss approaches that make video coding much more efficient than coding all pictures using still image coding techniques:
- Motion-compensated prediction
- Coding of motion vectors
- Algorithms for motion estimation
- Sub-sample accurate motion vectors and interpolation filters
- Usage of multiple reference pictures
- What are B pictures and why do we use them?
- Deblocking and deringing filters
- Efficient temporal coding structures
In the exercises, we will implement our own image codec (in a gradual manner). We may extend it to a simple video codec.