CL-Eidos

un sistema di visione artificiale per lo sviluppo di applicazioni generiche

Descrizione

CL-Eidos: un sistema di visione artificiale per lo sviluppo di stazioni di visione dedicate al controllo di processo e i controlli di qualità.
Il software di visione CL-Eidos integra al suo interno tre unità principali: un motore di visione, un framework specializzato per lo sviluppo di sistemi di visione e un database di immagini.

Il motore di Visione (VIP)

- Il motore di visione si basa su di un virtual image processor (VIP), una macchina a registri ispirata alla metafora del microprocessore a registri ortogonali (come il 68000).
Il VIP opera come una normale CPU eseguendo il classico ciclo fetch, decode, execute, sotto il controllo di un programma scritto in un linguaggio assembler-like (V-Code).
A differenza dei microprocessori tradizionali, che si limitano a manipolare numeri binari eseguendo sequenze di operazioni aritmetico/logiche, il VIP opera sulle immagini, assunte come unità base dell'informazione eseguendo non solo calcoli matematici pixel per pixel, ma complesse trasformazioni geometriche e/o convoluzioni su scala locale o globale.
Sebbene il VIP operi preferibilmente sui suoi registri virtuali, gli unici cui si può fare riferimento nei calcoli aritmetico/logici, l'intera memoria della macchina ospite può essere vista come un unico array di celle di memoria, ognuna delle quali, al pari dei registri, può ospitare un'immagine di formato e dimensione arbitraria.
La disponibilità di un numero così elevato di registri-immagine libera il programmatore dalla necessità di riciclare continuamente gli stessi buffer, favorendo l'attitudine al salvataggio e al riutilizzo delle immagini ottenute come passi intermedi dell'elaborazione.
Questa prassi ha degli influssi benefici sulla qualità del software, sopratutto per quanto concerne la manutenzione e il debug.
La richiesta che gli operandi (sorgenti e destinazione) siano memorizzati in un registro garantisce l'integrità delle immagini manipolate, inducendo alla stesura di flussi facilmente intelligibili.
In secondo luogo, in fase di debug aumenta la probabilità che gli antecedenti di un'elaborazione difettosa siano ancora presenti (in un registro o in memoria) nel momento in cui si verifica il malfunzionamento, facilitando lo sviluppatore impegnato nella diagnostica, che potrà esaminarli immediatamente (evitando di essere costretto a modificare il codice per introdurre delle istruzioni di cattura e/o visualizzazione come avviene con altri programmi di visione).

Il database di immagini

- Il database di immagini è stato introdotto allo specifico scopo di coadiuvare l'utente impegnato nelle varie fasi di analisi,  sia in quelle richieste per lo studio di fattibilità e/o lo sviluppo di un'applicazione complessa, sia per la configurazione dei parametri di controllo del sistema di visione (setup) che precede la messa in linea della macchina.
Nei suddetti scenari la disponibilità di un motore di database è una tecnologia abilitante, indispensabile per lo sviluppo di procedure di active learning propedeutiche allo sviluppo di routine di auto-configurazione del sistema.
- Naturalmente un motore di visione non può funzionare da solo ma necessita di una infrastruttura di servizio che gli consenta di comunicare con il mondo esterno sia con l'hardware di visione che con gli attuatori, gli utenti locali e remoti, per non parlare della macchina fisica su cui gira.

Il Framework

Il framework, che può essere visto come una specie di sistema operativo di secondo livello che ha lo scopo di fornire una serie di servizi specializzati, indispensabili per il funzionamento della catena di visione, che non vengono forniti dal sistema operativo ospite.
Il framework, in particolare, fornisce un'infrastruttura concettuale costituita da un'insieme di specifiche cui debbono conformarsi i moduli che costituiscono il sistema, nonché un insieme di funzioni specializzate per la gestione della memoria, le eccezioni, la messa in sicurezza della macchina (attraverso lo spegnimento dei motori e dei componenti ad alta tensione, ecc.) e naturalmente le problematiche di real-time.
Il sistema, nel suo complesso, è stato progettato a partire dalle specifiche e dai servizi forniti dal framework secondo uno schema a buccia di cipolla, implementando un'architettura modulare facilmente espandibile, perché tutte le funzioni e tutti i componenti sono conformi a standard comuni.
Tutto ciò consente di far crescere il sistema arricchendolo di nuove funzionalità e/o aggiornarlo scrivendo semplicemente dei nuovi moduli da aggiungere o sostituire a quelli preesistenti.

Principali caratteristiche del software di visione CL-Eidos.

  • Supporto del polimorfismo: i registri virtuali oltre che le istruzioni V-Code sono progettati in modo da prescindere dalle caratteristiche specifiche delle immagini memorizzate o manipolate sia per quanto concerne la rappresentazione dei singoli pixel sia  l'organizzazione dell'immagine in termini delle sue componenti (piani, righe, colonne, pixel, componenti spettrali).
    Sono supportate, in particolare, le seguenti rappresentazioni dei pixel: bianco e nero (un bit per pixel), 4 bit per pixel, 256 livelli di grigio, 256 palette, interi con e senza segno a 8, 16, 32, 64 bit, numeri in virgola mobile (float e double), RGB24, RGB32, BGR24, BGR32.
    Per quanto concerne l'organizzazione delle immagini sono supportati i seguenti schemi: tiles (sequenze consecutive di componenti spettrali diverse), rows (righe di valori corrispondenti alla stessa componente spettrale alternati a righe di componenti spettrali diverse), planes (piani di componenti spettrali diverse).
  • Ricco corredo di funzioni studiate specificatamente per semplificare il debug delle applicazioni di visione artificiale.
  • Gestione delle problematiche di tempo reale.
  • Gestione della messa in sicurezza della macchina intesa come sistema fisico a tutela della incolumità del personale addetto, delle attrezzature e dei prodotti.
  • Gestione della tracciabilità.
  • Disponibilità 80 tipi di istruzioni V-Code diverse: aritmetico/logiche, trasformazioni geometriche e grafiche, filtri e convoluzioni, input/output di immagine, sincronizzazione da e verso la linea mediante PLC, salti condizionati e incondizionati, ecc.
  • Indipendenza dalla piattaforma: il software CL-Eidos è stato progettato per migrare facilmente da un contesto all'altro. E' stato  scritto in ANSI C evitando, per quanto possibile, il ricorso a routine di libreria sviluppate da terze parti, in modo da possedere il pieno controllo dei sorgenti in caso occorresse riscriverli o modificarli per adattarli ad un diverso ambiente. L'adozione di un'architettura fortemente modulare, organizzata a strati, ha  consentito di organizzare il programma in modo da confinare i componenti software che più probabilmente dovrebbero essere modificati nel caso di un eventuale porting agli estremi, in modo tale da  limitare lo sforzo richiesto per la migrazione. Una particolare cura è stata  dedicata alla tematica dell'interfacciamento con il sistema operativo, allo scopo di garantire che le routine di visione sviluppate impiegando le funzioni fornite dal CL-Eidos possano funzionare immediatamente, semplicemente ricompilando i sorgenti per il nuovo sistema operativo ospite senza richiedere altri interventi.





Case Studies




Copyright © 2011-2017 - Luigi D. CAPRA