Computer Vision

My main area of expertise is in computer vision, using low-level libraries such as OpenCV, but also with deep-learning models such as MobileNet, ResNet and Yolo. I have recent, in depth experience in various areas of this field, including:

Low-level techniques, e.g:

  • Data capture from files (still or video), webcams, IP cameras, etc – e.g. using V4L devices and proprietary device drivers.
  • Image pre-processing, colour space conversion, image normalisation, thresholding, edge detection, matrix-based operations, corner-point detection, morphing, deskewing, template matching.
  • Object detection using SURF, SIFT, ORB, etc.

High-level and deep-learning techniques:

  • Scene analysis
  • Object detection
  • Object recognition
  • Face detection

Examples of my work

My work is for clients ranging from 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.
  • A system analysing images of buildings from aerial photography (such as Google Earth images).

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, RESTful interfaces, XML, JSON. I have written both clients and servers (and used tools such as cURL to help speed this work, where necessary). I have produced working ‘executable’ programs for platforms from cloud servers, desktop computer, edge devices, drones and various in-store devices.