EDA/SW/T&M
ADAS
53
- ELETTRONICA OGGI 460 - MARZO 2017
per la misura delle prestazioni, in termini di velocità di
elaborazione dati e accuratezza, devono essere atten-
tamente bilanciate con altri parametri di ottimizzazio-
ne, come ad esempio dimensioni del codice e dei dati,
occupazione di memoria (memory footprint), tempi di
latenza e consumi di potenza.
Il processo di sviluppo di un’applicazione di visione
embedded risulta composto da cinque fasi, come visi-
bile in figura 1.
Nel corso di questo articolo saranno brevemente illu-
strate le caratteristiche e le problematiche da affron-
tare nello sviluppo di algoritmi per il rilevamento del
superamento della corsia. Quindi l’attenzione sarà fo-
calizzata sull’implementazione e ottimizzazione degli
algoritmi relativi alle fasi 3 e 4 utilizzando DSP della
famiglia Tensilica Vision e la libreria XI per applicazio-
ni di visione artificiale ottimizzata per DSP.
Implementazione di un algoritmo LDWS robusto
Il sistema LDWS (Lane-Departure Warning System –
avvertimento del superamento della propria corsia di
marcia) è una funzione essenziale di un sistema ADAS
per la guida autonoma. Nella quasi totalità dei sistemi
LDWS è prevista una fase iniziale di rilevamento del se-
gno che delimita la corsia che può essere generalizzata
e semplificata seguendo questi passi fondamentali:
• Estrazione delle caratteristiche della strada.
• Post-elaborazione per la rimozione dei valori erratici
(in pratica molto al di fuori della norma).
• Filtraggio del tracciamento (tracking) e data fusion
(aggregazione dei dati).
L’accuratezza e l’affidabilità di un sistema LWDS di-
pende dalla precisione e dalla robustezza dell’algorit-
mo impiegato per il rilevamento della corsia che deve
prendere in considerazione un gran numero di fattori
- forme della corsia, non uniformità della struttura del
piano della superficie stradale, condizioni di illumina-
zione, zone d’ombra, ostruzioni e via dicendo – mentre
effettua il calcolo in real time mentre il veicolo è in mo-
vimento ad alta velocità. Nel corso dell’articolo verrà
proposto un algoritmo per il rilevamento del segno
della corsia che prevede numerose fasi di elaborazio-
ne della visione artificiale per migliorare l’affidabilità
del rilevamento stesso.
Come visibile nelle figure 2 e 3, viene utilizzato un fo-
togramma di un’immagine ripresa da una telecamera
che si trova a bordo del veicolo per ricavare una ROI
(Region of Interest) che contiene i segni che delimita-
no la corsia. Quindi viene eseguita una trasformazione
prospettica inversa basata sui parametri della teleca-
mera per far sì che i segni che delimitano la corsia di
trovino in una posizione relativamente parallela all’in-
terno dell’immagine. A questo punto vengono effettua-
te alcune operazioni di miglioramento dell’immagine
tra cui filtraggio, equalizzazione e impostazione delle
soglie, finalizzate a ridurre il rumore. Seguono quindi
le fasi di rilevamento dei segni della corsia e di sele-
zione che sfruttano la trasformata di Hough. Infine il
rilevamento viene migliorato median-
te tecniche di Tracciamento inter-
frame (tra due fotogrammi). L’algo-
ritmo è stato prototipato in MATLAB
(MathWorks) al fine di convalidarne
la funzionalità e le caratteristiche di
robustezza.
Mentre la prototipazione dell’algorit-
mo in MATLAB è un’operazione rela-
tivamente semplice, il porting (in altre
parole il trasferimento) delle diverse
fasi dell’algoritmo in un sistema em-
bedded real time non lo è affatto. A
causa della complessità dell’algorit-
mo, il codice C risultante e che ela-
bora in modo sequenziale i pixel dell’immagine non
è in grado di garantire la velocità richiesta da un’ap-
plicazione real time, a meno che non venga eseguito
su un server ad alte prestazioni che, ovviamente, non
può essere utilizzato in un sistema embedded a causa
delle dimensioni e dei consumi. Per risolvere il pro-
blema è stato utilizzato un DSP della famiglia Tensili-
ca Vision (disponibile sotto forma di IP) integrato in
un sistema di prototipazione basato su FPGA. Questo
processore sfrutta un’architetture DSP ad alte presta-
zioni che supporta elaborazioni e operazioni di load/
store su un data set SIMD (Single Instruction Multiple
Data) vettoriale a 64 vie. L’architettura codifica e invia le
Fig. 2 – Applicazione della trasformazione prospettiva inversa alla
regione di interesse (ROI)
Fig. 3 – Operazioni effettuate per aumentare la robustezza dell’algoritmo per il rilevamento
della corsia