La rilevazione dei bordi è diventata un elemento fondamentale in quasi tutte le tecniche di visione artificiale utilizzate oggi in vari ambiti applicativi1. La rilevazione dei bordi rappresenta una fase di estrazione delle caratteristiche ed è responsabile del recupero di dettagli informativi e distintivi dalle immagini, applicabili in una vasta gamma di scenari2. I bordi all'interno di un'immagine indicano le regioni in cui si verifica un brusco cambiamento di intensità; pertanto, forniscono informazioni importanti e distintive riguardo all'immagine stessa. Questo processo facilita l'eliminazione di dettagli superflui e irrilevanti, conservando soltanto gli elementi essenziali e unici che possono essere ulteriormente elaborati per l'applicazione specifica.
L'importanza del rilevamento dei contorni è evidenziata dalle sue applicazioni in diverse attività, tra cui segmentazione delle immagini, rilevamento e riconoscimento di oggetti, estrazione di caratteristiche, miglioramento delle immagini, identificazione di oggetti, imaging medico, sorveglianza, automazione industriale, guida autonoma, realtà aumentata e robotica2,3,4,5,6, come mostrato in Figure 1.
Esistono diversi metodi per il rilevamento dei bordi, tra cui Sobel, Prewitt, Roberts, Canny e altri. Tra queste tecniche, il rilevamento dei bordi di Sobel si distingue per la semplicità di applicazione, la ridotta complessità di implementazione e l'elevata precisione nel rilevamento dei bordi3,4,5,6. I gradienti dell'immagine vengono determinati dall'algoritmo di edge detection di Sobel sia nella direzione orizzontale che verticale, utilizzando rispettivamente i kernel Gx e Gy, come mostrato di seguito2,4.
Gx evidenzia i bordi nella direzione ×, mentre Gy evidenzia i bordi nella direzione y12,13. Combinati insieme, essi definiscono completamente tutti i bordi in un'immagine6. Per applicare il rilevamento dei bordi di Sobel a un'immagine si utilizza la convoluzione con la matrice del kernel e la finestra scorrevole. Una finestra, ad esempio di dimensioni 3 per 3 pixel, viene estratta dall'immagine un'unità alla volta e convoluta con la matrice del filtro per ottenere il nuovo valore del pixel centrale. L'intera immagine viene elaborata in questo modo. Nel rilevamento dei bordi di Sobel vengono utilizzati due kernel di questo tipo: uno per estrarre i bordi nella direzione x e un altro per la direzione y. Per ottenere tutti i bordi, i due risultati vengono successivamente combinati. Il rilevamento dei bordi di Sobel produce risultati precisi e affidabili, che possono essere ulteriormente migliorati con alcune operazioni di pre-elaborazione4,5,15. L'intero processo di rilevamento dei bordi di Sobel è illustrato in Figura 2.
Sebbene tutta la letteratura riportata abbia contribuito significativamente al campo del rilevamento dei bordi, tutte le principali ricerche pubblicate hanno lavorato su risoluzioni di immagine basse, mentre il lavoro presentato in questo articolo opera su diverse risoluzioni di immagine, che variano da immagini a bassa risoluzione (256 × 256) fino alla risoluzione completa di immagini ad alta definizione (HD) (2560 × 1440). Di conseguenza, studiare l'implementazione hardware dell'algoritmo di rilevamento dei bordi di Sobel per diverse risoluzioni di immagine è fondamentale per comprendere l'efficienza dell'implementazione in scenari in tempo reale con risoluzioni di immagine variabili. L'Field Programmable Gate Array (FPGA) è stato riconosciuto come una piattaforma adeguata per implementazioni hardware, grazie alla sua idoneità allo sviluppo rapido di prototipi e ai vantaggi offerti dalla riconfigurabilità, che consente modifiche facili del progetto senza dover cambiare l'intera configurazione hardware6,7,8,9,10,11,12,13. Inoltre, gli FPGA offrono la possibilità di elaborazione parallela e pipeline; una volta ottimizzate le metriche di prestazione e validata la piattaforma, il progetto può procedere verso la produzione effettiva di circuiti integrati specifici per applicazioni (ASIC)14,15. Un'altra caratteristica importante degli FPGA è la loro riconfigurabilità, che consente ai progettisti di apportare modifiche al design del prodotto in qualsiasi momento senza dover sostituire alcun componente hardware. È sufficiente riprogrammare il chip, un'operazione che richiede poco tempo o sforzo, a condizione che il progettista abbia una buona conoscenza dei linguaggi di descrizione hardware come VHDL/Verilog4,6,13,16,17. Per l'analisi dell'implementazione su FPGA, i parametri principali considerati sono la velocità (frequenza massima), l'utilizzo delle risorse e l'efficienza energetica. Tabella 1, che illustra l'aumento della quantità di letteratura pubblicata nel settore degli FPGA, mostra come le pubblicazioni su FPGA siano evolute nel periodo compreso tra il 2006 e il 2024. È chiaro che il campo della ricerca sugli FPGA si è ora spostato verso applicazioni in tempo reale, realtà aumentata, elaborazione ai bordi della rete (edge computing) e altre applicazioni avanzate13,14,15,16,17,18,19,20,21,22,23.
Tabella 2 evidenzia i lavori presenti nella letteratura esistente relativi all'implementazione del rilevamento dei bordi di Sobel su FPGA dal 2020 al 2025. Tabella 2 riporta la scheda FPGA utilizzata, gli algoritmi implementati, la metodologia di progettazione, i risultati, le metriche, l'ambito applicativo e le sfide di ciascun articolo citato.
Gli autori4 hanno raccomandato l'utilizzo del metodo di rilevamento dei bordi con Sobel a 8 direzioni per aumentare l'accuratezza del rilevamento, tuttavia hanno riportato un consumo maggiore di risorse per la metodologia proposta. Navinkumar et al. utilizzano una tecnica per ridurre le operazioni matematiche complesse di moltiplicazione e radice quadrata coinvolte nel tradizionale rilevamento dei bordi di Sobel, risparmiando così risorse a bordo e migliorando la velocità9. Gli autori17 hanno descritto l'uso dell'algoritmo di rilevamento dei bordi di Sobel per identificare le corsie nei sistemi avanzati di assistenza alla guida. Il loro obiettivo era accelerare il rilevamento riducendo al contempo il tempo di elaborazione. Nel complesso, è stato suggerito che l'uso del rilevamento dei bordi rappresenti un metodo affidabile per l'estrazione della regione di interesse in futuro, il che potrebbe risultare molto utile in diverse applicazioni in cui è necessario estrarre l'area desiderata di un'immagine ignorando qualsiasi informazione non necessaria. Le sfide riportate comprendono complessivamente un elevato utilizzo di risorse e memoria, sensibilità al rumore, elevato costo computazionale e scalabilità limitata per immagini ad alta risoluzione4,5,6,11,12,13,21,22,23.
In questo lavoro, l'implementazione tradizionale dell'algoritmo di rilevamento dei bordi di Sobel è stata eseguita sulla scheda FPGA Ultra96-V2, per diverse risoluzioni di immagine che vanno da una risoluzione bassa di 256 × 256 fino alla risoluzione full high-definition di 2560 × 1440. Ultra96-V2 è una scheda che combina le capacità di programmabilità FPGA con l'elaborazione Arm ad alte prestazioni (Cortex-A53/R5), ideale per applicazioni ad elevate prestazioni. Questa scheda è stata rilasciata per la prima volta nel 2018 e utilizza il nodo tecnologico FinFET a 16 nm18.
Per garantire la riproducibilità, l'intera implementazione è stata eseguita utilizzando una toolchain standard composta da Vivado HLS 2019.2 per la High-Level Synthesis (HLS) e Vivado 2019.2 per il place-and-route, oltre all'immagine PYNQ rilasciata dalle risorse Ultra96-V2. Il codice HLS è stato utilizzato per ricavare l'IP (Intellectual Property) per il rilevamento dei bordi con filtro di Sobel, che è stato esportato e integrato nell'ambiente di progettazione Vivado. L' IP è stato implementato nella parte PL (Programmable Logic), mentre la parte PS (Processing System) dell'FPGA si è occupata del trasferimento dati e dei meccanismi di controllo. L'interfacciamento tra PS e PL è stato realizzato tramite il protocollo AXI. Tutte le metriche riportate—frequenza, utilizzo delle risorse e consumo energetico—sono state estratte dai rapporti post-implementazione, non dalle stime di HLS. Le impostazioni di implementazione sono rimaste costanti, e soltanto le risoluzioni delle immagini sono state modificate durante gli esperimenti.
I risultati significativi di questo lavoro riguardano il basso consumo di potenza, l'uso ridotto di risorse e l'elevata velocità. I dati indicano un utilizzo delle risorse a bordo inferiore al 20% (18% di tabelle di conversione (LUT), 11% di flip-flop (FF), 3% di memoria e 10% di DSP) per immagini ad alta risoluzione, dimostrando un'ampia disponibilità per integrare ulteriori elaborazioni su tali immagini, come richiesto in ogni sistema di visione artificiale, poiché il rilevamento dei contorni rappresenta soltanto una fase intermedia. Inoltre, la dissipazione di potenza è di circa 2 W e la frequenza operativa massima risulta pari a 144 MHz. I risultati mostrano che un aumento delle dimensioni delle immagini di circa 56 volte comporta un incremento dell'utilizzo delle risorse di soli circa il 20%. Anche la velocità e la dissipazione di potenza peggiorano soltanto di circa il 20%. Questa analisi esamina approfonditamente l'algoritmo da una prospettiva differente, mai riportata nella letteratura precedente, indicando quindi che l'implementazione è particolarmente adatta per applicazioni in tempo reale, senza necessità di limitare le immagini a dimensioni ridotte o bassa risoluzione, il che certamente ridurrebbe la quantità di informazioni necessarie nelle fasi successive al rilevamento dei contorni.
La novità di questo lavoro non risiede nell'algoritmo in sé, ma si concentra sulla valutazione delle prestazioni dell'algoritmo tradizionale di rilevamento dei bordi di Sobel a diverse risoluzioni d'immagine su moderne architetture FPGA eterogenee, sfruttando i vantaggi delle tecniche di implementazione basate su HLS. I principali contributi di questo articolo riguardano principalmente l'applicazione di una metodologia ibrida implementata su un FPGA, distribuendo efficacemente il carico di lavoro tra le sezioni PS e PL dell'architettura, consentendo così al progetto di adattarsi facilmente a diverse risoluzioni. Un altro contributo consiste nell'eseguire esperimenti per valutare come la scalabilità delle risorse vari al cambiare della risoluzione delle immagini, il che aiuta a comprendere le prestazioni in diverse configurazioni e per applicazioni differenti.