PDI+VC · Ejercicio de Programación

EP01_06 — 🎨 Conversión RGB → Escala de Grises (ITU-R BT.601)

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

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.

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.
Figura 1.16: Simulador EP01_06: Conversión RGB a Escala de Grises (Ponderación Perceptual ITU-R BT.601)
%%writefile EP01_06.py
# tu solución
Overwriting EP01_06.py
TestSuite("EP01_06.py").run()
✔️ EP01_06.cases ya existe en casos/
📋 7 caso(s) cargado(s) de casos/EP01_06.cases

🔍 Probando Python: EP01_06.py
⚠️ EP01_06.py: archivo vacío (menos de 3 líneas). Pruebas omitidas.