
Il making, se fatto bene, porta all’ottimizzazione di qualsiasi hardware ci capiti per le mani. Questo concetto vale per qualsiasi piattaforma e, soprattutto, vale anche per il software. Per eseguire un algoritmo di visione artificiale, ad esempio, si utilizza una workstation potente o una soluzione hardware specializzata progettata specificamente per questo tipo di lavoro. Al giorno d’oggi, tuttavia, anche i chip di elaborazione più piccoli possono essere utilizzati. Il recente progetto dell’utente Reddit luismi_kode, ad esempio, dimostra come un microcontrollore ESP32-S3 possa eseguire un algoritmo di rilevamento dei bordi quasi in tempo reale.

Per questo progetto, luismi_kode ha utilizzato un Kode Dot come base. Questo dispositivo include il chip ESP32-S3 e un display AMOLED da 2,13 pollici, il tutto in un unico piccolo dispositivo. Un modulo fotocamera basato su OV2640 è stato aggiunto alla build per acquisire un flusso di immagini. È stato codificato un algoritmo di rilevamento dei bordi Sobel per individuare tutti i bordi presenti nelle immagini in arrivo. Questi bordi vengono visualizzati sullo schermo del Kode Dot. Quando parliamo di “Bordi di Sobel” intendiamo specificatamente l’Operatore di Sobel, ovvero un algoritmo che elabora immagini digitali basandosi sul riconoscimento dei contorni. Dal punto di vista tecnico si tratta di un operatore differenziale, che approssima il valore del gradiente di una funzione che rappresenta la luminosità dell’immagine. In ogni punto dell’immagine, l’operatore di Sobel può corrispondere al vettore gradiente oppure alla norma del vettore stesso. L’algoritmo utilizzato dall’operatore di Sobel è basato sulla convoluzione dell’immagine con un piccolo filtro, separato e di valore intero, applicato sia in direzione verticale che orizzontale, ed è quindi “economico” in termini di potenza di calcolo necessaria. Il rovescio della medaglia, è che come ogni algoritmo troppo “grezzo”, non è molto preciso nell’approssimazione.
Il rilevamento dei bordi di Sobel non rientra esattamente nella stessa classe di algoritmi che, ad esempio, alimentano un veicolo a guida autonoma. Inoltre, le immagini sono state ridimensionate a una risoluzione di 160×120 pixel e convertite in scala di grigi prima dell’elaborazione. Ciò ha ridotto significativamente la complessità computazionale del problema e, di conseguenza, le risorse di calcolo necessarie per eseguire l’algoritmo. Ciononostante, osservare il chip ESP32 elaborare risultati di rilevamento dei bordi quasi in tempo reale è piuttosto impressionante. Viene da chiedersi cos’altro possa fare un ESP32-S3, ma la moltitudine di progetti basati su di esso risponde molto rapidamente alla domanda: tantissime cose, a patto di riuscire a ottimizzarle adeguatamente. Se vi occorre il codice da implementare, potete trovarlo su GitHub.
Iscriviti ai nostri gruppi Telegram
Link utili
- Arduino UNO R3
- Elegoo UNO R3
- Arduino Starter Kit per principianti
- Elegoo Advanced Starter Kit
- Arduino Nano
- Raspberry PI 5
- Raspberry PI 400
- Raspberry PI Pico
- Programmiamo il Pico