title: GenICam
text: # 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.
  