Dmitry Goldgof
Computer Science and Engineering
University of South Florida


Traditionally, Image Processing and Computer Vision courses were taught mostly (only) to graduate students. Hence, course content was directed toward theoretical and in-depth coverage. Though good for graduate students interested in further study of Computer Vision, this approach exposed only a very small number of students to the problems (and solutions) in our field. More recently, the undergraduate curriculum began to change and undergraduate courses in Image Processing and/or Computer Vision were sometimes introduced as technical electives. That increased the number of students familiar with image-related computation.

However, Computer Vision (and Computer Graphics) can play another important role - as one of important examples of applications of general computer science principles. Computer Vision algorithms can now be introduced into core Computer Science curriculum (data structures, algorithms, programming concepts, databases and even introduction to computer science courses). Reasons are quite obvious: (a) vision algorithms utilize various Computer Science concepts, (b) results of the algorithms are easy to understand (because of power of human visual system), (c) the use of vision (and graphics) can improve learning by increasing student motivation, and (d) currently available hardware (including PCs) can easily handle image display, storage and processing (that only became true in recent years!).

As an experiment, I have taught an undergraduate Data Structures and Algorithms (in C) course with all computer assignments related to image processing and computer vision. The course covered basic concepts related to algorithms, data structures including arrays, stacks and queues, lists, trees and graphs, and sorting algorithms. The text for the course was "Fundamentals of Data Structures in C" by Horowitz, Sahni and Anderson-Freed, W.H.Freeman Press, 1993. All programs read images from files (or std_in) and write images back to files (or std_out) with parameters specified as in-line arguments. For image display the 'xv' Unix program was utilized. We have used Sun workstations, however, software requirements include only C compiler (such as gcc) and a simple image display program. Hence, a PC-based lab (even with 486!) can handle such programs.

Below is a list of programming assignments ( for details).

Program 1: (Arrays)

reading and writing images in PGM (both) formats, implement subimage and zoom functions. implement global thresholding operation.

Program 2: (Lists)

run-length encoding (list of lists) of binary images, implement set operations: union, intersection (of binary images), and output the results. Compute total area of all objects in the image.

Program 3: (Trees)

implement quad-tree encoding of binary images, implement area computation using quad-tree data structure, implement set operations: union and intersection.

Program 4: (Sorting)

Implement median filtering utilizing several sorting algorithms and compare the performance on sample images.

Program 5: (Equivalence classes, graphs)

implement connected component analysis algorithm for binary images, allow for filtering out of small components


Back to Teaching Resources homepage