Introduction and Setup

0 Introduction

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.

0.1 Images

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.

1 Setup

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.

1.1 Download

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:

cd ~

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:

Now we have all of the files in a compressed format, to extract the files type:

sudo tar -xf image_processing.tar.gz

The 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
directories called library and examples

The 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
build.

Now we have all of the files, the next section will guide you through
installing them.

1.2 Install

Now to installed the our library onto the pi, navigate into the library
directory

cd ./library

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.