COMP1100
Introduction to Programming and Algorithms
Semester 1, 2006

How Computers Represent Images

The PPM File Format

Colours

The colours you see on a computer screen are made up of tiny red, green and blue dots. To specify a colour, you have to say how much red, how much green, and how much blue is in the colour, and the usual range is 0 .. 255 for each value. Here's some examples of colours and the RGB (red green blue) values that go with them:

White: R is 255, G is 255, B is 255
Red: R is 255, G is 0, B is 0
Orange: R is 255, G is 153, B is 62
Yellow: R is 255, G is 255, B is 0
Green: R is 0, G is 255, B is 0
Cyan: R is 0, G is 255, B is 255
Blue: R is 0, G is 0, B is 255
Purple: R is 193, G is 0, B is 159
Black: R is 0, G is 0, B is 0


Pixels and Images

Computers represent images by a grid of tiny coloured dots, called pixels. (The word "pixel" is an abbreviation of "picture element".) The pixels are so small that, when displayed on a computer screen, they appear to merge into a smooth image.

Here is an example of a very small image 4 pixels wide and 3 pixels high, along with an enlargement:

[demo image]

Here is an image which is 300 pixels wide and 184 pixels high:

The colour of each pixel in an image is typically specified by giving its RGB values.


The PPM File Format

In order to store an image, the computer doesn't merely store the colours of the pixels. It has to choose which image format to store it in. All image formats have this same general sort of structure:

Some information to say which sort of image format this is
Some header information (including width and height of image)
Pixel data (usually compressed)

PPM stands for "Portable Pix Map". It is a very old image format, that can represent any ordinary colour image. PPM files are plain text files with uncompressed image data, which means that it is very easy for a human to read the file.

Let's have a look at an actual PPM file, using the sample image

This is the PPM file representing that image:

    P3
    # Created by CB-F using emacs
    4 3
    255
    0   0   0   0   0   0   0   0   0   255 0   0
    0   0   0   255 255 255 255 0   0   150 150 255
    0   0   0   255 0   0   150 150 255 150 150 255

The pixel data in the file is uncompressed (and is text numerals rather than numbers), and therefore it takes up large amounts of memory. For example, the fireworks image above takes up 8K as a JPG image (JPG is another image format), but 176K as a PPM file. So PPMs have the advantage that it's easy to work with the pixel data (you can read it and it's easy to extract from the file) but they take up a lot of space. So when you are writing programs that manipulate PPMs, use small images to test your programs.


This page is an edited version of a document published by Sharon Curtis of Oxford Brookes University.
Thanks, Sharon.


Last modified: Thu Mar 9 16:31:43 EST 2006