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.