FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMÂNT IOAN [610669]

FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMÂNT “IOAN

SLAVICI” TIMIȘOARA

UNIVERSITATEA “IOAN SLAVICI” TIMIȘOARA

FACULTATEA DE INGINERIE

DOMENIUL CALCULATOARE ȘI TEHNOLOGIA INFORMAȚIEI

FORMA DE ÎNVĂȚĂMÂNT – ZI

Detec
ț
ia nu merelor de înmatriculare auto

COORDONATOR ȘTIINȚIFIC

prof./conf./ș.l. dr. Ioan Rares Stanciu ABSOLVENT

Ș
tefan Cornel Vasile

2


Cuprins

1 Introducere…………………………………………………………………………………..3

1.1 Provocările societă
ț
ii actuale…………………………………………………………….3

2 Probleme specifice în asigurarea securită
ț
ii…………………………………………….……5

2.1 Sisteme video………………………………………………………………………….…5

2.2 Camere video………………………………………………………………………….….5

2.3 Camcorder………………………………………………………………………………..6

2.4 Camere USB………………………………………………………………………………7

2.5 Camere IP……………………………………………………………………………..…7

2.6 Motivatia
ș
i Scopul Proiectului…………………………………………………………10

2.7 Prelucrarea Imaginilor………………………………………………………………….12

3 Dezvoltarea Proiectului…………………………………………………………………….13

3.1 Raspberry Pi 4 Model B 4 GB RAM…………………………………………………..13

3.2 Arhitectura ARM……………………………………………………………………….15

3.3 Sistemul de Operare Raspberry Pi OS (Raspbian)………………………………………………….16

3.4 Raspberry Pi Os…………………………………………………………………………17

4 Configurarea Raspberry Pi…………………………………………………………………19

4.1 Comunicarea cu Raspberry Pi………………………………………………………….19

4.2 VNC……………………………………………………………………………………19

4.3 Interfa
ț
a Grafica sau GUI……………………………..………………………………..21

5 Programarea Plăcii Raspberry Pi…………………………………………………………..24

5.1 Python………………………………………………………………………………….24

5.2 Modulul de dectie
ș
i recunoa
ș
tere a plăcu
ț
elor de înmatriculare………………………26

5.3 Principii. În
ț
elegere a
ș
i testarea algoritmilor openALPR …… ………………………..29

6 Implementare……………………………………………………………………………….32

6.1 Camera…………………………………………………………………………………32

6.2 Program…………………………………………………………………………………33

7 Rezultate Experimentale……………………………………………………………………35

7.1 Scenariul 1………………………………………………………………………………35

7.2 Scenariul 2………………………………………………………………………………36

7.3 Scenariul 3………………………………………………………………………………37

7.4 Scenariul 4………………………………………………………………………………38

7.5 Scenariul 5………………………………………………………………………………39

8 Concluzii. Îmbunătă
ț
iri
ș
i Dezvoltări ulterioare………………… ………………………….41

Bibliografie……………………………………………………………………………………42

3

Capitolul 1.

Introducere

1.1 Provocările societă
ț
ii actuale

De-a
lungul
vremurilor
via
ț
a
a
evoluat
spre
ceea
ce
există
azi.
La
începuturi,
existau
primejdii

de
toate
felurile
de
la
animale
sălbatice,
la
războaie
ș
i
tâlhării
de
toate
felurile.
Dacă
acum

câteva
sute
de
ani
aceste
fenomene
erau
destul
de
dese,
cu
timpul,
în
societate
au
fost
impuse

reguli
dar
ș
i
pedepse
pentru
cei
care
nu
le
respectă.
Astfel,
gradul
de
fenomene
antisociale
a

scăzut.
De
exemplu,
în
zilele
noastre
se
poate
călători
în
siguran
ț
ă
între
localită
ț
i.
Cu
toate

acestea, ele nu au dispărut, lumea în care trăim fiind în continuare una periculoasă.

Este
important
de
men
ț
ionat
faptul

odată
cu
progresele
tehnologice
modurile
infrac
ț
ionale

s-au
diversifice
ș
i
ele.
Astfel,
apari
ț
ia
armelor
de
foc
a
făcut
ca
multe
tâlhării

fie
făcute
sub

amenin
ț
area
acestora
în
locul
săbiilor
ș
i
lăncilor.
Una
dintre
categoriile
aparte
de
astfel
de

fenomene
a
fost
jefuirea
băncilor.
De
ș
i
mai
rar
totu
ș
i
aceste
fenomene
există
în
continuare.

Totu
ș
i, acestea au creat pr emisele apari
ț
iei sistemelor de supraveg here.

Au
apărut
ș
i
alte
tipuri
de
fenomene
antisociale.
Între
acestea,
unul
dintre
cele
mai
grave
este

terorismul.
De
cele
mai
multe
ori
aceste
ac
ț
iuni
nu
vizează
recompense
financiare,
dar

consecin
ț
ele
acestora
sunt
dramatice.
Ele
duc
la
pierderi
de
vie
ț
i
omene
ș
ti
(de
cele
mai
multe

ori
nevinovate)
sau
lasă
urme
permanente
(picioare
sau
bra
ț
e
lipsă,
etc.).
Sunt
manifestate
sub

forma de atacuri armate, bombe artizanale sau ma
ș
ini capcană cu bombă, etc.

Ac
ț
iunile
prezentate
mai
sus
au
făcut
impus
sistemele
de
supraveghere
în
clădirile
oficiale.

Din
păcate
fenomenul
terorist
nu
pare

dea
semne
de
oprire.
Din
contră,
metodele
sunt
din

ce
în
ce
mai
sofisticate
(terori
ș
tii
folosesc
mijloace
tehnice
de
ultimă
oră)
consecin
ț
ele

acestora
fiind
din
ce
în
ce
mai
brutale.
Între
fenomenele
teroriste
se
pot
enumera
atentatele
la

clădirile
World
Trade
Center
din
New
York
din
1993
[1]
ș
i
din
2001
[2],
atentatele
din
Paris

[3]
dar
ș
i
numeroase
alte
locuri
publice,
scopul
fiind
pierderea
de
cât
mai
multe
vie
ț
i

omene
ș
ti.
A
ș
a
cum
se
men
ț
ionează
în
[1],
primul
atac
al
World
Trade
Center
a
fost
un
camion

cu
bombă.
A
ș
a
cum
se
arată
în
[1],
de
ș
i
atentatul
nu
a
reu
ș
it
distrugerea
clădirilor,
totu
ș
i
ș
ase

oameni
ș
i-au pierdut via
ț
a
ș
i peste o mie au suferit răni.

4

Dacă
în
atentatul
din
1993
clădirile
World
Trade
Center
au
rămas
în
picioare,
nu
acela
ș
i
lucru

s-a
petrecut
în
cel
din
2001.
Modul
în
care
a
fost
realizat
atentatul
este
unul
literalmente
nou

[2].
Astfel
terori
ș
tii
au
deturnat
avioane
pe
care
le-au
îndreptat
în
direc
ț
ia
clădirilor
World

Trade
Center.
În
urma
impactului
ș
i
a
faptului

avioanele
aveau
o
cantitate
semnificativă
de

carburant,
focul
izbucnit
a
ș
ubrezit
structura
de
rezisten
ț
ă
a
clădirilor.
În
cele
din
urmă
acestea

s-au
prăbu
ș
it.
Împreună
cu
clădirile
World
Trade
Center,
în
acela
ș
i
mod
a
fost
lovit
ș
i

Pentagonul.
A
ș
a
cum
se
arată
în
[2],
atentatul
s-a
soldat
cu
2977
pierderi
de
vie
ț
i
omene
ș
ti
ș
i

cu peste 25000 de răni
ț
i la clădirile World Trade Center
ș
i la Pentagon.

În
Paris
au
avut
loc
mai
multe
atacuri
teroriste
coordonate
[3].
A
ș
a
cum
se
men
ț
ionează
în
[3]

terori
ș
tii
au
lovit
Stade
de
France
din
Saint
Denis
în
timpul
unui
meci
de
fotbal.
Ace
ș
tia
au

executat
un
atac
ș
i
la
sala
Bataclan
din
Paris
în
timpul
unui
concert
al
Eagles
of
Death
Metal.

Conform
[3],
atacurile
s-au
soldat
cu
moartea
a
130
de
oameni
(incluzând
90
în
sala
Bataclan)

ș
i rănirea a 413 (din care aproape 100 cu răni serioase).

Cele
de
mai
sus
arată
un
fenomen
terorist
în
cre
ș
tere.
Societă
ț
ile
democratice
deschise
sunt

dificil
de
protejat.
Dacă
la
începuturi
cerin
ț
a
necesare
sistemelor
video
era
doar
înregistrarea

ș
i păstrarea informa
ț
iei video, cu timpul acestea s-au diversificat.

5

Capitolul 2

Probleme specifice în asigurarea securită
ț
ii

2.1 Sisteme video

A
ș
a
cum
a
fost
prezenta t
în
primul
capitol,
asigurarea
securită
ț
ii
este
una
dintre
provocările

vie
ț
ii
moderne.
Societatea
a
răspuns
acestor
provocări
prin
sisteme
de
supraveghere
video
din

ce în ce mai performante. Un astfel de sistem video se poate vedea în figura 2.1.

Fig. 2.1: Structura de bază a unui sistem video

A
ș
a
cum
se
poate
vedea
în
figura
2.1,
cea
mai
simplă
structură
de
sistem
video
con
ț
ine
o
parte

care
captează
imagini
ale
scenei
de
supravegheat
(camera)
ș
i
o
parte
care
stochează
aceste

imagini.
La
începuturi,
sistemele
video
erau
analogice.
Camera
oferea
un
semnal
compatibil

TV
analogic
cu
semnale
de
stingere
pe
linii
ș
i
cadre.
Semnalul
era
adus
la
sistemul
de

înregistrare
prin
cabluri
coaxiale
(pentru
protec
ț
ia
semnalului
împotriva
zgomotului

electromagnetic) care stoca imaginile pe casetă video.

Dacă
la
început,
problemele
au
fost
legate
de
ob
ț
inerea
de
imagini
ș
i
stocare
acestora
(în

vederea
unui
redării
lor
în
caz
de
nevoie),
lucrurile
s-au
mai
schimbat
cu
trecerea
anilor.

Astfel
au
apărut
sistemele
cu
camere
sensibile
la
luminozitate
redusă.
Acestea
pot
ob
ț
ine

imagini pe timp de noapte, când lumina este dată doar de iluminatul stradal.

6

2.2 Camere Video

Una
dintre
cele
mai
importante
componente
ale
unui
sistem
video
este
camera.

Acestea
o
folosesc
în
vederea
obținerii
informației
de
reacție.
Camera
sistemului
poate
fi

analogică
sau
numerică.
În
cazul
în
care
camera
este
analogică,
între
calculator
și
aceasta
este

intercalat
un
convertor
analog
numeric
de
imagine
(în
literatura
de
specialitate
acest
modul
se

numește
"frame-grabber").
În
cazul
unei
camere
numerice,
informația
este
transmisă
în
format

numeric.

Camerele
utilizate
pot
avea
diverse
rezoluții.
Cu
cât
aceasta
este
mai
mare
cu
atât

imaginea
acesteia
este
mai
bogată
în
informații.
Dar,
procesarea
unei
astfel
de
imagini

necesită
o
cantitate
mai
mare
de
calcule.
Pe
de
altă
parte,
o
imagine
cu
o
rezoluție
modestă

necesită mai puține calcule.

Una
dintre
cele
mai
cunoscute
camere
este
camera
analogica.
Apărută
la
începuturi
în

format
alb-negru
iar
mai
apoi
color,
aceasta
putea
fi
în
tehnologie
Vidicon
sau
CCD.
În
zilele

noastre mai există camere care oferă la ieșire informație (semnal) analogic.

În
prezent
majoritatea
camerelor
aflate
pe
piață
în
zilele
noastre
oferă
un
semnal

numeric
într-unul
din
standardele
cunoscute
(HDMI,
USB,
TCP/IP,
etc.).
În
acest
paragraf
vor

fi descrise cele mai populate tipuri de camere.

2.3 Camcorderul

Camcorderele
au
fost
camere
destinate
publicului
larg
(consumer)
și
ca
atare
au
fost

oferite
și
la
prețuri
accesibile.
Cu
performanțe
bune,
volum
și
greutate
mici,
acestea
foloseau

la
începuturi
drept
suport
pentru
înregistrare
banda
magnetică
(înregistrarea
s-a
făcut
atât
în

format
analogic
cât
și
în
format
digital).
Cu
timpul
însă
fabricanții
au
înlocuit
banda

magnetică
cu
minidiscuri
sau
chiar
cu
memorie
flash.
Un
exemplu
de
astfel
de
camcorder
se

poate vedea în figura 2.2.

Camerele
video
destinate
consumatorilor
profesionisti
au
etalat
caracteristici
și

performanțe
considerabil
mai
bune
(prosumer)
decât
cele
dezvoltate
pentru
consumatorul
larg.

Un
exemplu
este
camera
profesională
Canon
XL-1
care
se
poate
vedea
în
figura
2.3.

7

Fig. 2.2: Un camcorder (sursa: internet)
Fig. 2.3: O cameră profesională (sursa: internet)

2.4


Camere USB

Cunoscute
adesea
sub
numele
de
"webcam"
acestea
se
conectează
la
unul
din
porturile

USB
ale
calculatorului.
Împreună
cu
programe
de
tip
"talk-chat",
acestea
permit
vizualizarea

interlocutorului
prin
rețeaua
internet
în
timpul
discuției.
Imaginea
livrată
are
rezoluție

acceptabilă
și
la
vremea
apariției
lor
au
ajutat
consumatorii

facă
un
pas
înainte

impulsionând
internetul
și
determinând
scăderea
prețurilor
serviciilor
de
telefonie
de
"long

distance".
O
cameră
USB
se
poate
vedea
în
figura
2.4.

Fig. 2.4: O cameră USB (sursa: internet)
Fig. 2.5: O cameră integrată într-un sistem

laptop (sursa:internet)

Odată
cu
creșterea
importanței
mobilității,
din
ce
în
ce
mai
mulți
consumatori
au

adoptat
sisteme
laptop.
Fabricanții
au
început
integrarea
camerelor
direct
în
carcasa
acestora.

8

Ca
urmare,
utilizatorul
nu
mai
trebuie

se
preocupe
de
conectarea
unei
camere
USB
și
de

fixarea acesteia. O cameră integrată într-un laptop se poate vedea în figura 2.5.

2.5 Camere IP

Camerele
IP
sunt
o
generație
ceva
mai
nouă.
Construite
în
jurul
unui
server
de
internet

(de
cele
mai
multe
ori
rulând
sisteme
de
operare
Linux),
acestea
trebuie
conectate
la
rețeaua

locală
și
pot
fi
vizualizate
prin
aceasta
(cablul
coaxial
lipsește).
În
timpul
operării,
acestea

obțin
o
adresă
de
IP
variabilă
de
la
router
(IP
dinamic)
sau
încearcă

obțină
adresa
de
IP

setată de către utilizator.

]Setarea
unei
astfel
de
camere
presupune
stabilirea
unor
parametri
de
interes.
Între
aceștia
se

menționează:
numele
utilizatorului
și
parola,
adresa
IP,
portul
utilizat,
posibilitatea
de

accesare
(sau
nu)
a
camerei
fără
parolă,
ceasul
și
data
sistemului,
etc.
Construite
în
jurul
unor

servere
web
ce
rulează
sisteme
de
operare
Linux,
acestea
trebuie
conectate
la
rețeaua
locală

sau
de
internet.

Una
dintre
cele
mai
cunoscute
firme
de
camere
IP
este
Axis
(www.axis.com).
Aceștia

produc
camere
statice
sau
Pan-Tilt-Zoom
(PTZ).
Două
dintre
aceste
camere
se
pot
vedea
în

figura 2.6.

Este
important
de
notat
faptul

întreg
sistemul
este
format
dintr-un
“lan
ț

de
module
ș
i

func
ț
ionarea
lui
depinde
de
fiecare
dintre
acestea.
Acest
lucru
implică
nu
doar
func
ț
ionarea

9

modulului
ci
aplică
ș
i
constrângeri
la
nivel
temporal,
orice
întârziere,
afectând
modulele
care

urmează în acest lan
ț
.

Odată
cu
introducerea
procesoarelor,
sistemele
de
supraveghere
s-au
transformat
ș
i
ele.

Camerele
au
devenit
servere
conectate
pe
re
ț
elele
de
calculatoare.
Acestea
pot
fi
accesate
de

calculatoare
de
orice
col
ț
de
lume.
Sistemele
de
înregistrare
au
devenit
calculatoare
care

înregistrează informa
ț
ia video în format numeric.

Pentru
diversele
detec
ț
ii
ce
implică
sau
folosesc
imagini
sunt
necesare
sisteme
video.
Module

care
ob
ț
in
imaginile
sunt
interconectate
cu
module
care
asigură
prelucrarea
acestora
în

vederea
extragerii
informa
ț
iilor
de
interes.
Dacă
la
începuturi,
acestea
aveau
ș
i
variante

analogice, în zilele noastre ele sunt digitale.

De
vreme
ce
informa
ț
ia
oferită
de
cameră
este
în
format
digital,
în
zilele
noastre
se
dore
ș
te

utilizarea
procesoarelor
pentru
determinarea
unor
caracteristici
pe
care
fiin
ț
a
umană
le

determină
u
ș
or.
Ca
exemp le
se
pot
men
ț
iona
stările
emo
ț
ionale
ale
fiin
ț
elor
umane.
Acestea
se

pot determina pe baza elementelor fe
ț
ei umane (figura 2.7).

Astfel,
două
stări
emo
ț
ionale
(bucurie
ș
i
furie)
se
pot
vedea
în
figura
2.8.
Cu
toate
acestea,

detec
ț
ia
de
stări
emo
ț
ionale
oferă
informa
ț
ii
incomplete
în
cazurile
în
care
analize
sunt

necesare pentru diverse situa
ț
ii.

10

Un
astfel
de
exemplul
este
cazul
în
care
persoane
suspectate
de
comportamente
antisociale

sunt
în
mi
ș
care
pentru
inducerea
în
eroare
a
oamenilor
legii.
În
aceste
cazuri
este
importantă

analiza
acestora
ș
i
pe
alte
baze
nu
doar
pe
baza
fe
ț
ei.
Ca
urmare,
detec
ț
ia
numerelor
de

înmatriculare
ale
autovehiculelor
ș
i
recunoa
ș
terea
caracterelor
prezente
pe
acestea
poate
ajuta

în determinarea traseului parcurs.

Este
important
de
men
ț
ionat
faptul

aceste
sisteme
ar
trebui

func
ț
ioneze
în
condi
ț
ii

diverse
de
vreme(zi
/
noapte,
soare
/
cea
ț
ă
/
ploaie
/
ninsoare,
etc.).
Primul
pas
în
crearea
unui

astfel
de
sistem
este
detec
ț
ia
numărului
de
înmatriculare
a
autovehiculului.
Odată
ce
acesta

este
identificat,
el
trebuie
analiza
în
vederea
recunoa
ș
terii
caracterelor.
Numărul
astfel

determinat,
poate
fi
transmis
sistemelor
de
supraveghere
a
traficului.
Dacă
autovehiculul
este

identificat
în
trafic,
sistemul
de
supraveghere
poate
transmite
informa
ț
ii
către
oamenii
legii

care pot stabili un traseu.

2.6 Motivatia
ș
i Scopul P roiectului

Tema acestei lucrări este realizarea unui minisistem experimental de recunoa
ș
tere a

plăcu
ț
elor de înmatricular e ale autovehiculelor dotate cu o combinatie unica de caractere

pentru identificare. Acest sistem este compus dintr-un montaj folosind o cameră video

conectată la o plăcu
ț
ă de d ezvoltare Raspberry Pi
ș
i o interfa
ț
ă web pentru a facilita accesul

ș
i lucrul utilizatorilor. Ac est sistem poate fi o solu
ț
ie ieftină pentru controlul accesului într-o

parcare, accesului pe o proprietate privată, sau, într-un sistem mai extins pentru monitorizarea

ș
i controlul traficului. Ac est sistem poate controla (comanda) un alt dispozitiv de acces tip

11

barieră, por
ț
i de garaj, etc . sau poate furniza informa
ț
ii din trafic stocate într-o bază de date, în

acest fel facându-se controlul accesului autovehiculelor într-un spa
ț
iu delimitat sau

monitorizarea/supravegherea traficului.

Motiva
ț
ia principală p entru abordarea acestui proiect este simplificarea controlului
ș
i

accesului vehiculelor în spa
ț
ii
ș
i incinte delimitate, domeniu în ca re se pot aduce multe

îmbunătă
ț
iri. Implementa rea acestui sistem poate reprezenta un mic progres pentru a u
ș
ura

munca oamenilor într-o lume tot mai automatizată
ș
i conectată, o lume în care conceptul IoT

(Internet of Things) a luat o amploare foarte mare în ultimii ani. Dintotdeauna oamenii
ș
i-au

dorit
ș
i au încercat sa î
ș
i facă via
ț
a cât mai confortabilă la acest lucru contribuind, bineîn
ț
eles,

dezvoltarea tehnologiei,
ș
i în special a tehnologiei informa
ț
iei. Un rol determinant în acest

sens îl are Internetul, care nu doar că ne permite să comunicăm foarte u
ș
or
ș
i ne oferă acces

la informa
ț
ie
ș
i cunoa
ș
tere, dar, odată cu dezvoltarea tehnologică, ne oferă
ș
i posibilitatea de a

conecta diverse obiecte(echipamente)
ș
i de a le controla de la distan
ț
ă sau de a automatiza

anumite procese.

Pe măsură ce traficul urban
ș
i extraurban este tot mai aglomerat
ș
i parcurile auto tot mai

extinse, dar
ș
i odată cu di gitalizarea
ș
i interconectarea atât la nive l de institu
ț
ii publice cât
ș
i la

nivel de companii
ș
i socie tă
ț
i private, sistemele de recunoa
ș
tere automată a plăcu
ț
elor de

înmatriculare devin o necesitate.

De
ș
i aceste sisteme de sunt considerate scumpe, datorită dezvoltării tehnologice
ș
i a

îmbunătă
ț
irii performan
ț
elor echipamentelor de captare a imagini lor, acest domeniu cunoa
ș
te

în prezent o largă dezvoltare, iar costurile pot fi reduse sim
ț
itor.

Sistemele de recunoa
ș
tere automată a numerelor de înmatriculare dezvoltate până în

prezent se regasesc sub mai multe forme
ș
i nume: LPR (Licence Plate Recognition), ALPR

(Automatic Licence Plate Recognition, ANPR (Automatic Number Plate Recognition), ele

folosesc în mare acela
ș
i principiu implementat cu diver
ș
i algoritmi.

Primele încercări de recunoa
ș
tere automată a plăcu
ț
elor de înmatriculare î
ș
i au originea în

anii 1980, dar abia în anii 90, datorită evolu
ț
iei tehnologice a sistemelor de calcul (cre
ș
terea

puterii de calcul) cât
ș
i a echipamentelor de achizi
ț
ie, a făcut posibila realizarea unor astfel de

proiecte.Dacă la început performan
ț
ele atât din punct de vedere al timpilor de procesare cât
ș
i

a ratei de recunoa
ș
tere nu erau satisfăcătoare, astăzi s-a ajuns la timpi de procesare a

12

imaginilor de sub o secundă
ș
i rata de recunoa
ș
tere de 95%-98% chiar
ș
i pentru vehiculele

aflate în mi
ș
care la viteze ridicate.

În cea mai mare parte un Sistem de recunoa
ș
tere automată a plăcu
ț
elor de înmatriculare

preia o imagine digitală capturata de o camera video care mai apoi este procesata de un

calculator obi
ș
nuit sau un ul dedicat. De obicei prelucrarea imaginii se face pentru a

îmbunătă
ț
i
ș
i/sau filtra imaginea apoi pentru a localiza plăcu
ț
a de înmatriculare
ș
i în final

pentru a segmenta
ș
i a rec unoa
ș
te caracterele gravate pe plăcu
ț
ă. Op
ț
ional se poate aduce
ș
i o

corec
ț
ie bazată pe modul în care trebuie sa fie distribuite caracterele pe placuta, de exemplu

ș
tim toate plăcu
ț
ele de înmatriculare din România încep cu cel pu
ț
in o litera (sau doua)
ș
i nu

cu o cifra, iar numărul de combina
ț
ii al primelor doua litere (unde este cazul) este limitat
ș
i

desemnează numele jude
ț
elor de provenien
ț
ă.

Aceasta lucrare î
ș
i propune sa ofere o solu
ț
ie integrată (all-in-one), la nivel experimental,

sistemul putând fi astfel folosit cu sau fără un calculator sau server dedicat
ș
i posibilitatea de a

func
ț
iona fără supraveghe re. Avantajul acestei solu
ț
ii, în afara costului scăzut, este ca poate fi

folosit pentru sisteme mici (spa
ț
ii delimitate de mici dimensiuni, case private, etc), dar poate

fi extins
ș
i pentru sisteme de mari dimensiuni cu mai multe camere video ( institu
ț
ii publice,

sisteme de management ale parcarilor automate, parcări publice, etc).

2.7 Prelucrare Imagini

Prelucrarea sau


procesarea imaginilor este un domeniu relativ nou, apărut odată cu

dezvoltarea aparatelor foto sau video digitale. Aplica
ț
iile acestui domeniu sunt foarte

numeroase
ș
i raspandite : medicina, securitate, industrie, arta
ș
i în orice alt domeniu în care

informa
ț
iile din mediul ex terior sunt imagini. Scopul principal este de a “îmbunătă
ț
i”

imaginea în vederea interpretării acesteia de către un subiect uman sau în cazul nostru de către

un sistem de calcul.

13

Capitolul 3. Dezvoltarea Proiectului

Tehnologii hardware
ș
i software folosite:

3.1 Raspberry Pi 4. Model B 4GB RAM

Raspberry Pi este o placă electronică (Single-Board Computer) de mici dimensiuni care

include toate componentele unui calculator (procesor,memorie RAM, porturi) dezvoltată în

Marea Britanie de către <Raspberry Pi Foundation>. Scopul ini
ț
ial al proiectului era pur

educativ pentru promovarea
ș
i predarea informaticii în
ș
colile din
ț
ările în curs de

dezvoltare[16]. Acest proiect a avut un succes mai mare decat cel a
ș
teptat
ș
i s-a vandut
ș
i

folosit pe scara largă
ș
i în afara pie
ț
ei target urmărită ini
ț
ial. Astăzi domeniile de utilizare ale

Raspberry Pi sunt tot mai multe
ș
i mai variate
ș
i includ proiecte de cercetare, proiecte de

robotica, servere media, tablete portabile, etc. Are avantajul de a avea dimensiuni foarte

reduse
ș
i de a oferi perfor man
ț
e ridicate la un pre
ț
accesibil, deasemenea poate fi integrat

într-o carcasa alături de alte periferice sau alte echipamente în func
ț
ie de proiectul pentru care

este folosit. Principalul dezavantaj este ca pachetul oficial nu se livrează cu niciun periferic

(mouse, tastatura, display), iar accesarea dispozitivului de pe un display extern poate pune

unele probleme.De
ș
i este mai lent decat un laptop sau un calculator normal, Raspberry Pi

oferă performan
ț
e decente la costuri de achizitie
ș
i de consum foarte reduse.

Modelul B 4GB RAM. Am optat pentru această variantă datorită puterii de calcul ridicată

disponibilă cât
ș
i pentru P rocesorul Grafic (GPU) cu suport OpenGL de care beneficiază.

Acest model are următoarele caracteristici principale conform specificatiilor din [5]:

-Procesor: ARM Cortex-A72 de 64 biti si 1.5GHz, cu 4 nuclee

-Memorie DDR4 SDRAM: 4GB

14

fig. 3.1 Raspberry Pi B 4 GB RAM

-Procesor grafic: VideoCore VI cu suport OpenGL ES 3.x

Tipuri de conexiuni acceptate:

-1 port Gigabit Ethernet

-2 port USB 2.0; 2 USB 3.0

-1 USB C, pentru alimentare

-2 microHDMI

-1 port pentru afi
ș
aj MIP I DSI cu 2 benzi

-1 port MIPI CSI cu 2 benzi pentru camera video

– GPIO (General Purpose Input Output) cu 40 de pini, pentru conexiunile hardware

-1 slot microSD pentru încărcarea Sistemului de Operare
ș
i stocare date.

Raspberry Pi folosește un procesor Broadcom BCM2711, cu 4 nuclee,pe 64 biti, pe

arhitectura ARM v.8, care lucrează la o frecventa de până la 1.5Ghz. Portul serial pentru

cameră CSI (Camera Serial Interface), permite conectarea unei camere direct la placă. Portul

serial pentru display DSI (Display Serial Interface) permite conectarea unui cablu de tip

panglică cu 15 pini. În specificatii se menționează faptul că acesta se poate utiliza pentru

conexiunea cu un display de tip LCD sau OLED. Portul hardware GPIO pentru diverse

15

aplica
ț
ii se poate utiliza p entru citirea stării unei linii (stare modificată de exemplu cu ajutorul

unui buton) dar și pentru controlul unor relee sau motoare electrice cu tensiuni de alimentare

reduse. Pentru unele aplicații este important de menționat faptul că liniile acestui port oferă și

tensiuni de alimentare de 3.3V sau 5V.

În trecut, pe placă exista un conector RCA pentru conectarea la un TV. La ultimele

variante însă acesta lipsește, el fiind înlocuit cu 2 porturi microHDMI. Acestea se pot utiliza

pentru conectarea plăcii fie la un TV fie la un monitor.

Tensiunea de alimentare pentru Raspberry Pi este de 5V. Alimentarea se face prin

intermediul unui port USB de tip C. Pe site-ul raspberrypi.org [6] se specifică un curent

necesar maxim are valoarea de 700mA care se poate asigura chiar dintr-un port USB de

calculator sau laptop. În general se poate folosi un alimentator de telefon.

Pentru conexiunea la internet în acest proiect este utilizat portul de ethernet. Acesta se

poate lega direct la internet (dar prin intermediul unui router). Pentru conexiune se poate

utiliza un calculator conectat la același router. Pentru conexiuni de tip remote, se poate utiliza

un convertor USB-WiFi.

3.2 Arhitectura ARM

. (Advanced RISC Machine)

Este o arhitectura de microprocesoare folosite în mare masura în industria smartphones
ș
i

sisteme embedded, dar
ș
i în servere
ș
i supercomputere[wiki]. Folo se
ș
te un set de instruc
ț
iuni

de tip RISC (Reduced Instruction Set Computer). Are avantajul consumului redus de energie

,performan
ț
elor ridicate p entru executarea mai multor sarcini mici, simultan, dar
ș
i a

costurilor
ș
i dimensiunilo r reduse.

RISC

, este un concept care se bazează pe folosirea unui set

redus de instruc
ț
iuni simp le
ș
i este o alternativă la CISC (Comple x Instruction Set Computer)

folosit de majoritatea procesoarelor din calculatoare. Conceptul RISC nu se reduce la

utilizarea unui set redus de instruc
ț
iuni simple ci include mai multe concepte care simplifică

arhitectura internă și sporesc viteza de calcul. Procesoarele bazate pe conceptul RISC au mai

pu
ț
ine tranzistoare în stru ctură, necesită o suprafa
ț
ă de siliciu redusă, sunt mai fiabile și un

pre
ț
de cost mai mic. Sim plificarea structurii a permis printre altele să crească frecven
ț
a de

tact. [7].

16

3.3


Sistemul de operare. Raspberry Pi OS (Raspbian)

De
ș
i este posibilă achizi
ț
ionarea produsului cu un Sistem de Operare (OS) preinstalat,

de cele mai multe ori Raspberry Pi vine fără sistem de operare . Selecția acestuia se face în

func
ț
ie de proiectul care se dorește a fi implementat. Cele mai comune op
ț
iuni agreate,

acceptate
ș
i dezvoltate de producător sunt Raspberry Pi OS, 32-bit (numit anterior Raspbian)

ș
i NOOBS. În documenta tia de pe site-ul

https://www.raspberrypi.org

mai sunt men
ț
ionate
ș
i: Ubuntu, LibreELEC, ThinlinX
ș
i altele.

Selectarea
ș
i inscrip
ț
ionarea Sistemului de Operare (pe cardul m icroSD) se poate face

foarte u
ș
or folosind un to ol(scriitor de imagini) oferit pe site-ul producatorului: “Raspberry Pi

Imager”, a
ș
a cum se poate vedea în figurile 2
ș
i 3.

fig. 3.2 Raspberry Pi Imager fig. 3.3 Selec
ț
ie OS

Pentru acest proiect am ales un card microSD SanDisk Ultra de 64GB (fig. 4) pe care l-am

“flash-uit” cu “Raspberry pi Imager” cu ajutorul unui adaptor introdus într-un port USB din

laptop. Ca sistem de operare am optat pentru “Raspberry Pi OS (32-bit)”

17

fig. 3.4 miscroSD card

3.4 Raspberry Pi OS

(denumit anterior Raspbian) este sistemul de operare cel mai des

folosit de Raspberry Pi
ș
i este bazat pe diferite versiuni Debian (adaptate la arhitectura ARM)

care este o distribu
ț
ie Lin ux. Raspbian oferă o interfata grafica plăcută
ș
i prietenoasă
ș
i este

un mediu desktop care oferă facilită
ț
i pentru navigare (browser), medii de programare pentru

Python
ș
i Java.

Odată realizata inscriptionarea cardului de memorie microSD acesta trebuie introdus în slotul

special destinat pe pe placa, iar următorul pas este configurarea acesteia. De
ș
i în documenta
ț
ie

se recomanda pentru configurare folosirea unor periferice (monitor, tastatura,mouse)

conectate la placa prin intermediul porturilor respective (hdmi
ș
i USB), neavând la dispozi
ț
ie

un monitor, am preferat să fac configura
ț
ia în modul “headless” (fără monitor). Pe cardul de

memorie unde este instalat OS, am adaugat 2 fisiere:

– SSH (Secured Shell), pentru activarea ssh care în mod implicit vine dezactivat din ra
ț
iuni de

securitate.

– 1 fi
ș
ier denumit WPA_ Supplicant cu extensia “.conf”, care contine un fragment de script
ș
i

care oferă sistemului la bootare numele routerului
ș
i parola cu care să se conecteze(fig.5)

18

fig. 3.5 Fisier wpa_supplicant

Pentru conexiunea
ș
i com unicarea cu placa se poate folosi
ș
i un cablu de date cu mufe RJ45

conectat în portul Ethernet .

19

Capitolul 4 Configurarea Raspberry Pi

4.1 Comunicarea cu Raspberry Pi

Odată placa conectata la router sau switch, aflarea adresei IP a acesteia se poate face prin

rularea unor programe de genul “Ip Scan” sau “Angry IP Scanner” sau chiar din interfa
ț
a web

a routerului prin accesarea din browser a adresei respective. Pentru intrarea în comunicare cu

placa am folosit Putty, un emulator de terminal Linux. După lansarea programului, din

interfa
ț
a grafica am select at modul SSH
ș
i am introdus adresa ip a plăcii.

fig. 4.1 Conexiunea prin intermediul Putty

Apoi conectarea se face din terminal cu userul
ș
i parola, care by default (implicit) sunt “pi”
ș
i

“raspberry”.

4.2 VNC (Virtual Network Computing)

este un sistem grafic de partajare desktop care

permite lucrul cu placa Raspberry Pi de pe un alt dispozitiv (PC, laptop, smartphone) în

modul remote (de la distan
ț
ă).VNC Viewer transmite sau partajează cu dispozitivul pe care în

20

controlează tastatura, mouse-ul, dar
ș
i comenzile date prin ecrane de tip touchscreen. Prime
ș
te

înapoi de la dispozitivul controlat, update-uri (actualizari) ale desktopului controlat. VNC

Server
ș
i VNC Viewer su nt preinstalate în Sistemul de Operare Raspberry Pi OS. Înainte de a

putea fi utilizat, VNC Server trebuie activat. Activarea se poate face atât din terminal, cu

comanda:


pi@raspberrypi:~ $ vncserver

sau prin intermediul unei Interfe
ț
e grafice (fig.8) care poate fi deschisa cu ajutorul comenzii:

pi@raspberrypi:~ $ sudo raspi-config

.

Aceasta Interfata oferă conform [8] control asupra

setărilor principale ale placutei Raspberry Pi:


Schimbarea parolei (care este recomandata, mai ales cât ssh este activat)


Configurarea setărilor de re
ț
ea


Configurarea op
ț
iunilor de start (optiuni bootare)


Op
ț
iuni de interfa tare, configurarea conexiunilor cu perifericele, sunt incluse op
ț
iuni

pentru activarea VNC, SSH, camera video, dar
ș
i pentru protocoalele de tip serial, I2C

ș
i pentru activarea controlului de la distan
ț
a a pinilor GPIO


Actualizarea sistemului la ultima versiune software


Overclocking (fortarea procesorului să lucreze la frecven
ț
ă mai mare


Setari pentru configurarea regiunii, fusului orar
ș
i a limbii

Aceasta Interfata seamănă cu interfe
ț
ele grafice, tip BIOS, de pe sistemele PC .

Figura. 4.2 Fereastra “raspi-config”

21

4.3 Interfa
ț
a grafica sau GUI

După ce s-a realizat autentificarea cu utilitarul “putty”
ș
i VNC a fost activat, se poate încerca

prima conexiune “remote” cu VNC Viewer. După lansarea în execu
ț
ie a aplica
ț
iei VNC

Viewer (fig.9) se deschide o fereastra unde se introduce adresa IP la care vrem să ne

conectăm, ni se cer apoi datele de autentificare, după care se poate vizualiza desktopul plăcii

Raspberry Pi.

Interfata Grafica a dispozitivului sau mediul Desktop oferă utilizatorului o experien
ț
ă plăcută

din punct de vedere vizual
ș
i oferă cateva unele care ajuta mult munca acestuia. În toolbar

(bara de unelte) se regasesc : un buton pentru selectarea
ș
i lansarea aplica
ț
iilor, un web

browser, terminal (LX Terminal), File Manager, dar
ș
i pictograme cu informa
ț
ii despre

conexiunea bluetooth, conexiunea în re
ț
ea
ș
i afi
ș
area orei. În fereastra de start se afla
ș
i o

pictograma care oferă acces la “wastebasket” (co
ș
ul de gunoi). Butonul cu pictograma

“Raspberry Pi”
deschide un tree (arbore) de unde se pot selecta: medii de programare

preinstalate, browserul “Chromium”, aplica
ț
ii multimedia, grafica, accesorii, un buton pentru

ajutor, preferin
ț
e
ș
i inchidere sau reboot sistem.

Raspberry Pi.

Figura 4.3 autentificare în VNC Viewer

22

Figura 4.4 Fereastra de start Raspbian

Pentru utilizarea optimă a sistemului Raspberry Pi sunt necesare rularea catorva comenzi în

terminal avand ca scop actualizarea versiunilor pachetelor deja instalate
ș
i instalarea unor

pachete noi care sunt necesare dezvoltării proiectului.În vederea acestui lucru, prima comanda

executată este:

– sudo apt-get update


– sudo apt-get upgrade

, comanda de upgrade, în plus fata de update instalează, dacă este

cazul, pachete software noi.

23

fig. 4.5 Terminalul după comanda de upgrade

-pentru actualizarea Sistemului de Operare:

– sudo rpi-update

Următorul pas în pregătirea sistemului este instalarea pachetelor și uneltelor de dezvoltare (în

cazul în care acestea nu sunt deja instalate). Aceasta se face cu comanda

– sudo apt-get install build-essential cmake pkg-config,

în general aceste pachete sunt

dependinte necesare compilării librăriilor în Debian, care este o distribu
ț
ie Linux.


sudo
apt-get
install
libjpeg8-dev
libtiff4-dev
libjasper-dev
libpng12-dev,

dependinte

necesare procesării imaginilor.

24

Figura 4.6 Exemplu Instalare dependinte

-sudo
apt-get
install
libavcodec-dev
libavformat-dev
libswscale-dev
libv4l-dev

,
este
comanda

aferentă pentru instalarea librăriilor pentru pachetele video de intrare iesire.



sudo
apt-get
install
libatlas-base-dev
gfortran

,
instructiune
pentru
instalarea
librariilor

respective,
care
sunt
dependinte
pentru
utilizarea
modulelor
“NumPy”
ș
i
“scipy”
pe
care
le

voi descrie mai jos.

25

Capitolul 5.

Programarea plăcii Raspberry Pi

5.1 Python.

Python este un limbaj de programare de nivel înalt creat în 1991 de Guido van Rossum
ș
i este

unul dintre cele mai populare limbaje de programare la ora actuala. Python oferă facilită
ț
i de

programare orientată pe obiect, dar
ș
i pentru programarea imperativa, dar
ș
i procedurala sau

functionala. Python se deosebe
ș
te prin calitatea codului, acesta fiind foarte u
ș
or de citit.

Python este un limbaj de programare interpretat
ș
i nu compilat, acest lucru permite ca

proiectele software scrise în acest limbaj să fie u
ș
or portabile pe diverse sisteme de operare,

dar
ș
i pe diverse arhitectu ri hardware.Sintaxa, oarecum simplificată, a acestui limbaj de

programare ne permite implementari software echivalente cu alte limbaje de programare ( C,

Java), dar în mai pu
ț
ine li nii de cod. Python este folosit pe scara largă pentru dezvoltarea de

aplica
ț
ii web datorită usur intei cu care poate fi utilizat în crearea scripturilor.[9]

Python este un limbaj cross-platform sau independent platform, acest lucru permite

programelor scrise în Python să ruleze fără probleme pe majoritatea Sistemelor de Operare :

Windows, Linux, macOS sau DOS.

Ca un lucru inedit, conceptele
ș
i filosofia care stau la bazele Python pot fi descoperite ruland

o singura linie de cod -<

import this

>- fiind afi
ș
ată apoi o lista cu concepte scrisă de Python

core developer, Tim Peters. Acest text a fost intitulat “The Zen of Python” (fig.13)

fig. 5.1 The Zen of Python, by Tim Peters

26

În mod normal Python reprezinta prima optiune pentru programare pe placuta Raspberry Pi.

Python este un limbaj de programare interpretat
ș
i nu compilat, interpretorul de Python vine

preinstalat în doua versiuni python2
ș
i python3. Acest lucru poate crea cateodata confuzii

pentru utilizator. Documenta
ț
ia despre limbajul Python
ș
i despre ultimele versiuni
ș
i cum pot

fi ele instalate
ș
i folosite, poate fi găsită foarte u
ș
or pe internet (

https://docs.python.org

), iar

orice carte sau articol despre placuta Raspberry Pi con
ț
ine cel pu
ț
in un capitol sau un

fragment despre cum poate fi aceasta programată cu ajutorul limbajului Python. Exista doua

sau mai multe moduri de a programa placa Raspberry Pi în Python:

– accesand butonul
de pe desktop putem găsi două interfe
ț
e cu editoare de text care pot fi

folosite în acest scop. Aceste IDE-uri (mediu de dezvoltare integrat) oferă
ș
i alte facilită
ț
i

precum selectarea interpretorului, debugger, construirea unor proiecte simple, etc…(fig. 14)

fig. 5.2 Thonny, mediu de programare pe raspberry Pi

– un alt mod este invocarea interpretorului direct din LXTerminal, acest lucru se face cu

ajutorul comenzii “

python

” sau “

python3

”, în func
ț
ie de versiunea dorită. A
ș
a cum se poate

vedea interpretorul este instalat în ”

/usr/bin/python3

”,pentru masinile pe care rulează Linux

sau o distribu
ț
ie Linux. Pe ntru alte versiuni, instalate ulterior se poate folosi
ș
i



/usr/local/python

”, de exemplu. În acest mod interpretorul este folosit în mod interactiv (fig.

15). Caracterele ”>>>” sunt folosite pentru construc
ț
ii unilinie, iar caracterele “…” pentru

construc
ț
ii multilinie, und e se foloseste indentarea liniilor.

27

-Deasemenea programul poate fi scris în terminal cu ajutorul editorului de texte “nano”, se

salvează în loca
ț
ia dorită cu extensia “.py”, iar mai apoi programul se poate rula cu comanda



python <nume_fisier>.py

”. Editorul de text nano se deschide cu ajutorul comenzii “

nano

<nume_fisier>

”.

fig. 5.3 Interpretor Python în modul interactiv

5.2 Modulul de Detec
ț
ie
ș
i Recunoa
ș
tere a plăcu
ț
elor de înmatriculare.

Pentru dezvoltarea acestui proiect am folosit libraria openalpr. Openalpr este o librărie

open-source scrisa în C++ cu “legari” în Python, Java ,C#, Node-red.js. Libraria preia
ș
i

analizează imagini sau fluxuri video captate de o camera video
ș
i identifica plăcu
ț
ele de

înmatriculare. Rezultatul prelucrarii datelor de intrare îl reprezinta afisarea caracterelor

inscrise pe placa de înmatriculare [10].

Pentru includerea modului în proiect am folosit repository-ul:

https://github.com/openalpr/openalpr.git

Openalpr necesita adi
ț
ional următoarele module
ș
i librării:

– numPy, pentru manipularea
ș
i calculul cu tablouri multidimensionale [11]

-sciPy, o colec
ț
ie de algoritmi
ș
i unelte pentru prelucrarea imaginilor
ș
i “machine

learning” [12]

-OpenCV, include un set cuprinzător de algoritmi optimizati pentru computer vision
ș
i

machine learning. Ace
ș
tia pot fi folosi
ț
i pentru detec
ț
ia facială, recunoa
ș
terea obiectelor,

clasificarea ac
ț
iunilor um ane, urmărirea mi
ș
cării camerei, urmarirea obiectelor în mi
ș
care, etc.

[13].

28

-tesseract, OCR (Optical Character Recognition) este un set de algoritmi pentru

recunoa
ș
terea caracterelo r date ca input într-o imagine, poate fi folosit
ș
i pentru

recunoa
ș
terea scrisului de mână.

După instalarea cu succes a acestor dependinte, pasul următor este instalarea propriu-zisa

librariei “openalpr”. Acest lucru se poate face urmand următorul set de comenzi
ș
i

instruc
ț
iuni:



git clone

https://github.com/openalpr/openalpr.git


, descarcarea în directorul nou creat

“openaplr”

-cd openalpr/src

-mkdir build

-cd build ,

crearea directorului “build” în directorul /src

-DCMAKE_INSTALL_PREFIX:PATH=/usr-DCMAKE_INSTALL_SYSCONFDIR:PATH
=/etc ..


,

setarea mediului de compilare.



make

,compilarea librariei



sudo make install

, instalarea librariei în sistemul local ( prefixul este /src)

Instalarea se poate testa rulând în terminal comanda :


alpr

– c e

u “<calea.fi
ș
ierului.jpg>”

(figura 5.4)

fig. 5.4 Testarea modulului openalpr în terminalul LX

29

5.3 Principii. În
ț
elegerea
ș
i testarea algoritmilor openALPR

Pentru detec
ț
ia numărului de înmatriculare este nevoie de identificare a unei zone

dreptunghiulare de fundal alb. Limbajul uman pentru definirea unei plăcu
ț
e de înmatriculare

include cuvinte precum “plăcu
ț
ă” ,“identificare unică”, “litere” , “cifre”, dar un sistem de

calcul nu este capabil să în
ț
eleagă o defini
ț
ie în limbaj uman, deasemenea nu este capabil să

în
ț
eleagă ce înseamnă un “autovehicul”. Pentru a realiza acest lucru este nevoie de traducerea

limbajului uman într-un limbaj pe care sistemul de calcul îl poate în
ț
elege. O defini
ț
ie mai

apropiata de în
ț
elegerea c alculatorului
ș
i care este un prim pas pe ntru dezvoltarea sistemelor

de detec
ț
ie automată num erelor de înmatriculare, ar putea fi, defini
ț
ia data de Ondrej

Martinsky în lucrarea sa [15] <

Algorithmic and Mathematical Principles of Automatic

Number Plate Recognition System> :

” rectangular area with increased occurrence of

horizontal and vertical edges”

.

Openalpr lucrează pe principiul pipeline (ie
ș
irea sau rezultatul unei etape de execu
ț
ie devine

intrare pentru următoarea etapă). Prime
ș
te la intrare o imagine care trece prin diverse etape de

procesare , iar la ie
ș
ire es te posibila recunoasterea caracterelor de pe plăcu
ț
a de înmatriculare

dacă ea există. În tabelul următor (tabelul 5.5) sunt prezentate etapele de execu
ț
ie în pipeline

,clasele corespunzătoare
ș
i o scurta descriere a fiecăreia. [14]

Tabelul 5.5 Faze de execu
ț
ie în pipeline-ul Openalpr. sursa: [14]

Principalele etape de execu
ț
ie a
ș
a cum se regasesc în [14];

5.3.1 Localizare

. Faza de detec
ț
ie sau localizare are loc de fiecare data cand trebuie procesata

o nouă imagine. Folose
ș
te un algoritm, utilizat în general pentru detectie faciala, pentru a

detecta regiuni din imagine ca fiind posibile plăcute de înmatriculare. Fiecare regiune este

30

mai apoi trimisa pentru procesari ulterioare în următoarea etapă. Localizarea este de obicei

cea mai solicitanta faza de procesare pentru procesor. Acest lucru se poate vedea în figura 5.6.

fig. 5.6 Exemplu localizare posibile regiuni candidate

5.3.2 Imagini Binare.

Următoarea etapă este transformarea tuturor regiunilor detectate în

etapa precedenta în imagini binare (alb-negru). Motivul acestui proces este maximizarea ratei

de detec
ț
ie a tuturor carac terelor regăsite în imagine. În imagine pot exista regiuni prea

luminoase sau foarte intunecoase, iar găsirea caracterelor în aceste regiuni poate fi dificila.

Fiecare dintre aceste imagini binare rezultate din aceasta etapa sunt procesate în fazele

următoare.

5.3.3 Analiza caracterelor.

În aceasta etapa se încearcă găsirea unor posibile caractere de

aproximativ dimensiunile caracterelor de pe plăcu
ț
ele de înmatriculare în zona regiunilor date

ca input în faza precedenta. Face acest lucru mai intai prin găsirea tuturor posibilelor caractere

conectate
ș
i apoi se analiz ează dacă aceste “pete” au dimensiuni egale
ș
i sunt aproximativ

aliniate. Regiunile care nu trec de aceasta filtrare nu vor fi trimise pentru procesări ulterioare.

Zonele din imagine în care sunt găsite poten
ț
iale caractere sunt salvate
ș
i vor fi procesate în

următoarea etapă.

5.3.4 Determinarea marginilor.

Aceasta faza este responsabilă pentru găsirea marginilor

plăcu
ț
ei de înmatriculare, până acum au fost detectate doar posibile regiuni care uneori pot fi

mai mari sau mai mici decat dimensiunile reale ale plăcu
ț
elor de înmatriculare. În acesta etapă

se proceseaza imaginea plăcii
ș
i se calculează linii orizontale
ș
i verticale având ca repere

înăl
ț
imea
ș
i lă
ț
imea carac terelor. Rezultatele ob
ț
inute sunt apoi comparate cu un model care

are ca parametrii dimensiunile ideale ale unei plăcu
ț
e de înmatriculare.

5.3.5 Reorientarea Placutei

se face prin tehnica

Deskew

.


Avand ca input marginile placutei,

în aceasta etapă se reface imaginea regiunii/ regiunilor respective rezultatul fiind o imagine

31

standard a unei plăcu
ț
e de înmatriculare cu dimensiuni
ș
i orientare standard, adică fără să fie

orientată oblic sau rotita.

5.3.6 Segmentarea.

În aceasta faza se izolează (se segmenteaza) toate caracterele care sunt

componente ale imaginii respectivei regiuni. Deasemenea în această etapă se încearcă

curatarea tuturor segmentelor de “pete” mici care sunt descalificate ca fiind caractere. Apoi se

elimina regiunile de margine, pentru a evita calificarea acestor regiuni ca fiind caracterele “I”

sau “1”.

5.3.7 OCR( Optical Character Recognition)

. În aceasta etapă se proceseaza fiecare segment

descoperit în faza anterioara. Fiecare segment are ca corespondent o lista de caractere
ș
i i se

calculeaza
ș
i o probabilita te exprimată în procente.

5.3.8 Post-Procesare.

Este ultima etapă a openalpr. Primind lista cu toate combina
ț
iile

posibile de caractere de la OCR, post-procesarea alege cele mai bune combina
ț
ii (cele mai de

Încredere) cu cele mai mari procente
ș
i le validează. Validarea plăcu
ț
ei de înmatriculare se

poate face
ș
i prin compar area
ș
irului de caractere descoperit cu un
ș
ablon predefinit în func
ț
ie

de
ț
ara de provenien
ț
ă a plăcu
ț
ei de înmatriculare. De exemplu pentru România sablonul ar

putea fi:

[L][L]-[C][C]-[L][L][L] , unde “L” este Litera
ș
i “C” este un număr de la 0 la 9 (cifra).

Fluxul
ș
i schema bloc cu elementele de baza ale unui sistem ALPR se pot vedea în figura 5.7

fig. 5.7 Schema bloc a unui sistem ALPR

32

Capitolul 6.

Implementare


6.1 Camera.

Pentru captura de imagini necesare acestui proiect am folosit camera “RPi IR-CUT Camera

(B)”. Aceasta camera are în plus fa
ț
ă de camera clasică Raspberry Pi, filtru IR (InfraRed)
ș
i

poate capta imagini de calitate atât pe timp de zi cât
ș
i pe timp de noapte. Camera are montate

în lateral doua leduri IR prevăzute cu senzori Un alt avantaj al acestui tip de camera este

posibilitatea reglarii distan
ț
ei focale (focus), acest lucru nefiind posibil în versiunea clasică a

camerei. Camera se conecteaza la placa Raspberry pi cu ajutorul unui cablu tip “panglica” în

portul MIPI CSI. În mod normal camera este dotată cu un senzor de lumina
ș
i ledurile IR se

pornesc doar cand intensitatea luminii scade sub un anumit prag. Func
ț
ia de filtrare IR se

poate dezactiva editând fi
ș
ierul /boot/config.txt, folosind comanda :

sudo nano /boot/config.txt

ș
i adaugand linia:


disable_camera_led=1

fig. 6.1 Camera cu filtru IR conectata la Raspberry Pi

33

6.2 Program

Avand toate elementele de mai sus configurate, am definit o func
ț
ie care odată apelată,

recunoa
ș
te caracterele plă cu
ț
elor de înmatriculare (dacă ele exista ) folosind openALPR
ș
i

camera conectata la Raspberry Pi. Func
ț
ia

scan

( fig 6.2), salvează atât imaginea capturata de

camera, dar
ș
i ultimul rez ultat al procesării în format json pentru a putea fi folosit ulterior.

Figura 6.2 Print screen Program Scan

Folosind modulul

piCamera

ș
i modulul

datetime

, se efectuează o captura de imagine salvata

în directorul numit poze_lpr. Aceasta imagine este procesata apeland functia Alpr din modulul

openalpr instalat anterior. În cazul în care exista o eroare la importarea modulului openalpr se

afi
ș
ează mesajul

Eroare l a încărcarea openALPR,

ș
i programul se încheie returnand codul de

eroare

-1.

În cazul în care totul decurge normal, rezultatele procesării alpr se stochează în

results,

care mai apoi se salvează în format JSON (JavaScript Object Notation) în fi
ș
ierul

last_scan.json,

ș
i poate fi folosit ulterior. În cazul în care în urma procesarii imaginii se

gaseste cel pu
ț
in o plăcu
ț
a de înmatriculare , se afi
ș
ează mesajul :

S-a(u) gasit <n> Numar/Numere de înmatriculare,

urmat de afi
ș
area rezultatelor. Dacă în

urma procesării nu este descoperită nici o plăcu
ț
a de înmatriculare, se afi
ș
ează mesajul:

Nici un numar de înmatriculare gasit!,

a
ș
a cum se poate vedea în figura 6.3

34

fig. 6.3 Func
ț
ia “scan”

35

Capitolul 7

Rezultate Experimentale

Pentru testarea acestui sistem am folosit mai multe seturi de fotografii reprezentative pentru

diverse condi
ț
ii de ilumin are, unghiul din care se face captura imaginii, calitatea imaginii,

reflexii de lumina
ș
i alte c ondi
ț
ii care mi s-au părut concludente p entru determinarea acuratetii

ș
i fiabilită
ț
ii sistemului. Cele mai sugestive
ș
i elocvente pentru trasarea unor concluzii vor fi

prezentate în cele ce urmează.

7.1 Scenariul 1.

În acest caz am testat o captura de imagine realizata într-un mediu caracteristic parcărilor

publice acoperite (fig. 7.1), iluminată artificial, pozi
ț
ionare perpendiculară, fără reflexii

luminoase evidente , condi
ț
ii aproape ideale.

Figura 7.1 Imaginea de test numărul 1

Rezultat: TM34DDI

A
ș
a cum era de a
ș
teptat pentru aceste condi
ț
ii, detec
ț
ia
ș
i recunoa
ș
terea s-a facut corect de

către sistem a
ș
a cum se po ate vedea în fi
ș
ierul în format json exportat, reprezentat în figura7.2

36

Figura 7.2 Rezultat corect pentru testul 1

7.2 Scenariul 2

Pentru al doilea test am ales o imagine realizata pe timp de noapte, cu ajutorul unui telefon

mobil. Calitatea bună a imaginii a fost asigurată de blitz-ul dispozitivului
ș
i de func
ț
ia de

autofocus.

Figura 7.3 Testul 2 pe timp de noapte

37

Rezultat: TM99SNC

Ș
i în acest caz rezultatul t estului a fost un succes, este de remarcat faptul ca este nevoie de

camere performante pentru utilizarea sistemului pe timp de noapte sau în spa
ț
ii luminoase

necorespunzător.

7.3 Scenariul 3

Soare puternic, unghi u
ș
or defavorabil, captura fiind realizată de la o înăl
ț
ime mai mare,

imaginea contine o alternan
ț
ă de lumini
ș
i umbre fiind realizată sub un copac. Deasemenea

plăcu
ț
a de înmatriculare e ste u
ș
or deformata formand o curbura sp re interior în partea dreapta.

Figura 7.4 Imagine test 3

Rezultat: TM99S -recunoa
ș
tere eronată.

Figura 7.5 Rezultat test 3

38

Ultimele doua caractere au fost omise din rezultat deoarece segmentele respective nu s-au

aliniat ca înăl
ț
ime cu prec edentele, din cauza deformarii placutei. Un element important în

func
ț
ionarea corecta a sis temului este starea fizică bună a plăcu
ț
elor
ș
i unghiul din care este

efectuată captura ce urmează a fi procesată .

7.4 Scenariul 4

Iluminare artificială pe timp de noapte, unghi lateral nefavorabil, u
ș
or oblic

Figura 7.6 Imaginea pentru testul 4

Rezultat:AR4NOX – recunoa
ș
tere eronată, deasemenea pattern-ul LLNNLLL nu este

respectat în rezultat.

Figura 7.7 Rezultat pentru testul 4

39

7.5 Scenariul 5

Am vrut să testez comportamentul algoritmului
ș
i al sistemului dându-i ca input o imagine în

care se regasesc, pe langa o plăcu
ț
ă de înmatriculare reală,
ș
i alte caractere de aproximativ

acelea
ș
i dimensiuni
ș
i fonturi.

Figura 7.8 Imagine pentru testul 5

Rezultat: În acest caz sistemul detectează 3 zone ca fiind plăcu
ț
e de înmatriculare, acest lucru

fiind fals.

Figura 7.9 Rezultat pentru testul 5

40

În acest caz sistemul lasă loc evident de îmbunătă
ț
iri în ceea ce prive
ș
te algoritmii de detec
ț
ie

a plăcu
ț
elor de înmatricul are. Recunoa
ș
terea caracterelor de pe pl acuta de înmatriculare reală

se face cu o eroare: R20MTX, acest lucru putand fi pus pe seama reflexiilor de lumina aflate

în imagine în zona segmentului, respectiv caracterul “A”. Acesta eroare se poate remedia

folosind un filtru adecvat acestui tip de condi
ț
ii de iluminare.

41

Capitolul 8

Concluzii. Îmbunătă
ț
iri
ș
i dezvoltări ulterioare

Detec
ț
ia
ș
i recunoa
ș
terea automată a plăcu
ț
elor de înmatriculare este un proces foarte

complex pentru care trebuie luate în calcul o multitudine de aspecte care
ț
in de mediul

înconjurător.

Acest sistem are la baza modulul de recunoa
ș
tere automată a plăcu
ț
elor de înmatriculare

openALPR, care este distribuit pe o platforma Open-source. Sistemul necesita unele

îmbunătă
ț
iri pentru a ajun ge într-o stare în care poate fi exploatat fără probleme:

1.
În primul rând este evident ca modulul are nevoie să fie antrenat pentru modelul de

numere de înmatriculare din România, acurate
ț
ea recunoa
ș
terii caracterelor de pe

plăcu
ț
ele de înmat riculare din România nefiind una deosebită. În acest moment pe

platforma

https://github.com/

pe branch-ul master al openALPR nu există niciun

pachet dedicat
ș
i antrenat pentru modelul românesc. Recunoa
ș
terea plăcu
ț
elor de

înmatriculare prezentate în acest proiect s-a făcut prin setarea parametrului <c>

(country) din func
ț
ia Alpr la valoarea <eu>, adică Europa. Caracteristicile plăcu
ț
elor

de înmatriculare din
ț
ările E.U., de
ș
i au multe lucruri în co mun, sunt totu
ș
i prea

generale pentru a ajunge la performan
ț
e înalte în ceea ce prive
ș
te identificarea

caracterelor. De aceea antrenarea modulului openALPR pe modelul românesc ar aduce

un spor de acurate
ț
e la detec
ț
ia plăcu
ț
elor
ș
i recunoa
ș
terea caracterelor.

2.
În urma testelor efectuate cu acest sistem am constatat importan
ț
a deosebită care

trebuie acordată camerei cu care se face achizi
ț
ia imaginilor. O cameră cu performan
ț
e

ridicate care are filtrele necesare implementate hardware asigură un plus de acurate
ț
e

ș
i robuste
ț
e sistemului.

3.
Deasemenea amplasarea camerei video într-o zonă ferită de reflexii luminoase prea

puternice, pozitionată perpendicular pe zona vizată pentru a fi procesată, la lungimea

ș
i înăl
ț
imea optimă, aduce un spor de performan
ț
ă sistemului.

4.
Dezvoltarea unei aplica
ț
ii care include o bază de date
ș
i o interfata grafica de unde pot

fi controlate principalele func
ț
iuni ar fi un plus pentru sistem.

5.
Realizarea
ș
i impl ementarea unui modul, care să permită sistemului detec
ț
ia
ș
i

recunoa
ș
terea num erelor de înmatriculare ale autovehiculelor cu regim special

(Poli
ț
ie, Ambulan
ț
ă , Pompieri) oferind astfel acces autom at în spa
ț
ii publice sau

private fără interven
ț
ia fizică a unei persoane.

42

Bibliografie

1.)

World Trade Center Bombing 1993, Wikipedia [1]

2.) https://en.wikipedia.org/wiki/1993_World_Trade_Center_bombing [2]

3.) September 11 attacks: https://en.wikipedia.org/wiki/September_11_attacks [3]

4.) November 2015 Paris attacks:


https://en.wikipedia.org/wiki/November_2015_Paris_attacks

[4]

5.) A. T. Schulz and R. Stiefelhagen, “ A Controlled Interactive Multiple Model Filter for

combined Pedestrian Intention Recognition and Path Prediction”,


https://ieeexplore.ieee.org/document/

6.)

https://www.robofun.ro/raspberry-pi-158/placa-raspberry-pi-4-model-b-4gb

[5]

7.) Constantin Vertan, Mihai Ciuc, “Tehnici fundamentale de Prelucrare
ș
i Analiza

Imaginilor” , Matrix Rom, Bucure
ș
ti 2007

8.) Stanciu I. R. , Molnar M. F. , “Sisteme de monitorizare
ș
i control în timp real”,

Ed: Eurostampa, 2013

9.)

https://www.raspberrypi.org/products/raspberry-pi-4-model-b/specifications/

[6]

10.)

http://tet.pub.ro/pages/Microprocesoare2/MP_CAP_16.pdf

,Concepte CISC
ș
i RISC [7]

11.)

https://www.raspberrypi.org/documentation/remote-access/vnc/

, Documentatie VNC

12.)

https://www.raspberrypi.org/documentation/configuration/raspi-config.md

[8]

13.) Steven F. Lott, “Python Essentials”, Ed: Packt Publishing, 2015

14.)

https://en.wikipedia.org/wiki/Python_(programming_language)

[9]

15.) Brian K., Jones, David M., Beazley, “Python Cookbook, Third Edition”, 2013

16.)

https://github.com/openalpr/openalpr

[10]

17.)

https://numpy.org

, Documenta
ț
ie NumPy [11]

18.)

https://www.scipy.org/about.html

, Documentatie SciPy [12]

19.)

About



, Documentatie Cpencv [13]

20.)

https://github.com/openalpr/openalpr/wiki/OpenALPR-Design

, Documentatie Design

OpenALPR [14]

21.) Ondrej Martinsky, “Algorithmic and Mathematical Principles of Automatic Number

Plate Recognition System”, 2007 [15]

22.)

https://ro.wikipedia.org/wiki/Raspberry_Pi

[16]

43

Similar Posts