PDI+VC · Ejercicio de Programación

EP01_11 — 📈 Análisis de Vecindad: Filtro de Máximo 1D

1.17.11 EP01_11 📈 Análisis de Vecindad: Filtro de Máximo 1D

En esta actividad, debes implementar un filtro morfológico simple de máximo que opera sobre una señal unidimensional (vector).

  • Lee un entero n, que representa el tamaño del vector.
  • Lee los n elementos enteros que componen el vector original v1.
  • Crea un nuevo vector v2, donde cada posición \(i\) es el resultado de la comparación entre el elemento actual y sus vecinos inmediatos:

\[v2[i] = \max(v1[i-1],\; v1[i],\; v1[i+1])\]

📌 Importante:

  • Bordes: En los extremos del vector (índices \(0\) y \(n-1\)), la vecindad posee solo dos elementos (el propio y el único vecino disponible). En el índice \(0\), compara únicamente \(v1[0]\) y \(v1[1]\). En el último índice, compara solo \(v1[n-2]\) y \(v1[n-1]\).
  • Salida: Imprime el encabezado “v2:” seguido de los valores del vector resultante, uno por línea.
  • Consulta un simulador interactivo para esta pregunta en la Figura 1.21 (pasa el mouse sobre los resultados para visualizar la ventana de vecindad utilizada en el cálculo).

1.17.11.1 🧠 ¿Por qué analizar vecinos?

En procesamiento de imágenes, el valor de un píxel rara vez es aislado; depende del contexto que lo rodea. El Filtro de Máximo es la base de la operación de Dilatación en morfología matemática, y sirve para:

Función Efecto Visual
Realce Expande estructuras brillantes y “engorda” objetos claros.
Eliminación de Ruido Elimina pequeños puntos negros (ruido de “sal y pimienta” oscuro).
Relleno Cierra pequeños agujeros o huecos en formas binarias.

1.17.11.2 📋 Tarea (especificación para VPL)

Entrada:

Un entero n.

En las líneas siguientes, los n elementos enteros del vector.

Salida:

La cadena v2: en la primera línea.

En las líneas siguientes, cada elemento de v2 (uno por línea).

1.17.11.3 📌 Ejemplos

Entrada Salida Observación
5
10
20
5
30
15
v2:
20
20
30
30
30
En el índice 1: max(10, 20, 5) = 20
📈 Simulador EP01_11: Filtro de Máximo Local 1D Janela 1x3

Clique nos elementos de v1 (Entrada) para gerar novos valores individuais ou passe o mouse sobre as células de v2 (Resultado) para inspecionar a janela local de vizinhança.

Vetor v1 (Entrada)
⬇️
Vetor v2 (Resultado do Máximo)
Passe o cursor do mouse sobre uma célula do vetor v2 para analisar a janela de máximo local.
Figura 1.21: Simulador EP01_11: Filtro de Máximo Local 1D (Vecindad 1x3 con Condición de Borde)
%%writefile EP01_11.cpp
// your solution
Overwriting EP01_11.cpp
TestSuite("EP01_11.cpp").run()
✔️ EP01_11.cases ya existe en casos/
📋 7 caso(s) cargado(s) de casos/EP01_11.cases

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