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
că
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
să
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
să
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
că
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
să
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
să
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ă
să
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
că
î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
că
aceste
sisteme
ar
trebui
să
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.)
, 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
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMÂNT IOAN [610669] (ID: 610669)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
