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