Introduction to easyVision
(in construction, February 10, 2009)
Alberto Ruiz
University of Murcia, Spain
1 Introduction
This document is a tutorial for easyVision, a collection of Haskell libraries for rapid prototyping of
simple computer vision applications. Performance is not compromised because low level expensive
computations are internally implemented by optimized libraries (IPP, HOpenGL, BLAS/LAPACK,
etc.). Once appropriate geometric primitives have been extracted by the image processing wrappers
we take advantage of Haskell’s expressive power to define interesting computations using elegant
functional constructions.
This project is extremely preliminary, incomplete, and under active development, so I do not rec-
ommend it for serious applications. More advanced programming techniques should be used in some
places, and many of the example programs in the distribution are quick experiments and proofs of
concept that should be rewritten in a better coding style. In any case, I successfully use this system for
my everyday work; I find it particularly useful for experimenting with new ideas, preparing teaching
demos, and even for developing more complex research prototypes.
The library contains four principal sections: ImagProc for image processing and extraction of
medium level geometric primitives, mainly supported by wrappers to IPP; Vision, for visual ge-
ometry algorithms, based on hmatrix; Classifier, for basic pattern recognition and learning ma-
chines, also based on hmatrix; and EasyVision, for visualization and user interface, supported by
HOpenGL. Full information about the available functions can be found in the online haddock docu-
mentation.
We are interested in a purely functional approach to image processing and computer vision. There
is nothing special about images, they are like any other Haskell data type, and we work with them
using appropriate functions supplied by the library. We can process potentially infinite lists of images
taken from video sources, and save the results for further ana