Computer Vision

Computer and Machine Vision
I have recent experience (including as a commercial OpenCV programmer / contractor / consultant) in various areas of machine vision such as:

Data capture from files (still or video), webcams, IP cameras, etc
Object detection
Object recognition
Scene analysis
Face detection
Morphing / deskewing / normalising scene objects
Thresholding, edge detection, template matching, etc

OpenCV
Much of my Computer Vision work is done using the OpenCV library. In addition to the above “functional” areas, I can provide specific help in the following features of the OpenCV library:

  • OpenCV C and C++ interfaces
  • Image capture, smoothing, etc
  • Thresholding
  • Edge detection (optimisation of Canny parameters)
  • Colour space conversation
  • Contour finding – and subsequent management and processing of contours
  • Face detection
  • Machine Learning framework

Examples of my work
My work is for clients ranging from individual hobbyists, through start-up companies, to large national organisations. Much of the work is commercially sensitive, a matter I take very seriously, and in some cases the clients are applying for patents on some aspects of the work I have undertaken. But in broad terms, I have worked recently on:

  • Two projects processing images of very small components (micrometer scale, and in one case down to near-atomic scale).
  • A system (patents pending) dealing with very complex, noisy and diverse images such as would be found in a high-street environment.
  • A program processing images from an underwater (marine) environment, watching for specific events.
  • Some work with the open source Tesseract OCR tool which needs lots of pre and post-processing work to get it up to a usable standard for ‘real world’ images.
  • A system analysing images of buildings from aerial photography (such as Google Earth images).
  • Preparatory work on analysing images from software programs to automate testing, including Optical Character Recognition and image detection.
  • Preparatory work on analysing images from a production line to automate quality control inspection.

In addition to the computer vision work, I am a general “all round” programmer, used to interfacing with other parts of wider systems using, for example, HTTP or other comms, XML, JSON. I have written both clients and servers (and used tools such as cURL to help speed this work, where necessary). I have my own development environment for Windows, Linux and Mac OS X development, and can also develop for Android (including Google Glass) and Raspberry Pi.