EDI+VA · Esercizio di Programmazione

EP02_01 — ☀️ Regolazione di Luminosità e Contrasto

2.12.1 EP02_01 ☀️ Regolazione di Luminosità e Contrasto

In questa attività, l’obiettivo è implementare un operatore puntuale per la trasformazione lineare di intensità, applicando la regolazione dinamica di luminosità e contrasto su un’immagine digitale.

2.12.1.1 📋 Linee Guida di Implementazione

L’algoritmo deve seguire il flusso di esecuzione di seguito:

  1. Dimensioni: Leggere gli interi \(L\) (righe) e \(C\) (colonne) della matrice.
  2. Parametri: Leggere il valore reale \(\alpha\) (fattore di contrasto) e l’intero \(\beta\) (fattore di luminosità).
  3. Dati: Leggere i valori interi della matrice originale.
  4. Mappatura: Per ogni pixel \(p\), calcolare il nuovo valore \(p'\) tramite l’equazione:

\[p' = \text{clip}(\text{round}(\alpha \cdot p + \beta))\]

  1. Output: Visualizzare la matrice risultante con le dimensioni \(L \times C\).

2.12.1.2 📌 Vincoli Computazionali

  • Arrotondamento (Round): Si applica l’arrotondamento matematico all’intero più vicino prima della conversione di tipo.
  • Saturazione (Clipping): I valori devono essere limitati all’intervallo \([0, 255]\) per preservare lo standard a 8 bit:

\[\text{clip}(x) = \max(0, \min(255, x))\]

  • Simulazione: L’effetto dei parametri \(\alpha\) e \(\beta\) sulla correzione istogrammatica può essere osservato nella Figura 2.12.

2.12.1.3 🧠 Fondamenti Teorici

Le modifiche alterano l’istogramma dell’immagine per regolare il profilo di illuminazione e la distinzione tonale.

Parametro Funzione Impatto Visivo
\(\alpha\) (Alpha) Scalare Modula il Contrasto. Se \(\alpha > 1\), espande l’istogramma; se \(0 \le \alpha < 1\), lo comprime.
\(\beta\) (Beta) Additiva Modula la Luminosità. Se positivo, trasla l’istogramma verso destra; se negativo, verso sinistra.
\(\text{clip}\) Limitatore Restringe la gamma dinamica, prevenendo errori di underflow e overflow.

2.12.1.4 📦 Specifica di Input e Output (VPL)

Input:

  • Riga 1: Intero \(L\).
  • Riga 2: Intero \(C\).
  • Riga 3: Valori di alpha (\(\alpha\)) e beta (\(\beta\)).
  • Righe successive: Elementi numerici della matrice originale.

Output:

  • Matrice trasformata strutturata in \(L\) righe e \(C\) colonne.

2.12.1.5 📌 Esempi

La tabella seguente presenta un esempio pratico del comportamento atteso dell’algoritmo, evidenziando l’azione degli operatori di arrotondamento e saturazione.

Input Output Osservazione
1
4
1.5 -30
0 100 180 255
0 120 240 255 Si noti l’effetto di saturazione sull’ultimo pixel

Esecuzione dei Test

Per valutare i test, eseguire TestSuite("EP02_01.extensão").run() in una nuova cella, sostituendo l’estensione con quella del linguaggio utilizzato (.py, .java, .c, .cpp, .js o .r). Il sistema scarica i casi di test da GitHub, esegue il programma e calcola automaticamente il voto.

☀️ Simulatore EP02_01: Regolazione di Luminosità e Contrasto Lineare p' = clip(α·p + β)

Regola i parametri di contrasto (α) e luminosità (β) per applicare la trasformazione puntuale di intensità e osserva il troncamento della saturazione nell'intervallo [0, 255].

1.0
0
Input Originale (p)
Risultato Trasformato (p')
Formula applicata: clip( round(1.0 · p + (0)) )
Figura 2.12: Simulatore EP02_01: Regolazione di Luminosità e Contrasto Lineare (p’ = αp + β)