PDI+VC · Ejercicio de Programación

EP03_01 — ➕ Adición Saturada de Constante

3.12.1 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.

3.12.1.1 📋 Directrices de Implementación

  1. Dimensiones: Leer los enteros \(L\) (filas) y \(C\) (columnas).
  2. Constante: Leer el entero \(k\) (valor a sumar).
  3. Datos: Leer los valores enteros de la matriz original fila por fila.
  4. Mapeo: Para cada píxel \(p\), calcular el nuevo valor mediante la ecuación:

\[p' = \text{clip}(p + k)\]

  1. Salida: Mostrar la matriz resultante con dimensiones \(L \times C\).

3.12.1.2 📌 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.

3.12.1.3 🧠 Fundamentación Teórica

Parámetro Tipo Impacto Visual
\(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

3.12.1.4 📦 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.

3.12.1.5 📌 Ejemplos

Entrada Salida Observación
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
➕ Simulador EP03_01: Adición Saturada de Constante p' = clip(p + k)

Ajuste el valor de la constante k para observar el desplazamiento de brillo de la imagen y el truncamiento por saturación en el intervalo [0, 255].

0
Entrada Original (p)
Resultado Transformado (p')
Fórmula aplicada: clip(p + (0))
Figura 3.26: Simulador EP03_01: Adición Saturada de Constante (p’ = clip(p + k))
%%writefile EP03_01.cpp
// your solution
Overwriting EP03_01.cpp
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.