PDI+VC · Ejercicio de Programación

EP04_06 — 🧩 Cierre Morfológico (Relleno de Huecos)

4.9.6 EP04_06 🧩 Cierre Morfológico (Relleno de Huecos)

En la digitalización de huellas dactilares, los surcos de la piel a veces se ven interrumpidos por suciedad o sequedad, creando pequeñas fallas en la curva continua que debería existir. El cierre —dilatación seguida de erosión con el mismo elemento estructurante— es el operador dual de la apertura: rellena huecos pequeños y entrantes estrechos, sin alterar significativamente el contorno externo del objeto. Es el paso estándar antes de extraer el esqueleto de una huella dactilar. Ver en Figura 4.35 una simulación de este EP.

4.9.6.1 📋 Directrices de Implementación

  1. Dimensiones de la imagen: Leer los enteros \(L\) (líneas) y \(C\) (columnas) de \(f\).
  2. Dimensiones de \(B\): Leer los enteros \(L_B\) (líneas) y \(C_B\) (columnas) del elemento estructurante.
  3. Elemento estructurante: Leer la matriz \(B\) con valores \(0\) o \(1\), línea por línea.
  4. Datos: Leer la matriz binaria \(f\) (valores \(0\) o \(1\)), línea por línea.
  5. Dilatación: Calcular \(d = f \oplus B\), usando exactamente el algoritmo del EP04_03 (reflejando \(B\), sin padding).
  6. Erosión: Calcular \(g = d \ominus B\), usando exactamente el algoritmo del EP04_04 (sin reflejar \(B\), sin padding) — ahora aplicado sobre \(d\), no sobre \(f\).
  7. Salida: Mostrar la matriz resultante \(g\) (el cierre de \(f\) por \(B\)) con dimensiones \(L \times C\).

4.9.6.2 📌 Restricciones Computacionales

  • Orden fijo: Es siempre dilatación primero, luego erosión — el orden inverso es la apertura del EP04_05.
  • Mismo \(B\): El elemento estructurante usado en la dilatación y en la erosión debe ser idéntico.
  • Sin padding en ninguna de las dos etapas.

4.9.6.3 🧠 Fundamentación Teórica

Concepto Significado Impacto Visual
Extensividad \(g \supseteq f\) siempre El cierre nunca elimina píxeles, solo añade
Idempotencia \(\text{cierre}(\text{cierre}(f)) = \text{cierre}(f)\) Aplicarlo de nuevo no cambia nada más
Huecos pequeños Menores que \(B\) Se rellenan completamente
Dualidad \(\text{cierre}(f) = \overline{\text{apertura}(\bar f)}\) Es la apertura aplicada al “negativo” de la imagen

4.9.6.4 📦 Especificación de Entrada y Salida (VPL)

Entrada:

  • Línea 1: Entero \(L\).
  • Línea 2: Entero \(C\).
  • Línea 3: Entero \(L_B\).
  • Línea 4: Entero \(C_B\).
  • Siguientes \(L_B\) líneas: elementos enteros (\(0\) o \(1\)) de la matriz \(B\).
  • Siguientes \(L\) líneas: elementos enteros (\(0\) o \(1\)) de la matriz \(f\).

Salida:

  • Matriz resultante en \(L\) líneas y \(C\) columnas, valores \(0\) o \(1\).

4.9.6.5 📌 Ejemplos

Entrada Salida Observación
8
8
3
3
1 1 1
1 1 1
1 1 1
0 0 0 0 0 0 0 0
0 0 1 1 1 1 0 0
0 0 1 1 1 1 0 0
0 0 1 0 1 1 0 0
0 0 1 1 0 1 0 0
0 0 1 1 1 1 0 0
0 0 1 1 1 1 0 0
0 0 0 0 0 0 0 0
0 0 1 1 1 1 0 0
0 0 1 1 1 1 0 0
0 0 1 1 1 1 0 0
0 0 1 1 1 1 0 0
0 0 1 1 1 1 0 0
0 0 1 1 1 1 0 0
0 0 1 1 1 1 0 0
0 0 1 1 1 1 0 0
Los dos huecos internos no adyacentes se rellenan totalmente
🧩 Simulador EP04_06: Cierre Morfológico g = (f ⊕ B) ⊖ B

Haz clic en las celdas de f original para encender o apagar píxeles (¡rellena huecos internos!) y ajusta el tamaño del elemento estructurante B.


3×3
f Original (Clickeable)
d = f ⊕ B (Dilatación)
g = d ⊖ B (Cierre)
Figura 4.35: Simulador EP04_06: Cierre Morfológico (g = (f ⊕ B) ⊖ B)
%%writefile EP04_06.cpp
// your solution
Overwriting EP04_06.cpp
TestSuite("EP04_06.cpp").run()
✔️ EP04_06.cases ya existe en casos/
📋 5 caso(s) cargado(s) de casos/EP04_06.cases

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