PDI+VC · Ejercicio de Programación

EP08_08 — 🟡 Imagen en Niveles de Gris y Umbralización Dinámica

8.14.8 EP08_08 🟡 Imagen en Niveles de Gris y Umbralización Dinámica

En este ejercicio, la imagen de entrada deja de ser estrictamente binaria (0/1) y pasa a ser una imagen en niveles de gris (\(8\) bits, \(0\dots255\)), donde los objetos poseen una intensidad media intermedia sobre un fondo oscuro (\(0\)), además de ruido de tipo sal y pimienta distribuido por toda la imagen.

8.14.8.1 📋 Directrices de Implementación

  1. Entrada: leer \(H\) y \(W\) en la primera línea, seguidos de las \(H\) líneas con valores enteros de \(0\) a \(255\) en una matriz de \(H \times W\).
  2. Preprocesamiento:
  • Aplicar un filtro de Mediana (\(3 \times 3\)) para eliminar el ruido de sal y pimienta manteniendo los bordes nítidos.
  • Aplicar Umbralización de Otsu (o un umbral fijo \(T = 60\)) para binarizar la imagen limpia.
  1. Medición y Salida: extraer el contorno de los objetos, calcular las métricas geométricas (area, perimeter, cx, cy, x, y, w, h, circularity, solidity) y ordenar los objetos por bbox[0] (y bbox[1] como criterio de desempate). Reasignar id de \(1\) a \(N\) e imprimir la tabla.
    • Para ordenar, usar medidas.sort(key=lambda m: (m['bbox'][1], m['bbox'][0])), con medidas = mm.measure(img).

8.14.8.2 📌 Ejemplos

Entrada Salida
16 32
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
…
(imagen binaria que contiene un cuadrado y un círculo)
id area perimeter cx cy x y w h circularity solidity vertices
1 16.0 16.0 8.0 8.0 6 6 5 5 0.79 1.000 4
2 28.3 18.8 22.5 8.0 19 5 7 7 1.00 1.000 8

[req 961564] Traduce este Markdown de portugués a español:

🧮 Simulador EP08_08: Ruido Sal y Pimienta en Tonos de Gris & Medición OpenCV Mediana 3x3 → Binarización → Medición
ETAPA DEL PROCESAMIENTO
VISUALIZACIÓN DE LA MATRIZ DE PÍXELES
TABLA DE MEDICIONES DE LOS OBJETOS (ORDENADOS POR BBOX_X, BBOX_Y)
id area perimeter cx cy x y w h circularity solidity vertices
Figura 8.22: Simulador EP08_08: Filtrado de Mediana en Tonos de Gris y Medición de Objetos OpenCV
%%writefile EP08_08.py
# Código Python
Overwriting EP08_08.py
TestSuite("EP08_08.py").run()
✔️ EP08_08.cases ya existe en casos/
📋 3 caso(s) cargado(s) de casos/EP08_08.cases

🔍 Probando Python: EP08_08.py
⚠️ EP08_08.py: archivo vacío (menos de 3 líneas). Pruebas omitidas.