The the code used for the boundary extraction algorithms is available in the ipp image processing package developed by Randal Nelson at the University of Rochester. The package is not, and was not designed to be a complete collection of low-level operators, though it contains a number of such operators. Rather, the principal contents are higher level grouping routines for finding line segments and curve fragments, groups thereof and derivative features, which we have used in object recognition programs. The system consists of a set of libraries, written in C, which contain routines for all the grouping routines. There are also a number of utility programs that call many of the basic routines. The system should be runable standalone under standard UNIX and Linux systems. The code does need libraries (libtiff, libpgm etc. for the image formats. The are generally part of the standard install of Linux, but you may need to modify the makefiles to point at the correct location in your system. Because it is standalone however, it is not small. There are probably in excess of 50,000 lines of C code in the system. Not all of this is used for the curve extraction of course; if you want to trim out what you want, feel welcome. If you incorporate the code into other products, please preserve the copyright notice at the head of each file.
The basic representation for images used in this package is an in-core format which works well for robot vision applications where most images are 1K by 1K or less, given current workstation memories and speeds. It is not intended for use with very large images, such as those encountered in some aerial photo-interpretation tasks. The in-core format is quite basic, and not tied to any particular file format. To use images from various file formats, and input and output routines are required to load and store the images. Routines for loading and storing images in tiff, pgm, png, jpg, iff (Rochester) and clv (Maryland) formats are included with the package (input_tiff_image, output_tiff_image, etc.). For other formats, the user must write corresponding routines.
The system also contains hooks for doing graphical and mouse IO. The makefile contains a structure for easily substituting different versions of this library. The default make uses a set of dummy routines. There is also a set of XWindows routines using the X11 library. The "Readme" documentation describes how to configure the system to use X if it is available on your system.
More information on the structure, contents, and installation of the system is available in the top-level Readme file.
The ipp image package consists of a set of directories containing code, makefiles, information etc. These directories are archived into ipp.tar.gz. There is also a small amount of code in a separate file misc.tar.gz. This produces a separate library in a manner analogous to the ipp files. To obtain the package, either shift-click on the links at the bottom of this page, or ftp to ftp.cs.rochester.edu, and copy pub/u/nelson/ipp.tar.gz and pub/u/nelson/misc.tar.gz to your system. Put each compressed archive in some appropriate directory, decompress (using gunzip) and extract the archive. This will result in a directory called ipp, and a directory called misc cd to these directories and follow the instructions in the Readme files there to compile the code, assemble the libraries, and link up a few executables. (Basically, you should just have to type "make" at the top level). This software is developmental, and may contain errors and inefficiencies. No claims are made regarding the suitability of the algorithms contained herein for any purpose.
Comments, bug reports to
Randal C. Nelson,
Department of Computer Science,
Univeristy of Rochester,
Rochester, NY 14627
Back to boundaries page
Back to Randal Nelson's home page