Ajuste el umbral de separación (T) y los desplazamientos de brillo (δ₁ y δ₂) para aplicar transformaciones de intensidad diferenciadas en las regiones oscuras y claras de la imagen.
1.17.8 EP01_08 🎨 Remapeamento por Rango de Intensidad
En esta actividad, debes escribir un programa que aplique transformaciones lineales distintas a diferentes regiones de intensidad de la imagen.
- Lee dos enteros L y C, que representan las dimensiones de la matriz.
- Lee los enteros T (umbral), δ₁ (delta 1) y δ₂ (delta 2).
- Lee los valores enteros de la matriz.
- Para cada píxel \(p\), aplica la regla de remapeo condicional:
\[\text{resultado} = \begin{cases} p + \delta_1 & \text{si } p < T \\ p + \delta_2 & \text{si } p \ge T \end{cases}\]
- Imprime la matriz resultante con los nuevos valores de intensidad.
📌 Importante:
- δ₁ es el offset aplicado a los píxeles oscuros (por debajo del umbral).
- δ₂ es el offset aplicado a los píxeles claros (mayores o iguales al umbral).
- Los casos de prueba garantizan que el resultado siempre estará en el rango válido de 0 a 255, por lo tanto, no es necesario manejar saturación ni redondeos.
- La salida debe mantener la estructura de matriz (L filas y C columnas).
1.17.8.1 🧠 Transformación Condicional de Píxeles
En Procesamiento Digital de Imágenes (PDI), con frecuencia necesitamos tratar regiones de forma independiente. Esta técnica permite, por ejemplo, aclarar solo las sombras de una fotografía (aumentando los píxeles oscuros) sin estallar el brillo de las áreas ya claras, o viceversa.
| Rango de Intensidad | Condición | Operación |
|---|---|---|
| Píxeles Oscuros | \(p < T\) | \(p + \delta_1\) |
| Píxeles Claros | \(p \ge T\) | \(p + \delta_2\) |
1.17.8.2 📋 Tarea (especificación para VPL)
Entrada:
La primera línea contiene los enteros L y C.
La segunda línea contiene los enteros T, δ₁ y δ₂.
Las líneas siguientes contienen los elementos de la matriz.
Salida:
La matriz transformada con L filas y C columnas, con valores separados por espacios.
1.17.8.3 📌 Ejemplos
| Entrada | Salida | Observación |
|---|---|---|
2 4128 60 -400 100 150 25580 128 200 30 |
60 160 110 215140 88 160 90 |
Píxeles < 128 suman 60. Píxeles ≥ 128 restan 40. |
%%writefile EP01_08.cpp
// your solutionOverwriting EP01_08.cpp
TestSuite("EP01_08.cpp").run()✔️ EP01_08.cases ya existe en casos/
📋 8 caso(s) cargado(s) de casos/EP01_08.cases
🔍 Probando C++: EP01_08.cpp
⚠️ EP01_08.cpp: archivo vacío (menos de 3 líneas). Pruebas omitidas.