EDI+VA · Esercizio di Programmazione

EP01_06 — 🎨 Conversione RGB → Toni di Grigio (ITU-R BT.601)

1.17.6 EP01_06 🎨 Conversione RGB → Toni di Grigio (ITU-R BT.601)

In questa attività, devi scrivere un programma che converta pixel colorati (RGB) in toni di grigio utilizzando la ponderazione fisiologica dello standard ITU-R BT.601.

  • Leggi due interi L e C, che rappresentano il numero di righe e colonne.
  • Leggi L × C triple di interi, dove ogni terna rappresenta i canali R (Rosso), G (Verde) e B (Blu) di un pixel.
  • Per ogni pixel, calcola il valore di grigio (\(g\)) usando la formula:

\[g = \text{round}(0.299 \times R + 0.587 \times G + 0.114 \times B)\]

  • Stampa la matrice risultante (L righe e C colonne) contenente i valori interi convertiti.

📌 Importante:

  • Utilizza la funzione round() del tuo linguaggio per garantire l’arrotondamento corretto all’intero più vicino.
  • L’output deve contenere solo i valori di grigio, mantenendo la struttura a matrice (separati da spazio sulla riga).
  • Vedi un simulatore interattivo per questa domanda nella Figura 1.16 (regola gli slider per osservare come ogni colore contribuisce alla luminosità finale).

1.17.6.1 🧠 Perché non usare semplicemente la media?

L’occhio umano non percepisce tutti i colori con la stessa intensità. Siamo molto più sensibili al Verde che al Blu a causa della nostra evoluzione biologica. Lo standard ITU-R BT.601 utilizza pesi specifici per creare un’immagine in grigio che appaia naturalmente corretta alla nostra visione:

Canale Peso Percezione Umana
🟢 Verde 58.7% Massima sensibilità (distinzione del fogliame).
🔴 Rosso 29.9% Sensibilità media.
🔵 Blu 11.4% Bassa sensibilità (toni più scuri).

1.17.6.2 📋 Compito (specifica per VPL)

Input:

La prima riga contiene l’intero L.

La seconda riga contiene l’intero C.

Le righe successive contengono triple di interi R G B per ogni pixel.

Output:

La matrice di grigi con L righe e C colonne.

1.17.6.3 📌 Esempi

Input Output Osservazione
1
3
255 0 0 0 255 0 0 0 255
76 150 29 Nota come il Verde (150) sia più luminoso del Blu (29)
🎨 Simulatore EP01_06: Percezione del Colore & Pesi ITU-R BT.601 RGB → Scala di Grigi

Regola l'intensità dei canali Rosso (R), Verde (G) e Blu (B) per osservare come ciascuna componente contribuisce in modo ponderato al valore finale di luminanza nei livelli di grigio.

REGOLAZIONE DEI CANALI COLORE
80
180
30
RGB Originale
Toni di Grigio
💡 Il canale Verde (G) ha il peso maggiore (0.587) a causa della maggiore sensibilità spettrale del sistema visivo umano alle lunghezze d'onda del verde.
Figura 1.16: Simulatore EP01_06: Conversione RGB in Scala di Grigi (Ponderazione Percettiva ITU-R BT.601)
%%writefile EP01_06.cpp
// your solution
Overwriting EP01_06.cpp
TestSuite("EP01_06.cpp").run()
✔️ EP01_06.cases esiste già in casos/
📋 7 caso/i caricato/i da casos/EP01_06.cases

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