Ajusta la intensidad de los canales Rojo (R), Verde (G) y Azul (B) para observar cómo cada componente contribuye ponderadamente al valor final de luminancia en niveles de gris.
1.17.6 EP01_06 🎨 Conversión RGB → Escala de Grises (ITU-R BT.601)
En esta actividad, debes escribir un programa que convierta píxeles de color (RGB) a escala de grises utilizando la ponderación fisiológica del estándar ITU-R BT.601.
- Lee dos enteros L y C, que representan el número de filas y columnas.
- Lee L × C tripletas de enteros, donde cada tripleta representa los canales R (Red), G (Green) y B (Blue) de un píxel.
- Para cada píxel, calcula el valor de gris (\(g\)) usando la fórmula:
\[g = \text{round}(0.299 \times R + 0.587 \times G + 0.114 \times B)\]
- Imprime la matriz resultante (L filas y C columnas) que contenga los valores enteros convertidos.
📌 Importante:
- Utiliza la función
round()de tu lenguaje para garantizar el redondeo correcto al entero más cercano. - La salida debe contener únicamente los valores de gris, manteniendo la estructura de matriz (separados por espacios en la línea).
- Consulta un simulador interactivo para esta pregunta en la Figura 1.16 (ajusta los deslizadores para ver cómo contribuye cada color al brillo final).
1.17.6.1 🧠 ¿Por qué no usar solo el promedio?
El ojo humano no percibe todos los colores con la misma intensidad. Somos mucho más sensibles al Verde que al Azul debido a nuestra evolución biológica. El estándar ITU-R BT.601 utiliza pesos específicos para crear una imagen en gris que parezca naturalmente correcta para nuestra visión:
| Canal | Peso | Percepción Humana |
|---|---|---|
| 🟢 Verde | 58.7% | Máxima sensibilidad (distinción de follajes). |
| 🔴 Rojo | 29.9% | Sensibilidad media. |
| 🔵 Azul | 11.4% | Baja sensibilidad (tonos más oscuros). |
1.17.6.2 📋 Tarea (especificación para VPL)
Entrada:
La primera línea contiene el entero L.
La segunda línea contiene el entero C.
Las líneas siguientes contienen tripletas de enteros R G B para cada píxel.
Salida:
La matriz de grises con L filas y C columnas.
1.17.6.3 📌 Ejemplos
| Entrada | Salida | Observación |
|---|---|---|
| 1 3 255 0 0 0 255 0 0 0 255 |
76 150 29 | Observa cómo el Verde (150) es más brillante que el Azul (29) |
🎨 Simulador EP01_06: Percepción de Color & Pesos ITU-R BT.601
RGB → Escala de grises
AJUSTE DE LOS CANALES DE COLOR
80
180
30
RGB original
Tonos de gris
💡
El canal Verde (G) posee el mayor peso (0.587) debido a la mayor sensibilidad espectral del sistema visual humano a las longitudes de onda del verde.
%%writefile EP01_06.cpp
// your solutionOverwriting EP01_06.cpp
TestSuite("EP01_06.cpp").run()✔️ EP01_06.cases ya existe en casos/
📋 7 caso(s) cargado(s) de casos/EP01_06.cases
🔍 Probando C++: EP01_06.cpp
⚠️ EP01_06.cpp: archivo vacío (menos de 3 líneas). Pruebas omitidas.