GenICam
# GenICam

GenICam (Generic Interface for Cameras) è una interfaccia di programmazione generica per applicazioni di machine vision. L'obiettivo dello standard è quello di separare la tecnologia utilizzata per l'interfaccia fisica della camera (come per esempio GigE Vision o Camera Link) dall'interfaccia applicativa presentata all'utente (API). GenICam è amministrato dalla European Machine Vision Association EMVA). Il lavoro sullo standard è iniziato nel 2003 e il primo modulo di GenICam, GenApi, è stato ratificato nel 2006 mentre il modulo finale, GenTL, è stato ratificato nel 2008.

Molte imprese dell'ambito industriale della machine vision hanno contribuito allo standard. Le compagnie maggiormente coinvolte nel progetto sono::

* Basler
* Baumer
* Allied Vision Technologies
* DALSA
* e2v semiconductors
* JAI Pulnix
* Leutron Vision
* Matrox Imaging
* MVTec Software
* National Instruments
* Pleora
* Stemmer Imaging

Grazie al numero di imprese coinvolte nel progetto GenICam e grazie ai benefici di interoperabilità che si spera di ottenere con il progetto, i costruttori di componenti per machine vision hanno già iniziato ad utilizzare lo standard nei loro prodotti. Tuttavia, le imprese che hanno contribuito a realizzare lo standard stanno seguendo un "approccio a due vie", sviluppando ancora SDK proprietari. È ancora da vedere se GenICam può sostituire tutti gli SDK development e raggiungere gli obbiettivi di interoperabilità e, possibilmente, prodotti di machine vision meno costosi.

GenICam è composto da tre moduli che aiutano a svolgere i compiti principali nel campo della machine vision in maniera generica. Questi moduli sono:

* GenApi: Utilizzando un file XML come descrittore, si configura la telecamera e si descrivono i dettagli per poterla controllare
* Standard Feature Naming Convention (SFNC): I nomi e tipi da utilizzarsi per caratteristiche comuni a tutte le telecamere, per raggiungere l'interoperabilità.
* GenTL: Questa è l'interfaccia a livello di trasporto per molte telecamere, acquisisce le immagini dalla telecamera e le passa all'applicazione.

GenICam fornisce supporto per cinque funzioni fondamentali:

* Configurare la telecamera: questa funzione può supportare una serie di parametri della telecamera come ad esempio la misura dei frame, la velocità di acquisizione, il formato dei pixel, il guadagno, l'offset, ecc...
* Acquisizione di immagini: questa funzione crea un canale d'accesso tra la telecamera e l'interfaccia utente, oltre ad inizializzare la ricezione delle immagini
* Interfaccia Grafica: questa funzione permette alle interfacce utente (GUI) di interagire fluidamente con le telecamere
* Trasmissione di dati extra: questa funzione permette l'invio di dati ulteriori oltre all'immagine stessa. Tipici esempi possono essere informazioni riguardo l'istogramma, il timestap, l'area di interesse nel frame, ecc...
* Gestione di eventi: questa funzione permette alle telecamere di parlare all'applicazione tramite un canale eventi.
