Introduction and Setup
Image processing is the algorithms and techniques used to manipulate and analyse images; By applying transformations to an image we can filter out an unwanted elements, alter colours or shapes to produce desirable properties, or extract information about the features and objects in an image. As well as image processing, we will look at parts of Computer Vision and how the two areas tie together.
So what is an image? For the purpose of image processing, we need to know how images are treated by computers.
Within a Computer, images are stored as a two dimensional array of pixels (picture element). The array can be thought of as a long table of row and columns, where each entry corresponds to a single pixel and each pixel stores the colour of the image at that single point. To understand how each colour is stored we will look at colour spaces.
0.2 Colour Spaces
The value stored for each pixel in the image depends on the colour space and colour model being used. The colour model describes how colours are represented by a set of numbers, where each number corresponds to a different colour 'channel'. The colour space is the mapping of the channels of the colour model to absolute reference values. For example the widely used colour space sRGB is based on an RGB colour model, where each pixel has values in the Red, Green and Blue colour channels. Each value represents the intensity of that colour relative to the absolute reference colours defined by the sRGB colour space.
There are a whole range of colour models and spaces, another widely used colour model is CMYK, standing for Cyan, Magenta, Yellow and Key (Black). This colour model is used in printing and differs from the RGB colour model as it is a subtractive colour model rather than an additive model; So in the RGB colour model, a combination of full intensities in Red, Green and Blue corresponds to white, whereas in CYMK it corresponds to black.
When the colour of a pixel is stored, it is stored as a tuple (ordered list) of values, with values for each channel defined by the colour model. The range each value takes is defined by the colour depth of the image, which is the number of bits used to store the colour of a single pixel. For an image based on the RGB model with a colour depth of 24 bits per pixel, 8 bits are used for each of the 3 channels giving a range of 0 to 255 (inclusive). This decimal value would then be stored internally as its binary equivalent. Sometimes the number of bits per pixel is defined in terms of the number of bits used per colour channel. So a pixel format named RGB565 would use 5 bits for the red and blue channels, and 6 bits for the green.
The next stage is to set up the Raspberry Pi. Afterwards we will move on to implementing some image processing algorithms.
In this series of tutorials, I will be using Python and C to illustrate algorithms used. To avoid the nuances of languages and libraries we will be using a single uniform C library and Python module to provide us useful functionality. The following sections will guide you through the download and installation of the necessary files onto your Raspberry Pi.
This section covers the download of the necessary libraries for the remaining tutorials
To download this course and all of the necessary files to your Raspberry Pi, you need to first open a terminal window from the desktop (Start-<Accessories-<LXTerminal). In this terminal, navigate to your home directory by typing the command:
Now we're in our home directory, we will make a new directory for the tutorials and navigate into it, type these commands in turn:
mkdir image_processing cd image_processing
Now to download the files to this directory, type this command:
sudo wget http://www.cl.cam.ac.uk/downloads/freshers/image_processing.tar.gz
Now we have all of the files in a compressed format, to extract the files type:
sudo tar -xf image_processing.tar.gz
wget command grabbed the file from our webpage, and the
tar command extracted the resources from the compressed file. Type
ls to see the names of all the newly created files.
The current directory
~/image_processing/ contains these tutorial
pages, so that you can open and view them from the desktop. It also contains
library directory contains the library, python module and
C header file. It also contains the install script to place these files into
the correct place in the filesystem.
examples contains the code from the examples in these tutorials.
source contains the source code for the library and python module,
you can look here if you're interested in how the library works. If you want
to alter and build the source, you can look at
Makefile to see
the build steps. The source depends on python2.7-dev and libsdl1.2-dev to
Now we have all of the files, the next section will guide you through installing them.
Now to installed the our library onto the pi, navigate into the library directory
And to install, type
sudo make install
This will execute a script which will move all of the files and the library into the necessary place in the filesystem.