Laboratory: Digital Images and Color
CSC 105 |
The Digital Age |
Spring 2009 |
In this lab, you'll explore several aspects of images:
- Comparing file formats (GIF and JPEG)
- Re-sizing image files
- Image compression effects
- Color representation
Preparation
To prepare for the exercise:
-
You should have a directory named 105 within your home
directory, which you created in a previous laboratory session. To
run a script (a particular kind of program) that will copy some
images into that directory, enter (or copy) the following command
to your Terminal command line:
~weinman/courses/CSC105/labs/image-proc-script
-
Move to your 105 directory with the command:
-
Check that the images college-logo.gif, paradise.jpg,
rainbow.gif, and water-lilies.jpg exist in your
directory:
In the file listing, the number displayed just left of the file
date tells you the number of bytes in each file. How many bytes
are in the original pictures college-logo.gif,
paradise.jpg, and water-lilies.jpg?
-
While you will be working with copies of images on your account,
this page shows the original images.
Part I: Exploring Image File Formats
In this part of the laboratory, you will work with a free open-source image
manipulation program (similar to Adobe's Photoshop) called GIMP,
which stands for Gnu Image Manipulation Program. You will use GIMP
to explore two common image file formats, gif and jpg.
(The latter format is also referred to as jpeg).
Creating jpeg Files from gif Files
As discussed in class, the JPEG file format can utilize the full range
of RGB values. In contrast, although GIF files can include any
particular color, they are limited to a maximum number (often 256) of
colors total. This is because the GIF format stores colors in a table,
and then refers to those colors by their position in the table (i.e.,
their index position), rather than by the full RGB triple.
As a practical matter, this means that image processing software such
as the GIMP generally can work with images in two color modes: RGB
mode, and indexed mode. JPEG images use RGB mode, and
GIF images use indexed mode. Thus, in converting an image from the
JPEG format to the GIF format (or back), you will need to change image
modes.
-
To open the laurel-leaf logo (a GIF image) in the GIMP,
type the command
The ampersand & at the end of this line tells Linux to open the GIMP in
windows separate from your terminal window, so that your terminal window is
still free for you to use.
The first time you use GIMP, the program needs to set up some
directories and files for its processing. To accomplish this, the program
will lead you through a series of steps.
-
Throughout the initilization process for GIMP, you can
safely accept the default values by just pressing Next
or finish or similar options as they are presented.
The GIMP program will open several windows, including a picture
with the image itself. At the top of the frame containing the
picture, note that the caption includes the word Indexed to
show that a color table is being used.
- Close GIMP's "Tip of the Day" window (after reading it, if
you wish).
-
To change the mode of the image to full RGB:
-
Right-click on the laurel-leaf logo image to bring up a menu.
-
From this menu, select Image, then Mode, and then
RGB.
-
Note that the caption of the frame now indicates RGB rather
than Indexed.
-
To save the picture as a jpeg file:
-
Right-click on the image, and then select File and Save
As. (Be careful to select "Save As", not "Save", because this will
allow you to keep both the original gif image and the new jpg image.)
-
In the "Save Image" dialog box that appears, click on the
triangle just left of "Select File Type (By Extension)".
-
Scroll down the list of file types, and select "JPEG image".
-
Check that the file name has changed
to college-logo.jpg, and click Save.
-
JPEG allows various quality settings. In general, the better
the quality, the larger the file. In the next dialog box that
appears, accept the default quality (0.85), and
click OK.
-
Close the image, either by selecting Close from
the File menu, or by clicking on the X in the
upper-right corner of the image window. (Do not close GIMP yet.)
-
In the terminal window, you may see that GIMP has printed
some messages, which you can safely ignore. Press Enter in the
terminal window to get the usual prompt back.
Then check that a new image was created with
How many bytes are there in college-logo.gif? How
many bytes in college-logo.jpg?
-
To open both of the college logo images:
- Bring the GIMP toolbar window to the front again.
- Select Open from the File menu.
-
Double-click on college-logo.gif in the dialog box
that appears.
- Open college-logo.jpg in similar fashion.
(Yes, I realize that we just closed one of these images. It
seems to be important that the image be closed and re-opened,
after changing its file type, to illustrate the following
issue.)
-
Arrange your windows so that you can see at least part of both
images as well as the GIMP toolbar window. Then to get a close-up view
of both images:
-
Find an icon on the GIMP toolbar that looks like a
magnifying glass, and click on it. Now if you click on
either image, it will zoom in.
-
Select one of the points in the laurel leaf logo, and zoom
in on it in both images. (Be sure that you are zooming in on
each image an equal amount. To do so, it will be useful to
observe the icon in the lower-left corner of each image that
shows the zoom amount as a percentage.)
Describe what you see, paying particular attention to the
colors that you see, in the close-up view of each image.
-
Which image format seems to be most suitable for the logo image?
-
Close both images, but do not close GIMP yet.
Creating GIF Files from JPEG Files
Converting an image from JPEG to GIF format with GIMP follows a similar
process.
-
Open the image paradise.jpg in the GIMP.
-
Now change the color mode of the image to "indexed":
-
Right-click on the image, and select Image,
then Mode, and then Indexed.
-
Click OK in the dialog box that appears, to accept the default
number of colors (256). This will cause a color table to be created for
the image.
-
Note that the caption of the frame now
indicates Indexed rather than RGB.
-
Save the picture as a gif file, following an analogous process as used
above for saving in jpeg format.
-
Close and re-open the file paradise.gif. Then open the
original file paradise.jpg as well.
-
Now take a closer look at each of these pictures, again focusing
on the colors they contain in a given region. I suggest looking at
some area in the sky or the distant hills. (Again, as you zoom in, be
sure to zoom in on each image an equal amount.)
Describe what you see when zooming in on each image.
-
Back in your terminal window, check the size of each version of these
files. How many bytes does each one occupy?
-
Which image format seems most appropriate for the "paradise" image?
-
Do you have a hypothesis about what types of images are most
appropriate for each of these two image formats?
-
Close both of the "paradise" images, but don't close the GIMP yet.
Part II: Re-Sizing Images
In this part of the laboratory, you will experiment with scaling
images. One reason for doing so is that images taken with modern digital
cameras tend to be very large in terms of the numbers of pixels involved.
As a result, if we post a full-size image on the web, it can take a very
long time for the web page to load in a browser because all those pixels
need to be transferred to the user's computer for viewing. Thus, it is
preferable to post small versions of your images.
-
Open the image water-lilies.jpg in the GIMP.
-
This image is already reasonably small, as you can see by moving
your mouse to the far bottom-right corner of the image, and then
looking at the pixel coordinates displayed in the bottom-left of the
window. Estimate the number of pixels in each row and column of this
image.
-
Now select Scale Image... from the Image menu. In
the dialog box that appears, change the width of the image to 600
(pixels per row). When you have done so, press Enter
or TAB, and you should see that the height of the image is
also automatically changed to maintain the correct "aspect ratio"
(ratio of width to height). This will keep the the image from getting
distorted.
-
Click on the Scale button to shrink the image to the
specified size.
-
Finally, save your reduced-size image. (If you would like to keep
the original image as well, be sure to use Save As and give
your new image a new name.)
-
Close any images you still have open, but do not close the GIMP.
Part III: Exploring Image Compression
In this part of the lab, you'll experiment with the effects of image
compression in the JPEG and GIF formats.
Exploring GIF Compression
GIF uses a "lossless" compression method, which means the image file
stored is smaller, but the resulting displayed image is precisely the
same. Here you will look at two images that can indicate a little bit
about how GIF represents images.
- Open the image rainbow.gif in the GIMP.
-
From the Image menu, choose Transform and then
click Rotate 90 degrees CW. The resulting image should
contain vertical, rather than horizontal stripes.
-
Save the resulting image using Save As under
the File menu. Be sure to give it a new name, such
as rainbow-vert.gif
-
How many bytes is the original (horizontally
striped) rainbow.gif file? How does this compare to the
rotated (vertically striped) GIF file?
-
Can you hypothesize why there may be such a difference?
Think about how you might describe this picture to someone so
that they might draw it themselves. What if you could only
describe the color and how long to draw the
color horizontally?
-
Close any images you have open, but do not close the GIMP.
Exploring JPEG Compression
JPEG uses a "lossy" compression algorithm, which makes the image files
much smaller, but they can be visibly affected because data is lost in
the compression process. In this part you'll explore these effects on
image quality and file size.
-
Open the image water-lilies.gif in the GIMP.
-
Choose Save As from the File menu. Give the file a
different name, but keep the jpg extension at the end of
the file name. Click OK.
-
A dialog box titled "Save as JPEG" will appear. Check the box
labeled "Show Preview in image window". This will allow you to see
the result of saving the compressed image without actually saving
and reopening it. Position the dialog box and the image so that
you can easily change the Quality slider while also viewing most
(or all) of the image.
-
Experiment with the quality slider.
-
How quickly does the file size reported decrease?
-
How much does the file size decrease before the difference in image
quality becomes visibly noticeable?
-
How low can you set the Quality before the the image is really
drastically altered (e.g., blocky edges, strange colors and
"noise")? What is the file size?
-
What does the image look like for extremely low Qualities (e.g. 1-6)?
-
What can you conclude about the relationship between the
compressed file size and visible image quality?
-
Is it possible for images to be compressed (i.e. a quality less
than 100) without visible loss?
-
Close any images you still have open, and also close the GIMP.
If we have time at the end of lab, we will talk about how the JPEG and GIF image formats compress images.
Part IV: Exploring RGB (Red,Green,Blue) Colors
From the class discussion, you know that colors can be
represented by dividing them into their red, green, and blue components.
On computers, the intensity of each of these three colors is typically
specified on a scale from 0 through 255.
In this exercise we will use the "Color Chooser" tool provided
on the MathLAN systems.
-
Open a terminal window and type the following command to start the
color chooser:
-
Find the color chooser in the upper-left portion of the
window. Notice that there is a small X on the color wheel, indicating
the location of the "current" color. Click on the X and drag it around
within the color chooser. Notice that as you change the current color,
the numeric values for red, green, and blue displayed below the color
chooser will change accordingly.
-
Drag the "current color" X to the top of the color
circle. (Tip: You may find it easiest to drag your mouse a
little ways above the color chooser. This will position the X
exactly on the upper edge of the wheel.)
Now drag the X across the top of the chooser, and watch how the
numeric RGB values change.
- What RGB values represent turquoise (also called cyan)?
- What values represent magenta (a strong pink-purple)?
- What values represent a strong yellow?
-
Choose a color somewhere on the upper edge of the color chooser,
and select that color with the mouse.
Now turn your attention to the numeric RGB values. One of them
should be zero.
Note the arrows to the right of the RGB values. Use the arrows
to increase the value of the RGB component that is zero. What
happens to the color as you do this? (Watch the X)
Return the component (R, G, or B) you changed back to zero.
-
Now notice the slider to the right of the color chooser. It should
have an arrow pointer all the way at the top. This is called the
"value" slider.
Slide the pointer down. What happens to the RGB values as you do
this? What is the effect on the color?
-
Set all of the RGB components to 255. Now try sliding the "value"
slider down. What colors are produced when all the RGB values are
identical?
-
Close the color chooser program by clicking the X in the upper
corner of the window.
For those with extra time:
-
Start the KolourPaint program by typing the following command at the
terminal window:
This opens a window with a canvas in the middle, a toolbar on the
left, and a color palette near the bottom.
-
At the bottom-left of the window is a box with two arrows and
overlapping black and white squares. The black square represents
the current choice of foreground color (currently black) ,
while the white square is the background color (currently
white). You can double click on either square to bring up the
color chooser from the last part of the lab to select your own
color to use. Alternatively, you may select a pre-defined color
from the palette at the bottom of the window.
-
Explore the functionality of the various tools on the
toolbar. Notice that if you hold the mouse over one of the tools,
a brief text description of the tool will appear. You might try
each tool in turn: click on it to make it active, test it out by
drawing on your canvas.
Note that some of the tools provide options to modify the to the
tool (e.g., wide or narrow paintbrushes, text size and font) at the
bottom of the toolbar.
-
You can save your artwork by selecting Save under
the File menu. Select an appropriate file type for your
image, give it a name (including an appropriate file extension), and
then press OK.
-
Close KolourPaint by clicking the X in the upper-right
corner of he window.