Integrazione della visione in un sistema di automazione globale Relatore:Candidato: Giuseppe MengaOctavi Estapé Ortega Relatore:Candidato: Giuseppe MengaOctavi Estapé Ortega
Architettura del Software – centralizzata – gerarchica Epoca della Computer Integrated Manufacturing (CIM) Robot Inspection Machine Part Buffer Inspection Machine Robot Cart Robot Conveyor Milling Station Inspection Station Work Station Cell 1Cell N Machine Shop Assembly Shop Facility Equipment Machining Measurement Handing Transport Storage Work Station Setup Issue equipment commands Takedown Cell Task Analysis Batch Management Scheduling Dispatching Monitoring Shop Task Scheduling Resource Allocation Facility Information Management Manufacturing Management Production Management
Machine WorkCell Controller Telecamera Centro di controllo BrokerFacilitatorTelecamera Robot registrazione Architettura di software – distribuita – non centralizzata Global Automation Platform (GAP)
JavaJava Creato da Sun Microsystems Creato da Sun Microsystems Orientato ad oggetti Orientato ad oggetti Interpretato Interpretato Indipendente dalla piattaforma Indipendente dalla piattaforma Robusto garbage collector Robusto garbage collector Ideato per la rete Ideato per la rete Creato da Sun Microsystems Creato da Sun Microsystems Orientato ad oggetti Orientato ad oggetti Interpretato Interpretato Indipendente dalla piattaforma Indipendente dalla piattaforma Robusto garbage collector Robusto garbage collector Ideato per la rete Ideato per la rete Altri componenti della GAP sono implementati in Java
Java Media Framework (JMF) Per la cattura, elaborazione, trasmissione ed archiviazione di flussi audio e video Per la cattura, elaborazione, trasmissione ed archiviazione di flussi audio e video Accelerazione nativa Accelerazione nativa Estensibile “Effect” rilevamento oggetti Estensibile “Effect” rilevamento oggetti Trasmissione usando Real-time Transport Protocol (RTP) Trasmissione usando Real-time Transport Protocol (RTP) Per la cattura, elaborazione, trasmissione ed archiviazione di flussi audio e video Per la cattura, elaborazione, trasmissione ed archiviazione di flussi audio e video Accelerazione nativa Accelerazione nativa Estensibile “Effect” rilevamento oggetti Estensibile “Effect” rilevamento oggetti Trasmissione usando Real-time Transport Protocol (RTP) Trasmissione usando Real-time Transport Protocol (RTP)
Java Media Framework (JMF) ProcessorDataSource
Java Media Framework (JMF) ProcessorDataSource Processor Internet
PrototipiPrototipi Trasmissione dell’immagine Trasmissione dell’immagine Elaborazione dell’immagine Elaborazione dell’immagine Trasmissione dell’immagine Trasmissione dell’immagine Elaborazione dell’immagine Elaborazione dell’immagine
Prototipo di trasmissione dell’immagine DataSource Processor Internet DataSourceProcessor Internet
Prototipo di trasmissione dell’immagine Realizza la trasmissione usando il Real-time Transport Protocol (RTP) Realizza la trasmissione usando il Real-time Transport Protocol (RTP) Due formati per RTP: Due formati per RTP: Realizza la trasmissione usando il Real-time Transport Protocol (RTP) Realizza la trasmissione usando il Real-time Transport Protocol (RTP) Due formati per RTP: Due formati per RTP: JPEG JPEG H.263 H.263 JPEG JPEG H.263 H.263
JPEGJPEG Risoluzione Fattore di Bit rate qualità (kbps) 320x x240 0, x240 0, x x x144 0, x Algoritmo semplice Algoritmo semplice Ridotta elaborazione Ridotta elaborazione La rapidità di La rapidità di movimento non movimento non incide sulla qualità incide sulla qualità Prototipo di trasmissione dell’immagine
H.263H.263 A 24 fps Risoluzione Bit rate (kbps) 352x x Prototipo di trasmissione dell’immagine Algoritmo più complesso Algoritmo più complesso Calcolo e qualità variabili dipendendo dalla rapidità di movimento Calcolo e qualità variabili dipendendo dalla rapidità di movimento Carica meno la rete Carica meno la rete
JPEGJPEG Risoluzione Fattore di Bit rate qualità (kbps) 320x x240 0, x x x H.263H.263 La qualità dipende di:La qualità dipende di: - parametri- parametri - rapidità di movimento Il numero di bit trasmessi per fotogramma dipende diIl numero di bit trasmessi per fotogramma dipende di - parametri- fisso La quantità di calcolo dipende diLa quantità di calcolo dipende di - fissa- parametri - rapidità di movimento A 24 fps Risoluzione Bit rate (kbps) 352x x Prototipo di trasmissione dell’immagine
Prototipo di elaborazione dell’immagine DataSourceProcessor Eventi
ProcessorProcessor ABAB ABAB Demultiplexer Multiplexer BABA EffectCodec Prototipi di elaborazione dell’immagine
Rilevano:Rilevano: – Colori definibili dall’utente – Movimento nell’immagine Generano Eventi per altre applicazioni Generano Eventi per altre applicazioni Due prototipi: Due prototipi: – Usando Java Advanced Imaging (JAI) – Usando Java puro (senza usare JAI) Rilevano:Rilevano: – Colori definibili dall’utente – Movimento nell’immagine Generano Eventi per altre applicazioni Generano Eventi per altre applicazioni Due prototipi: Due prototipi: – Usando Java Advanced Imaging (JAI) – Usando Java puro (senza usare JAI)
Zone di rilevamento Prototipi di elaborazione dell’immagine
Definizione dei colori Prototipi di elaborazione dell’immagine
Java Advanced Imaging (JAI) Gran varietà di operazioni per l’elaborazione delle singole immagini Gran varietà di operazioni per l’elaborazione delle singole immagini Uso semplice Uso semplice Accelerazione nativa Accelerazione nativa Estensibile Baricentro Estensibile Baricentro Applicato in immagini satellitari, mediche, ecc. Applicato in immagini satellitari, mediche, ecc. Gran varietà di operazioni per l’elaborazione delle singole immagini Gran varietà di operazioni per l’elaborazione delle singole immagini Uso semplice Uso semplice Accelerazione nativa Accelerazione nativa Estensibile Baricentro Estensibile Baricentro Applicato in immagini satellitari, mediche, ecc. Applicato in immagini satellitari, mediche, ecc. Prototipo di elaborazione dell’immagine usando JAI
Elaborazione con JAI Crop Scale ColorConvert BandSelect(I)BandSelect(H)BandSelect(S) Binarize(A)Binarize(B) Not And And And Crop Erode Dilate Baricentro OldImage Subtract AddConst(127) DivideByConst(2) Crop NewImage OldImage Prototipo di elaborazione dell’immagine usando JAI
Eventi generati Prototipo di elaborazione dell’immagine usando JAI
Problemi dell’uso di JAI Catena di operazioni lunga meno di 7 fotogrammi per secondo Catena di operazioni lunga meno di 7 fotogrammi per secondo Non esiste la possibilità di riutilizzare lo spazio di memoria di vecchie immagini Non esiste la possibilità di riutilizzare lo spazio di memoria di vecchie immagini – Creazione di un’immagine per ogni operazione basica – Uso del garbage collector per liberare la memoria – Il garbage collector provoca pause nell’esecuzione del programma. Con alcuni parametri si può modificare la lunghezza e frequenza delle pause, esempi: Pausa più corta: 0.29s (ogni fotogramma) Pausa più corta: 0.29s (ogni fotogramma) Pausa di 0.64s ogni 36 fotogrammi Pausa di 0.64s ogni 36 fotogrammi Catena di operazioni lunga meno di 7 fotogrammi per secondo Catena di operazioni lunga meno di 7 fotogrammi per secondo Non esiste la possibilità di riutilizzare lo spazio di memoria di vecchie immagini Non esiste la possibilità di riutilizzare lo spazio di memoria di vecchie immagini – Creazione di un’immagine per ogni operazione basica – Uso del garbage collector per liberare la memoria – Il garbage collector provoca pause nell’esecuzione del programma. Con alcuni parametri si può modificare la lunghezza e frequenza delle pause, esempi: Pausa più corta: 0.29s (ogni fotogramma) Pausa più corta: 0.29s (ogni fotogramma) Pausa di 0.64s ogni 36 fotogrammi Pausa di 0.64s ogni 36 fotogrammi Prototipo di elaborazione dell’immagine usando JAI
Elaborazione con Java puro (senza usare JAI) Una sola operazione specifica per l’elaborazione Una sola operazione specifica per l’elaborazione Non riutilizabile Non riutilizabile Operazione molto semplice (meno qualità che JAI) Operazione molto semplice (meno qualità che JAI) Sufficientemente veloce, esempi: Sufficientemente veloce, esempi: – Rilevando 1 colore 24.2 frame per secondo – Rilevando 50 colori diversi 6.3 frame per secondo – Rilevare 7 colori e movimento 14 frame per secondo Una sola operazione specifica per l’elaborazione Una sola operazione specifica per l’elaborazione Non riutilizabile Non riutilizabile Operazione molto semplice (meno qualità che JAI) Operazione molto semplice (meno qualità che JAI) Sufficientemente veloce, esempi: Sufficientemente veloce, esempi: – Rilevando 1 colore 24.2 frame per secondo – Rilevando 50 colori diversi 6.3 frame per secondo – Rilevare 7 colori e movimento 14 frame per secondo Prototipo di elaborazione dell’immagine con Java puro
Eventi generati Prototipo di elaborazione dell’immagine con Java puro Con JAI:
Prototipo di elaborazione dell’immagine Classi per la programmazione
ConclusioniConclusioni Java Media Framework è una buona libreria per la cattura, elaborazione e trasmissione delle immagini Java Media Framework è una buona libreria per la cattura, elaborazione e trasmissione delle immagini Java Advanced Imaging può essere utile per applicazioni di alta qualità ma a bassa velocità Java Advanced Imaging può essere utile per applicazioni di alta qualità ma a bassa velocità Nel futuro possono essere implementati servizi per la GAP basati su JMF Nel futuro possono essere implementati servizi per la GAP basati su JMF Java Media Framework è una buona libreria per la cattura, elaborazione e trasmissione delle immagini Java Media Framework è una buona libreria per la cattura, elaborazione e trasmissione delle immagini Java Advanced Imaging può essere utile per applicazioni di alta qualità ma a bassa velocità Java Advanced Imaging può essere utile per applicazioni di alta qualità ma a bassa velocità Nel futuro possono essere implementati servizi per la GAP basati su JMF Nel futuro possono essere implementati servizi per la GAP basati su JMF