Codes for Teaching
Image Analysis Libraries
Some imaging libraries that could be useful for your projects.
OpenCV - comprehensive library of image processing/analysis algorithms based on C programming language. It supports a wide spectrum of image-types for loading/saving, and provides visualization/GUI capabilities. This publicly supported open-source library is highly-optimized. Experience with this library looks good on your resume, but be ready for a steep learning curve if you did not use it before. Recommended book: G.Bradski and A. Kaehler, "Learning OpenCV", 2008 .
ADT - imaging library (loading, access, saving, plus many processing and analysis methods) from Cornell/Xerox-Park to develop your applications from scratch. It is based mostly on C and some C++. File NTadt.pdf provides well-written instructions for using this library in "Windows". The library comes with header files and precompiled dll files. The library can load and save PGM/PPM images but lacks GUI (with some "small" efforts, it is possible to use "cs1037utils" below).
EZi ( easy imaging ) library - is a small collection of C++ code to help you do basic image processing, drawing, and algebra. EZi strives to allow intuitive MATLAB-like syntax for manipulating and drawing the 2D arrays, but some familiarity with C++ templates is required. This library trades-off a bit of efficiency in favor of simplicity and "interpretiveness". The code comes in two parts:
cs1037utils was developed for a first-year CS course, so it is easy to learn and use. You can quickly create programs with simple interactive interfaces (user controls via keyboard, mouse-clicks, checkboxes, buttons,... can also draw shapes and bitmaps). The CS1037 labs have many examples using cs1037utils.
CS1037 source code (32-bit Windows, Visual C++ 2003 or later)
EZi library is built around a basic 2D array class ( Table2D ) providing flexible conversion methods. The library implements only the most common linear algebra operators (matrix operations, convolution, NCC, ... see Math2D.h) and several standard widely-used kernels (e.g. Gaussian, Laplacian, Sobol, LoG). EZi provides simple methods to visualize 2D arrays as images in a window (see Image2D.h). Arrays can also be saved/loaded from image files (only BMP is supported, for now). Color images can be declared as objects of class Table2D , where type RGB is defined in Image2D.h. This file also gives many basic code samples.
EZi source code (templated arrays and operations)
A note on .template files: you do not need to include them into your Visual Studio project; the files just need to be sitting in the project's source directory.
All EZi code comes in {.h,.cpp} files that you can drop into a Visual C++ project. You can add this main.cpp to compile a complete Hello-World program. Two more advanced examples of complete imaging projects using EZi library can be found here: live-wire and graph-cuts . (Note that the graph-cuts project inlcudes class Graph2D which is a very basic "wrapper" around standard BK max-flow library freely available for research purposes. The posted graph cut project includes a slightly modified version of this library.)