In this lab you will learn about different image interpolation/decimation algorithms.
Image interpolation is used in a variety of applications, including, but not limited to:
Image resizing -- for enlarging an image or part of an image.
Image compression -- an image or portions of an image may be sub-sampled to save bandwidth. The image decoder must use some type of interpolation scheme to restore the original size of the shrunken regions.
Image restoration -- interpolation can be used to estimate the original intensities or color values of corrupted or missing pixels (e.g., old photographs, movie film).
For this part of the lab, you will implement and evaluate the following algorithms:
Zero order hold
In the second part of the lab, we explore several ways to shrink an image using two-dimensional decimation. Some applications that use image decimation:
Image compression -- some regions of an image do not carry a large amount of detail, and can be reduced in size with no or little loss in quality. Such regions can later be interpolated by the decoder.
Limited bandwidth image transmission -- Some images may be too high in resolution for a web server to handle the network traffic, so the images need to be reduced in size (e.g., photos of Jordan on ESPN's web site). Also, web pages may contain thumbnail images to let you preview a small version of the actual image. Thumbnails are sometimes created by downsampling only, resulting in poor quality
Protection of copyrighted material -- a company may show a low-resolution image image of a product (e.g. a movie or a piece computer hardware) to give you an idea of what the product looks like. A high-resolution image may give away too much information about the product, or be used to create unauthorized merchandise.
Limited resolution printing -- images sent to a printer often need to be shrunk before dithering can take place, due to limited resolution of the printer. Dithering is covered in Chapter 3 of the lecture notes, but not in this lab.
From your basic signal processing class, you know that decimation involves
reducing the number of samples of a signal by some factor
M. In this
lab you will write programs that using various methods to shrink a 512x512 image
down to 256x256 (
M=2) or 64x64 (