Robotics, Vision and Control

Fundamental algorithms in MATLAB: Second Edition


12: Image processing

Image processing is a computational process that transforms one or more input images into an output image. Image processing is frequently used to enhance an image for human viewing or interpretation, for example to improve contrast. Alternatively, and of more interest to robotics, it is the foundation for the process of feature extraction which will be discussed in much more detail in the next chapter.

An image is a rectangular array of picture elements (pixels) so we will use a Matlab matrix to represent an image in the workspace. This allows us to use Matlab’s powerful and efficient armoury of matrix operators and functions. The chapter covers:

  • Obtaining images from files and cameras
  • Obtaining image sequences from movie files and cameras
  • Monadic operations such as thresholding, gamma correction, normalization
  • Diadic operations such as arithmetic and chroma keying
  • Spatial operations such as smoothing, edge detection and template matching
  • Non-linear spatial operations such as rank filtering, mathematical morphology
  • Shape changing operations such as cropping, scaling, and warping



Image sources

  • Dartmouth web camera
  • Independent JPEG group
  • Opentopia list a huge number of webcams. The actual URL for the camera is listed below the image on the line marked Website:. The the root part of the URL (before the first single slash) is required for the AxisWebCamera class.
  • CAVIAR motion sequence data base

Open-source books

Other open-source software

  • Matlab Central file exchange functions in the image and video processing category
  • Peter Kovesi’s software for Computer Vision and Image processing.
  • ImageMagick cross platform (Unix, MacOS, Windows, iPhone) tools for image manipulation. Command line and GUI.
  • NetPBM portable library for image manipulation, defines its own simple file formats (PBM, PGM, PPM, PNM) and an extensive range of filters from common formats to/from P*M formats
  • OpenCV large C-based library of computer vision functions
  • VXL large C++-based library of computer vision functions