Argon Design has broad experience in multimedia and image processing for consumer products, broadcast, scientific and security applications.
With PhD level academic expertise in image processing and mathematics, we can develop new algorithms as well as create solutions using a combination of standard image processing techniques. We combine this with practical knowledge of the best implementation approaches to create world-class image processing systems.
Click tab for more details ...
Efficient implementations
Our work usually starts with developing and prototyping an algorithm using MATLAB or Python and OpenCV.
We can develop algorithms that run in software on a PC, that run on a GPU, that use a many-core processor, that are implemented in hardware in FPGA or silicon or that use a combination of these approaches.
We are careful to tune our design to the expected implementation – for instance in silicon, understanding how much area memory and processing operations require or for a GPU looking at how parallelism can be exploited.
We are experts in writing optimised low level routines to get the most from the hardware and in developing scalable solutions that can scale to very high volumes of processing.
Camera sensor processing
We have experience in all the steps to take output from a CMOS or CCD image sensor producing RAW Bayer or DNG data to produce well composed images for both stills and video. This covers areas such as:
• exposure control
• defective pixel masking
• adaptive Bayer/DNG to RGB conversion
• white balance and colour correction
• sharpening
• dynamic range correction
• geometric distortion compensation
• autofocus
• enhanced depth of field algorithms
• image stabilisation
Image analysis
At its simplest, information can be extracted from metadata stored in the container format - for instance the bit-rate of a video or the camera shutter-speed for a still image. In some cases this is all the information that is required.
Images can be analysed to measure dynamic range, colour content, level of visual interest, or similarity to other images as well as attributes such as blurriness, blockiness, or noisiness.
A combination of these measures is used for instance in the Argon Design qualmon demonstration to measure the visual quality of streamed videos.

Image shows the output from canny edge detector used as part of an algorithm for measurement of blurriness
Image enhancement
We can apply a range of techniques to improve the quality of images either for human viewing or as a pre-processing step for computer vision tasks. For instance:
• Dynamic range correction
• Colour correction
• Defect removal
• Noise reduction
• Low light algorithms
• Filtering and sharpening

Image shows Dynamic Range Correction before (left) and after (right)
Object recognition
Problems often revolve around finding whether a certain kind of object is present in an image and if located, doing some further identification or analysis – for instance searching for faces or cars in an image.
Many powerful techniques have been developed to detect, recognise and compare objects. The general approach is to extract features and then classify them using machine learning techniques. A good example is object recognition using the Viola-Jones algorithm.
This is most frequently used for face detection. Once detected, faces can be ‘recognised’ by matching them against a set of labelled images enrolled in the system.

Image shows face detection using the Viola-Jones algorithm
There is also the more general machine vision problem of segmenting an image into constituent objects and identifying them. Several techniques have been developed for object understanding using shape descriptors and structural analysis.
Motion analysis and object tracking
Motion estimation is a common technique used in video coding, where blocks in the current frame are searched for in previous frames and then encoded with reference to the previous data, exploiting the temporal redundancy of video.
Motion analysis can be used to track objects once they have been detected. As well as providing information on the path that the object takes, this can also be used to increase detection reliability and reduce processing load. Tracking is required in such diverse areas as security & surveillance, augmented reality, traffic management, medical imaging and video editing.
Motion analysis can also be used in more general ways – for instance to segment an image into separate foreground and background parts. A common approach is to identify good features to track in an image and use these as markers which are followed from frame to frame.

Image shows motion analysis being used for object tracking
Video Encoding and decoding
Many systems require the encoding or decoding of still images or video. We have implemented several generations of video codecs in both software and hardware for consumer applications and are thoroughly familiar with the standards for JPEG, MPEG-2, and H.264 / MPEG-4 AVC and VP8.
3D reconstruction
This is the process of capturing the shape and appearance of real objects from stereo images, multiple 2D views, panned motion or lighting and shadow to create a 3D model.
This can be used for medical imaging such as CT, MRI and ultrasound scanning; as well as for creating augmented reality for use in areas such as sports broadcasting, training simulators and museum exhibits. It is also increasingly becoming an important technique in object recognition.
Image synthesis
Image synthesis is the process of generating novel images such as 3 dimensional views of objects, or synthetic textures to replace areas of an image containing defects.
For example, if part of a video bit stream has been corrupted, image synthesis could be used to hide the lost data by replacing the missing parts with neutral content that matches its surroundings.
Combining image synthesis with analysis opens up even more possibilities; one practical example comes from a video conferencing application. The problem occurs when one side of the call consists of several people. The camera is set to a wide angle to capture all the occupants of the room, but this means that each individual’s face is hard to see. We can improve the user’s experience by combining object recognition and image synthesis. First the Viola-Jones algorithm is used to identify faces. Second the face locations are used to drive a segmentation algorithm. Finally, the segmented faces can be enlarged and combined back into the original image.

Image shows image synthesis to enlarge faces for video conferencing




