All projects
MATLAB

License Plate Recognizer

A MATLAB image-processing pipeline that reads European license plates, identifies the issuing country from the EU strip, and stays robust to Gaussian noise — classic computer vision, no learned model.

View on GitHub
Computer Vision MATLAB Image Processing

Project Documentation

Open in new tab

License Plate Recognizer

Final project for the Industrial Vision course at the Universitat de les Illes Balears. A MATLAB pipeline that reads European license plates from images, identifies the issuing country from the EU strip, and reports the detected plates together with per-country totals — working both on clean images and on images corrupted with Gaussian noise.

About

The recognizer is built entirely around classic image-processing operators rather than a learned model, so it is fully deterministic. The pipeline runs in stages:

  • Preprocessing — Gaussian noise is removed with a 3×3 mean filter using symmetric padding.
  • Segmentation — the RGB image is thresholded into a white mask (the plate background) and a blue mask (the EU country strip).
  • Region extraction — the largest white connected component gives the plate region and the largest blue one the country strip; the plate crop is inverted so the dark characters can be analysed.
  • Country identification — the blue-strip components are filtered by area (to drop the stars) and eccentricity (to drop the thin bands); the number of remaining letters and the Euler number of the first one classify the plate as D, PL or GB.
  • Plate reading — the plate components are filtered by area (the first three are letters, the last four digits) and each character is identified from its Euler number, telling 1 and 7 apart by their extent.
  • Output — the intermediate masks and crops are saved per image, and every detected code is collected into a summary with per-country totals.

Executing the project

Requires MATLAB with the Image Processing Toolbox.

  1. Clone the repository and open its folder in MATLAB so the relative paths resolve.
  2. Run main.m from the repository root.

The detected codes are printed to the console, the intermediate images are saved under output/, and a summary of all plates and per-country totals is written to output/plates.txt. A detailed write-up of the method, parameter choices and results is available in the project report.