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.
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)
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)
%%writefile EP02_02.py
# Código PythonOverwriting EP02_02.py
TestSuite("EP02_02.py").run()✔️ EP02_02.cases ya existe en casos/
📋 5 caso(s) cargado(s) de casos/EP02_02.cases
🔍 Probando Python: EP02_02.py
⚠️ EP02_02.py: archivo vacío (menos de 3 líneas). Pruebas omitidas.