INTERAZIONE E MULTIMEDIA E LABORATORIO A - LModulo LABORATORIO
Anno accademico 2024/2025 - Docente: FRANCESCO GUARNERARisultati di apprendimento attesi
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
Esercitazioni laboratoriali in Aula
Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato in precedenza, al fine di rispettare il programma previsto e riportato nel syllabus.
Prerequisiti richiesti
Frequenza lezioni
Contenuti del corso
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
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
Argomenti | Riferimenti testi | |
---|---|---|
1 | Introduzione a Processing | |
2 | Interazione utente e rilevamento input da mouse e da tastiera. | |
3 | Operazioni affini per il disegno. | |
4 | Classi e oggetti in Processing, ereditarietà e strutture dati. | |
5 | Elaborazione immagini, classe PImage e metodi. | |
6 | Implementazione algoritmi di elaborazione immagine. |
Verifica dell'apprendimento
Modalità di verifica dell'apprendimento
Lo studente dovrà implementare in aula degli sketch in Processing.
La prova è strutturata in modo che ad ogni studente sia attribuito un voto secondo il seguente schema:
La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.
- Non approvato: lo studente non ha acquisito i concetti di base e non è in grado di rispondere ad almeno il 60% delle domande né di svolgere gli esercizi.
- 18-23: lo studente dimostra una padronanza minima dei concetti di base, le sue capacità di collegamento dei contenuti sono modeste, riesce a risolvere semplici esercizi.
- 24-27: lo studente dimostra una buona padronanza dei contenuti del corso, le sue capacità di collegamento dei contenuti sono buone, risolve gli esercizi con pochi errori.
- 28-30 e lode: lo studente ha acquisito tutti i contenuti del corso ed è in grado di padroneggiarli compiutamente e di collegarli con spirito critico; risolve gli esercizi in modo completo e senza errori.
Esempi di domande e/o esercizi frequenti
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.