EP03_01 ➕ Adición Saturada de Constante
En sistemas de vigilancia por video, las cámaras en entornos con iluminación variable producen imágenes subexpuestas. El ajuste de brillo mediante adición saturada de una constante es la operación más simple para la corrección inmediata, aplicándose en tiempo real en los chips de cámaras embebidas y en pipelines de preprocesamiento de robots móviles.
Ver en Figura 3.26 una simulación de este EP.
📋 Directrices de Implementación
Dimensiones: Leer los enteros \(L\) (filas) y \(C\) (columnas).
Constante: Leer el entero \(k\) (valor a sumar).
Datos: Leer los valores enteros de la matriz original fila por fila.
Mapeo: Para cada píxel \(p\) , calcular el nuevo valor mediante la ecuación:
\[p' = \text{clip}(p + k)\]
Salida: Mostrar la matriz resultante con dimensiones \(L \times C\) .
📌 Restricciones Computacionales
Saturación (Clipping ): Los valores deben confinarse al intervalo \([0, 255]\) : \[\text{clip}(x) = \max(0, \min(255, x))\]
Tipo: El resultado final debe ser entero (sin decimales).
\(k\) puede ser negativo: los valores negativos oscurecen la imagen; los positivos la aclaran.
🧠 Fundamentación Teórica
\(k > 0\)
Entero
Aclara la imagen; los píxeles cercanos a 255 saturan en blanco
\(k < 0\)
Entero
Oscurece la imagen; los píxeles cercanos a 0 saturan en negro
\(k = 0\)
Entero
Imagen sin cambios
📦 Especificación de Entrada y Salida (VPL)
Entrada:
Línea 1: Entero \(L\) .
Línea 2: Entero \(C\) .
Línea 3: Entero \(k\) .
Líneas siguientes: Elementos enteros de la matriz original.
Salida:
Matriz transformada en \(L\) filas y \(C\) columnas, valores enteros separados por espacios.
📌 Ejemplos
2
3
50
0 100 200
210 240 255
50 150 250
255 255 255
Saturación en 255 en los píxeles altos
1
4
-30
0 20 200 255
0 0 170 225
Saturación en 0 en los píxeles bajos
Figura 3.26: Simulador EP03_01: Adición Saturada de Constante (p’ = clip(p + k))
%% writefile EP03_01.cpp
// your solution
TestSuite("EP03_01.cpp" ).run()
✔️ EP03_01.cases ya existe en casos/
📋 5 caso(s) cargado(s) de casos/EP03_01.cases
🔍 Probando C++: EP03_01.cpp
⚠️ EP03_01.cpp: archivo vacío (menos de 3 líneas). Pruebas omitidas.