Pentru Robot Vision se lucrează de mai multe săptămâni și încă mai avem de lucru… :-s În continuare, va urma o scurtă descriere a ceea ce s-a realizat până acum.
Detectarea obiectelor folosind OpenCV
După ce am citit o cantitate enormă de documentație despre OpenCV, am reușit în sfârșit să realizăm o formă funcțională a unui algoritm care să poată detecta obiectele dintr-o imagine. O problemă mare a algoritmilor de detecție este acela că nu există algoritm care să funcționeze foarte bine. De exemplu, dacă se dorește detectarea marginilor dintr-o imagine, algoritmul va funcționa bine doar dacă între culoarea obiectului și cea a fundalului există o diferență mare de culoare. Dacă culorile sunt foarte asemănătoare, una sau mai multe margini nu vor fi detectate. Iar asta e o mare problemă dacă detectarea obiectelor se face după forma lor.
În cazul în care se dorește detectarea culorilor, problema apare atunci când există multe nuanțe ale aceleași culori, atunci unele nu vor putea fi detectate. Problema cea mai gravă este aceea că poate detecta culori care nu ar trebui să apară, de exemplu nuanțele culorii gri. Scrierea unui algoritm care să detecteze corect culorile, dar care e lent în ceea ce privește timpul de execuție, nu se poate folosi în aplicații în care se doreste detecția în timp real. Dificultatea în detectarea culorilor constă în modelele de culori care se folosesc: RGB (RED, GREEN, BLUE – fiecare culoare fiind formată din aceste trei, dar în diferite proporții), HSV (HUE, SATURATION, VALUE ) și altele, dar acestea două fiind cele mai folosite, fiecare având avantaje și dezavantaje.
În imaginile care vor urma vor fi câteva exemple de detectare a culorii și a marginilor, culoarea detectată fiind albastru.
În imaginea de mai sus, se poate observa cum s-a detectat obiectul de culoare albastră, dar și o portiune de culoare gri. Porțiunea cu rosu și verde este o încercare nereușită de detectare a unei forme pătratice.
Mai sus am reușit să detectăm un obiect care are patru colțuri. Dar, nici aici nu am reușit să eliminăm detectarea culorii gri.
Aici se poate vedea rezultatul unui algoritm de detecție a marginilor. Se poate vedea că nu a detectat toată marginea(în centru este un caiet și un pix..).
Pentru detectarea unei cutii poștale se va aplica următorul algoritm:
- se detectează culoarea, iar în imaginea nouă vor fi două culori, culoarea obiectului, respectiv negrul de pe fundal
- se vor detecta marginile din imaginea nouă
- se detectează obiectele a căror formă se potrivește cu forma unei cutii poștale
Un mic exemplu :
















