PDI+VC · Ejercicio de Programación

EP02_02 — 🔬 Submuestreo Espacial

2.12.2 EP02_02 🔬 Submuestreo Espacial

En esta actividad, debes implementar la reducción de la resolución espacial de una imagen mediante el proceso de submuestreo.

  • Lee dos enteros L y C, que representan las dimensiones de la matriz original.
  • Lee un valor entero \(f\) (\(f \ge 1\)), que representa el factor de muestreo.
  • Lee los valores enteros de la matriz original.
  • La nueva imagen debe construirse seleccionando el píxel de la posición \((f \cdot i, f \cdot j)\) de la imagen original.
  • Imprime la matriz resultante con las nuevas dimensiones.
  • Ver en la Figura 2.13 una simulación de este EP.

📌 Importante:

  • Dimensiones Finales: La imagen muestreada tendrá dimensiones \(\lceil L/f \rceil \times \lceil C/f \rceil\). En el contexto de programación, esto equivale al tamaño resultante de un segmentado (slicing) con paso \(f\).
  • Implementación: No utilices funciones predefinidas de bibliotecas de procesamiento de imágenes (como OpenCV o PIL) para el redimensionamiento. Implementa la lógica de selección de píxeles manualmente o mediante segmentado de matrices.
  • Aliasing: Ten en cuenta que este proceso puede causar el efecto de aliasing (dientes de sierra), donde se pierden detalles finos o aparecen patrones no deseados.

2.12.2.1 🧠 Discretización del Espacio

El submuestreo reduce la resolución espacial de una imagen, seleccionando solo un píxel de cada \(f\) píxeles en cada dirección. Es el proceso inverso de la interpolación:

Parámetro Función Efecto
Factor \(f\) Salto de muestreo Define el intervalo de selección. Un factor \(2\) reduce el ancho y la altura a la mitad.
Resolución Densidad de píxeles Disminuye la cantidad total de información espacial de la imagen.
Aliasing Efecto secundario Aparición de patrones en escalera o bloques debido a la pérdida de detalles finos.

2.12.2.2 📋 Tarea (especificación para VPL)

Entrada:

La primera línea contiene L.

La segunda línea contiene C.

La tercera línea contiene el factor f.

Las líneas siguientes contienen los elementos de la matriz \(L \times C\).

Salida:

La matriz reducida con las dimensiones correspondientes al segmentado por f.

2.12.2.3 📌 Ejemplos

Entrada Salida Observación
2
4
2
10 20 30 40
50 60 70 80
10 30 El factor 2 selecciona los píxeles (0,0) y (0,2) de la primera fila. La segunda fila se ignora.
🔽 Simulador EP02_02: Submuestreo Espacial de Imagen p'(i, j) = p(i·f, j·f)

Ajuste el factor de submuestreo (f) para observar la reducción en la dimensión espacial de la matriz y el muestreo por salto de los píxeles superiores izquierdos de cada bloque f × f.

1
f = 1 → Resolución Original (4×4)  |  f = 2 → Mitad (2×2)  |  f = 3 o 4 → Muestra Única (1×1)
Original (4×4)
Submuestreada (Tamaño Variable)
Factor f = 1 → mantiene todos los píxeles originales (4×4)
Figura 2.13: Simulador EP02_02: Submuestreo Espacial (Reducción de Resolución por Salto f)
%%writefile EP02_02.cpp
// your solution
Overwriting EP02_02.cpp
TestSuite("EP02_02.cpp").run()
✔️ EP02_02.cases ya existe en casos/
📋 5 caso(s) cargado(s) de casos/EP02_02.cases

🔍 Probando C++: EP02_02.cpp
⚠️ EP02_02.cpp: archivo vacío (menos de 3 líneas). Pruebas omitidas.