iPOX was an image processing system initiated at the Department
of Earth Sciences, University of Oxford in the early 1990s, primarily to restore
and enhance GLORIA data. (GLORIA is a side-scan sonar system that produces
images of the seafloor.) iPOX, however, was not limited to the
processing of GLORIA data. iPOX was conceived as a state of the
art, general purpose system for the processing of single band imagery, and which
could be extended to embrace the special needs of sidescan sonar data processing.
iPOX design features included:
Modular design, each independent module performing a single limited task.
Modules to read and write image data in other file formats, including
WHIPS, GMT grd, USGS-mips, PGM, PBM, AVS field and PostScript.
Ability to handle images in any of six data types; 8-bit byte,
16-bit short integer, 32-bit integer, float, double, and complex.
Incorporation of the object-oriented programming techniques of data
abstraction and polymorphism. These enable common ANSI C code to be used
for all of the six image data types.
Portable between UNIX systems; modules coded in ANSI C.
External data representation (XDR) used to transfer images between
computers with different architectures. XDR also is an extremely useful
data representation for images that are to be archived.
Algorithms configured to use a "line in, line out" paradigm.
This minimises memory usage and so enables large images to be processed.
Modules driven via command line options.
Each module reads an image from standard input and writes to
standard output. This allows modules to be
"pipelined" and eliminates the need to store intermediate images
Modules can be driven from a shell script (command procedure).
X Windows pipeline editor tool (never implemented) can create and
execute this shell script interactively.
X Windows image viewer tool (never implemented) can view the image
exiting from the pipeline.
Binary image data prefaced by an ASCII text header consisting of key-value
pairs. This allows the image header to be viewed using standard text
reading utilities such as more.
iPOX contained 36 modules and consisted of over 14,000 lines
of ANSI C code.
Deshade a sidescan sonar image.
Remove/apply bell (MU) transform from a sidescan sonar image.
Read an image in another file format (WHIPS, GMT grd, USGS-mips,
AVS field, PGM ASCII, PGM raw, PBM ASCII, PBM raw or iPOX).
Write an image in another file format (WHIPS, GMT grd, USGS-mips,
AVS field, PGM ASCII, PGM raw, iPOX or raw).
Calculate image statistics.
Convert image values to text (suitable for inputting into xmgr/xvgr).
Convert an image to PostScript.
Convert PostScript to a PBM raw image (uses Ghostscript).
Plot a PBM raw image onto a Versatec electrostatic plotter.
Change image data type ("byte", "short",
"int", "float", "double" or "complex").
Change image data representation ("native" or "xdr").
Add a History record to an image header.
Trim the History in an image header.
Smooth an image.
Median filter an image.
Apply a convolution filter to an image.
Cross-correlate an image with a template image.
Laplacian filter an image (small filters have unbalanced weights).
Make an image file containing a 3 by 3 Laplacian filter kernel.
Reduce the size of an image by sampling.
Reduce the size of an image by averaging.
Magnify the size of an image.
Extract a sub-image from an image.
Rotate an image.
Flip an image horizontally.
Fourier transform an image (uses a mixed radix FFT).