Blog

Visione artificiale con OpenCV: insegnare a un robot a vedere

Alessandro Panait·

OpenCV e' la libreria standard per la visione artificiale. Prende un frame della telecamera, una griglia di pixel, e ti aiuta a estrarre cio' che conta: una linea, un marcatore, un oggetto. Ecco le idee che userai di continuo.

Colore: ragiona in HSV, non RGB

Per trovare "il marcatore verde" o "la linea nera", filtri per colore. Ma l'RGB e' pessimo per questo perche' mescola luminosita' e colore. L'HSV (Hue, Saturation, Value) separa il colore in se' da quanto e' luminoso, il che rende il filtraggio molto piu' robusto alla luce.

hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
mask = cv2.inRange(hsv, low_green, high_green)

Il risultato e' una maschera bianco e nero: bianco dove c'e' il colore, nero altrove.

Contorni: dai pixel alle forme

Una volta ottenuta una maschera, i contorni trovano i bordi delle macchie. Da un contorno misuri area (e' abbastanza grande da contare?), posizione (dov'e'?) e orientamento (che angolo?). E' cosi' che un robot trasforma "dei pixel verdi" in "un marcatore a sinistra, quindi giro a sinistra".

Pulizia

Le maschere vere sono sporche. Due operazioni sistemano quasi tutto: erode toglie i puntini di rumore, dilate riempie i buchi piccoli. Un rapido erode-poi-dilate rende le macchie solide e affidabili.

La realta' della visione

La sfida piu' grande non e' il codice, e' la luce. Lo stesso verde sembra diverso con luci diverse, quindi devi calibrare gli intervalli di colore sull'ambiente vero, e spesso aggiungere la tua illuminazione per costanza. Per rilevare cose complesse come oggetti in un'area aperta, i team usano sempre piu' una piccola rete neurale invece di regole di colore fatte a mano, perche' si adatta meglio alle scene disordinate del mondo reale.

Commenti (0)