EDI+VA · Esercizio di Programmazione

EP01_08 — 🎨 Rimappatura per Intervallo di Intensità

1.17.8 EP01_08 🎨 Rimappatura per Intervallo di Intensità

In questa attività, devi scrivere un programma che applichi trasformazioni lineari distinte a diverse regioni di intensità dell’immagine.

  • Leggi due interi L e C, che rappresentano le dimensioni della matrice.
  • Leggi gli interi T (soglia), δ₁ (delta 1) e δ₂ (delta 2).
  • Leggi i valori interi della matrice.
  • Per ogni pixel \(p\), applica la regola di rimappatura condizionale:

\[\text{risultato} = \begin{cases} p + \delta_1 & \text{se } p < T \\ p + \delta_2 & \text{se } p \ge T \end{cases}\]

  • Stampa la matrice risultante con i nuovi valori di intensità.

📌 Importante:

  • δ₁ è l’offset applicato ai pixel scuri (al di sotto della soglia).
  • δ₂ è l’offset applicato ai pixel chiari (maggiori o uguali alla soglia).
  • I casi di test garantiscono che il risultato sia sempre nell’intervallo valido da 0 a 255, quindi non è necessario gestire saturazione o arrotondamenti.
  • L’output deve mantenere la struttura di matrice (L righe e C colonne).

1.17.8.1 🧠 Trasformazione Condizionale dei Pixel

Nell’elaborazione digitale delle immagini (PDI), spesso dobbiamo trattare le regioni in modo indipendente. Questa tecnica consente, ad esempio, di schiarire solo le ombre di una fotografia (aumentando i pixel scuri) senza bruciare la luminosità delle aree già chiare, o viceversa.

Intervallo di Intensità Condizione Operazione
Pixel scuri \(p < T\) \(p + \delta_1\)
Pixel chiari \(p \ge T\) \(p + \delta_2\)

1.17.8.2 📋 Compito (specifica per VPL)

Input:

La prima riga contiene gli interi L e C.

La seconda riga contiene gli interi T, δ₁ e δ₂.

Le righe successive contengono gli elementi della matrice.

Output:

La matrice trasformata con L righe e C colonne, con valori separati da spazi.

1.17.8.3 📌 Esempi

Input Output Osservazione
2 4
128 60 -40
0 100 150 255
80 128 200 30
60 160 110 215
140 88 160 90
I pixel < 128 sommano 60. I pixel ≥ 128 sottraggono 40.
🎛️ Simulatore EP01_08: Rimappatura per Intervallo Condizionale p < T → p + δ₁ | p ≥ T → p + δ₂

Regola la soglia di separazione (T) e gli spostamenti di luminosità (δ₁ e δ₂) per applicare trasformazioni di intensità differenziate nelle regioni scure e chiare dell'immagine.

128
+60
-40
Input Originale (p)
Risultato Trasformato
Regola attiva: p < 128 → p + (+60)  |  p ≥ 128 → p + (-40)
Figura 1.18: Simulatore EP01_08: Rimappatura per Intervallo Condizionale (Luminosità e Contrasto per Soglia)
%%writefile EP01_08.cpp
// your solution
Overwriting EP01_08.cpp
TestSuite("EP01_08.cpp").run()
✔️ EP01_08.cases esiste già in casos/
📋 8 caso/i caricato/i da casos/EP01_08.cases

🔍 Test di C++: EP01_08.cpp
⚠️ EP01_08.cpp: file vuoto (meno di 3 righe). Test saltati.