products

the Jet Engine

Jet Engine - Key Stages in Recognition


1. The video capture modules frame-grab 50 fields per second from the ANPR camera. (This may be throttled down if desired).

2. Each frame is image processed using basic techniques and then analysed for changes in the regular image. e.g. a tarmac road surface produces a speckled image when partially solarised, as a vehicle approaches regular shapes, plain areas and sharp edges suddenly appear.

This is the VMD alogorithmn - the Engine knows a vehicle is present and the recognition process starts.

Vehicle Detected against rough road surface
Jet Engine VMD

3. The engine plate-finder module employs two methods of detecting a number plate:
The first involves processing each video frame looking for sharp edges / corners which could be extruded to form a plate-sized rectangle. (Several sizes / aspect ratios of plates are searched for including basic European plate sizes, square plates (as found on say 4x4 vehicles and certain trucks), vertical plates containing three rows of characters (as found on certain military vehicles) and US plates which are midway between oblong and square.

The second technique is employed when a plate cannot be found - the software then switches to looking for plain characters (no rectangular or square background). Yes - this will read the odd "VOLVO" as a plate - but it is only employed in conjunction with the first method.

The plate finder then outputs 16 candidates to be further processed.
Rectangular shapes detected and traced
Jet Engine VMD

4. For each candidate, the potential plate patch is de-skewed and rotated to become horizontal in order to look for characters.

The straightened plate patch is produced.

A histogram of greyscale values across the image is produced in order to image enhance it to compensate for lighter / darker areas of a plate candidate - or a plate that is dirty in parts. This enables the patch area to be later solarised.
Graph showing light / dark colour concentrations in potential plate palette

The plate patch is then further analysed both vertically and horizontally and histograms are produced which show images changes along lines from light to dark - and then from dark to light. This then reveals if characters are present - and where they are most likely to be delineated.

Graphs showing leading / trailing edges of potential characters

Using these values from the graphs, the plate's character positions are marked and the image is then fully solarised into black and white.

Solarised Image

Having split up the plate into various solarised characters, the characters are then cut from the image and copied into buffers for character recognition to be performed.


Various techniques are employed here starting with symmetry checking - both horizontal and vertical. This is a simple way to distinguish say an 'H' from an 'A' .
Image matching techniques are employed to further cut down the choices and arrive at a suggested character. Each character option is given a confidence score - this is acually a score of how like the character is to a perfect copy.

We have simplified the process somewhat as an illustration - we still have a few proprietary techniques to improve accuracy (!) - but here is the CitySync Plate Detection Monitor as we use it....
Jet Detection in action

This gives us the likely raw characters of a first potential plate - but we might see more images of this plate as the vehicle approaches - so a 'trace' is started for this candidate. When another image is processed, then if the candidate is similar (all but say two characters match), then the trace continues and a favourite plate result starts to emerge. This process is repeated until either the time parameter (set by the user) is reached (e.g. 1 second) - or a completely different plate candidate is produced - meaning that probably a diffferent vehicle has approached.

Typical Plate Trace
L6D2FN8
L6D2FNB
L6O2FN8
L6O2FNB
L6O2FNB
L6O2FNB
KE03ABC

The last plate is obviously from a different vehicle - and so the previous six reads are used to modify our current favourite - which is now L6O2FNB. This is still wrong - the second character has been read as an "O" and it should be a "0" (zero)
At this point the Syntax Checking is invoked

The powerful Syntax Checking routines allow the user to turn systax checking on - and set "Auto-Correction" On.

Many countries' (or States') can be invoked simultaneously - and the Syntax Checker attempts to match the plate to the countries (rules) selected in order or preference. In our case just UK has been set - and so the "O" is corrected to a "0" - and the final plate is passed to the application software to deal with:

L606FNB

A "Discard Invalid Plates" option may be invoked to ignore all plates which do not conform to the selected rules (Dangerous!)

How Multi-Nationality Syntax works:

If our raw plate was say: KE51ABC - - and our countries set were: UK - and - Bulgaria

Then 3 candidates would be produced:

KE51ABC - Current UK format - no corrections - zero correction points
KE5148C - Bulgarian Syntax - 2 corrections - 4 correction points
KES148C - Old UK format - 3 corrections - 6 correction points

2 points are given for the average corrrection - 1 point is given for a "O" to "0" - or a "I" to "1" - as these are the same charcters as far as the plate font is concerned.



The Jet Engine is fully parameter driven and many more settings may be specified by the application
program.

This very powerful combination of recognition and filtering techniques produce what we believe to be
the most accurate ANPR system in the world.