Seguici su
Cerca

INTERAZIONE E MULTIMEDIA E LABORATORIO M - Z

Anno accademico 2019/2020 - 2° anno - Curriculum A e Curriculum B
Docenti Crediti: 9
Organizzazione didattica: 225 ore d'impegno totale, 153 di studio individuale, 36 di lezione frontale, 24 di esercitazione, 12 di laboratorio
Semestre:

Obiettivi formativi

  • INTERAZIONE E MULTIMEDIA

    Obiettivi formativi generali dell'insegnamento in termini di risultati di apprendimento attesi.

    Conoscenza e capacità di comprensione (knowledge and understanding): l'obiettivo del corso è quello di far acquisire conoscenze che consentano allo studente di comprendere i meccanismi teorici e fisici che stanno alla base del sistema visivo umano, della formazione ed elaborazione delle immagini digitali, del miglioramento della qualità visiva delle immagini digitali.

    Capacità di applicare conoscenza e comprensione (applying knowledge and understanding): lo studente acquisirà le competenze necessarie per acquisire, editare, comprimere e salvare una immagine digitale.

    Autonomia di giudizio (making judgements): Attraverso esempi in aula lo studente sarà messo nelle condizioni di comprendere se le soluzioni da lui proposte soddisfano un certo grado di qualità.

    Abilità comunicative (communication skills): lo studente acquisirà le necessarie abilità comunicative e la proprietà di linguaggio tecnico nell'ambito del settore Multimediale.

    Capacità di apprendimento (learning skills): il corso si propone, come obiettivo, di fornire allo studente le necessarie metodologie teoriche per poter affrontare e risolvere autonomamente nuove problematiche che dovessero sorgere durante una attività lavorativa. A tale scopo diversi argomenti saranno trattati a lezione coinvolgendo lo studente nella ricerca di possibili soluzioni a problemi reali.

  • LABORATORIO

    Obiettivi formativi generali dell'insegnamento in termini di risultati di apprendimento attesi.

    Conoscenza e capacità di comprensione (knowledge and understanding): l'obiettivo del modulo di laboratorio è quello di far acquisire conoscenze sulle modalità di programmazione per sistemi che richiedano un certo grado di interazione. Inoltre, verranno fornite nozioni di programmazione che consentiranno allo studente di progettare soluzioni che richiedano l’elaborazione di immagini digitali.

    Capacità di applicare conoscenza e comprensione (applying knowledge and understanding): nel corso si studierà il linguaggio di programmazione Processing, software e linguaggio improntato su Java che servirà a fare pratica con le nozioni teoriche.

    Autonomia di giudizio (making judgements): Attraverso l’implementazione in aula lo studente sarà messo nelle condizioni di comprendere se le soluzioni da lui proposte soddisfano un certo grado di qualità.

    Abilità comunicative (communication skills): lo studente acquisirà le necessarie abilità comunicative e la proprietà di linguaggio tecnico nell'ambito del settore Multimediale e nella programmazione di soluzioni ad esso relative.

    Capacità di apprendimento (learning skills): il corso si propone, come obiettivo, di fornire allo studente le necessarie metodologie pratiche per poter affrontare e risolvere autonomamente nuove problematiche che dovessero sorgere durante una attività lavorativa. A tale scopo diversi argomenti saranno trattati a lezione coinvolgendo lo studente nella ricerca di possibili soluzioni a problemi reali.


Modalità di svolgimento dell'insegnamento

  • INTERAZIONE E MULTIMEDIA

    Didattica Frontale

    Esercitazioni laboratoriali in Aula

  • LABORATORIO

    Didattica Frontale

    Esercitazioni laboratoriali in Aula


Prerequisiti richiesti

  • INTERAZIONE E MULTIMEDIA

    Buona conoscenza della programmazione di base. E' sufficiente aver superato il corso di programmazione I.

  • LABORATORIO

    Buona conoscenza della programmazione di base. E' sufficiente aver superato il corso di programmazione I e II.


Frequenza lezioni

  • INTERAZIONE E MULTIMEDIA

    E' fortemente consigliata la presenza alle lezioni.

  • LABORATORIO

    E' fortemente consigliata la presenza alle lezioni.


Contenuti del corso

  • INTERAZIONE E MULTIMEDIA

    Introduzione alle immagini digitali

    Formazione della immagini nell’occhio umano

    Equazione della lente sottile

    Illusioni ottiche

    I sensori digitali

    Il Bayer pattern

    Color interpolation

    Immagini Raster e immagini vettoriali

    Rappresentazione delle immagini raster

    Campinamento

    Quantizzazione

    Aliasing

    Risoluzione delle immagini digitali

    Interpolazione replication, bilineare e bicubica

    Il PSNR

    Il colore

    Gli spazi di colore RGB, CMY, HSV, Munsell, YUV, YCbCr

    Le immagini indicizzate e le palette

    Il reindexing

    L’istogramma di una immagine

    Le operazioni puntuali e le LUT

    Bit-planes

    Operatori lineari e invarianti per traslazione

    Noise reduction

    Edge detection

    Dominio spaziale

    Dominio delle frequenze

    Trasformata di Fourier

    La convoluzione e il teorema della convoluzione

    Compressione lossy e lossless

    Teorema di Shannon per la compressione

    Codifica di Huffman

    Lo standard Jpeg

  • LABORATORIO

    Introduzione a Processing

    • metodi principali e variabili principali: settings(), setup(), draw() e frameRate, width, heigth, ecc…;
    • principali primitive di disegno ellipse(), rect(), line(), bezier(), beginShape(), ecc… e modificatori ellipseMode(), rectMode(), ecc…
    • tipo color e metodo color().

    Interazione utente e rilevamento input da mouse e da tastiera

    • variabili mousePressed, keyPressed, mouseButton, key, keycode;
    • metodi mousePressed(), keyPressed(), mouseReleased(), mouseClicked().

    Operazioni affini per il disegno:

    • Metodi rotate(), shearX(), shearY(), translate(), applyMatrix() più pushMatrix() e popMatrix().

    Classi e oggetti in Processing, ereditarietà e strutture dati.

    Elaborazione immagini, classe PImage e metodi;

    • metodi Processing: loadImage(), createImage(), copy(), red(), green(), blue(), saveFrame();
    • metodi e variabili di PImage: save(), get(), set(), loadPixels(), updatePixels(), pixels, ecc…..

    Implementazione algoritmi di elaborazione immagine

    • quantizzazione uniforme e logaritmica;
    • interpolazione replication e calcolo PSNR;
    • operazioni puntuali: negativo, logaritmo e gamma;
    • stretching dell’istogramma e equalizzazione;
    • operazioni affini per l’immagine: rotazione, scaling, shear;
    • operatori locali di rango: mediano, massimo e minimo;
    • operatori locali lineari e invarianti per traslazione applicati mediante convoluzione: sobel, prewitt, media N box, ecc…;
    • estrazione bitplane.

Testi di riferimento

  • INTERAZIONE E MULTIMEDIA

    Fondamenti di Image Processing di S. Battiato e F. Stanco - Ediargo

    ELABORAZIONE DELLE IMMAGINI DIGITALI, Terza Edizione, Rafael C. Gonzalez, Richard E. Woods, Ediz. Pearson, Prentice Hall

  • LABORATORIO

    Documentazione ufficiale di Processing: https://processing.org/reference/

    “Algorithms for Visual Design Using the Processing Language” - Kostas Terzidis - Wiley Publishing.

    “Learning Processing: A Beginner's Guide to Programming Images, Animation, and Interaction” - Daniel Shiffman - Morgan Kaufmann Publishers Inc., San Francisco, CA, USA.

    “Getting Started with Processing” - Casey Reas and Ben Fry - Make Books, Sebastopol, CA.


Programmazione del corso

INTERAZIONE E MULTIMEDIA
 ArgomentiRiferimenti testi
1La percezione visiva, Acquisizione delle immagini, campionamento e quantizzazione, strumenti matematici usati nella elaborazione delle immaginiCapitolo 2 di "Elaborazione delle Immagini Digitali"  
2Istogrammi, filtraggi spaziali, Smoothing Capitolo 3 di "Elaborazione delle Immagini Digitali"  
3Filtraggio nel dominio delle frequenza, trasformata di Fourier, Filtraggi nel dominio della frequenza Capitolo 4 di "Elaborazione delle Immagini Digitali"  
4Rumore, filtraggio spaziale Capitolo 5 di "Elaborazione delle Immagini Digitali"  
5Spazi coloreCapitolo 6 di "Elaborazione delle Immagini Digitali"  
6Compressione delle immagini Fondamenti di Image Processing  
LABORATORIO
 ArgomentiRiferimenti testi
1Introduzione a Processing 
2Interazione utente e rilevamento input da mouse e da tastiera 
3Operazioni affini per il disegno 
4Classi e oggetti in Processing, ereditarietà e strutture dati 
5Elaborazione immagini, classe PImage e metodi 
6Implementazione algoritmi di elaborazione immagine 

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

  • INTERAZIONE E MULTIMEDIA

    Occorre superare le seguenti prove:

    1. esame scritto

    2. Colloquio orale

     

    E' prevista una prova in itinere nel periodo di sospensione delle lezioni per prove in itinere previsto dal Corso di Laurea. Le date sono riportate su http://web.dmi.unict.it/corsi/l-31/calendario-didattico

  • LABORATORIO

    Esame di laboratorio


Esempi di domande e/o esercizi frequenti

  • INTERAZIONE E MULTIMEDIA

    le domande nell'esame scritto sono a risposta aperta. Ne riporto un paio come esempio.

    1. L’operatore “potenza” è puntuale, locale o globale? Che significa? Tale operatore, in genere, schiarisce o incupisce l’immagine? Applicare l’operatore potenza ^2 alla matrice di seguito riportata. Infine normalizzare linearmente tra 0 e 255 la matrice risultato.

     

    56

    45

    11

    67

    100

    232

    0

    129

    50

     

     

    1. Quali sono le caratteristiche fondamentali della codifica di Huffman? Costruire la codifica di Huffman per i simboli che compongono la stringa “esame per esame”.
    2. Esercizio di Processing:
      Si implementino in Processing le seguenti funzioni con le caratteristiche dichiarate:
      - imMean() – Deve avere come parametro di input un’immagine RGB. L’output della funzione è un colore RGB, ottenuto dalla media dei colori di ogni pixel che costituiscono l’immagine di input. Per media tra colori RGB, si intende la media canale per canale.
      - regionMean () – Deve avere come parametro di input un’immagine RGB, e tre interi x, y e n. L’output deve essere un colore, ottenuto utilizzando la funzione imMean() sulla sottoimmagine centrata in x e y, di dimensione n × n. Lo studente può gestire come preferisce la situazione in cui la sottoimmagine include regioni esterne all’immagine originale.
      Si implementi uno sketch Processing in cui:
      - Si apre un’immagine RGB di dimensioni 512×512 (oppure si ridimensiona in modo che diventi di dimensioni 512×512) e una finestra di dimensioni 1024×512, si inizializza inoltre una variabile K con valore pari a 10 moltiplicato per l’ultima cifra del numero di matricola dello studente +1.
      - In ogni momento, durante l’esecuzione dello sketch, nella parte sinistra della finestra si visualizza l’immagine originale. Inoltre viene applicata la funzione regionMean(), passando come parametri di input l’immagine originale, x e y pari alle coordinate del pixel dell’immagine originale su cui si trova il mouse in quel momento, e infine il valore K. Nella parte destra della finestra si visualizza un rettangolo di dimensioni 512×512, del colore restituito dalla funzione regionMean() applicata come descritto sopra. Attenzione! Se le coordinate x e y sono tali che l’intorno includa regioni esterne all’immagine, queste coordinate vanno riportate entro i limiti prima di chiamare regionMean().
      - Inoltre, deve essere sempre mostrato un quadrato di dimensione K × K, senza colore di riempimento e dal bordo di un colore a scelta dello studente, che permetta di capire qual è la regione che in quel momento è considerata nel calcolo della media.
      - Ogni volta che viene premuto il tasto ‘+’ il valore di K aumenta di 10, mentre alla pressione del tasto ‘-’ viene decrementato di 10. Si limiti comunque questo valore tra un minimo di 10 e un massimo di 250.
  • LABORATORIO

    a) [10] Implementare una classe Ball con le seguenti caratteristiche: la classe è identificata da una posizione, da un raggio R e da una velocità sy lungo y. Di default sy=5. Appare come un cerchio rosso, senza bordi di raggio R. Ha un metodo per cambiare la sua posizione lungo l’asse y di un valore pari a sy per ciclo di draw. Quando il centro di Ball tocca il bordo superiore o inferiore della finestra la sua velocità cambia segno.

     

    b) [5] Estendere tramite ereditarietà la classe Ball definendo HyperBall. HyperBall differisce da Ball poiché possiede anche un attributo colore – di default blu. Deve avere un metodo che controlla se il puntatore del mouse si trova all’interno della circonferenza che lo rappresenta e, se ciò accade, il colore di HyperBall viene modificato in un colore casuale.

     

    [OBBLIGATORIO PER VALUTARE I PUNTI PRECEDENTI]

    Alla pressione di “R” o “r” lo sketch viene resettato. Implementare uno sketch in cui si apre una finestra di dimensioni 512×256. Ad ogni ciclo di draw la finestra viene aggiornata.

     

    Per rendere (a) valutabile - Nella metà sinistra istanziare un oggetto di tipo Ball che si muove in base al comportamento definito. La posizione iniziale è casuale e compresa nella metà sinistra della finestra, mentre il raggio è 40.

     

    Per rendere (b) valutabile - Nella parte destra della finestra va istanziato un oggetto di tipo HyperBall con le stesse caratteristiche al punto (a); la differenza è che il colore cambia se il puntatore del mouse vi passa sopra.