Blog - APNR — automatyczne rozpoznawanie tablic z wideo
Jak działa pipeline APNR (ANPR): lokalizacja tablicy, matched filter, OCR szablonowy i fuzja wyników w czasie.
- Autor
- 2code
- Opublikowano
- Tagi
- APNR
- ANPR
- OpenCV
- CV
APNR (Automatic Plate Number Recognition, często też ANPR) to klasyczny problem wizji: z sekwencji wideo wyciągnąć czytelny numer rejestracyjny. Poniżej rozkład pipeline’u bliski praktycznej implementacji Qt + OpenCV (lokalizacja → OCR → śledzenie w czasie).
Po co w ogóle „wideo”, a nie jedno zdjęcie?
Pojedyncza klatka bywa rozmazana, pod kątem albo z refleksem. W sekwencji możemy:
- znaleźć kandydata tablicy na wielu klatkach,
- rozpoznać znaki z różną pewnością,
- scalić wyniki w czasie (najlepszy znak wygrywa).
To właśnie robi warstwa detectedframe / detectedplate: match po położeniu i numerze klatki, potem aktualizacja znaków według score.
Pipeline
…
Lokalizacja tablicy
Typowy tor:
- Sobel (apertura, rząd , próg) — podkreśla pionowe/poziome krawędzie znaków,
- Matched filter dopasowany do geometrii tablicy (jasny środek, ciemniejsze pasy),
- selekcja prostokątów po polu powierzchni i proporcjach .
Kernel matched filtera można zapisać jako profil wiersza z dwoma „bokami” Gaussa i środkowym garbem:
Po korelacji z obrazem widać pasy o proporcjach zbliżonych do tablicy PL.
OCR: nie „deep learning”, tylko szablony
W tym podejściu znaki porównuje się z bitmapami wzorców (0–9, A–Z) przez dopasowanie obrazu. Ważny detal polskich tablic: podzbiory alfabetu:
- znaki powiatu (często 2–3 litery) — inny zestaw (m.in. B, D, I, O, Z),
- znaki wyróżniające pojazdu — cyfry + litery bez mylących wariantów.
Dla każdego znaku trzymamy parę — znak i score. Pewność całej tablicy:
Fuzja w czasie
Gdy ta sama tablica wraca na kolejnych klatkach (przecięcie ROI + małe):
- aktualizujemy bounding box,
- przy konflikcie znaków bierzemy wariant z wyższym ,
- pilnujemy „dzielnika” (spacja po kodzie powiatu), typowo po 2. lub 3. znaku.
Dzięki temu chwilowy błąd OCR na jednej klatce nie psuje całego odczytu.
Co z tego wynika w produkcji?
- APNR ≠ samo OCR — lokalizacja i tracking są trudniejsze niż rozpoznanie znaku.
- Domena PL ma reguły — powiaty, długość 7–8 znaków, ograniczenia alfabetu mocno podnoszą precision.
- Czas jest feature’em — fuzja między klatkami to najtańszy „ensemble”.