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.
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
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.
%%writefile EP01_06.cpp
// your solutionOverwriting 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.