EDI+VA · Esercizio di Programmazione

EP08_10 — 🔴 Contrasto Basso e Separazione degli Oggetti Tangenti ( Watershed / Distanza)

8.14.10 EP08_10 🔴 Contrasto Basso e Separazione degli Oggetti Tangenti (Watershed / Distanza)

In questo esercizio, alcuni oggetti geometrici sono leggermente a contatto (sovrapposti sui bordi). La semplice estrazione dei contorni tratterebbe due oggetti come uno solo.

8.14.10.1 📋 Linee Guida di Implementazione

  1. Input: matrice \(H \times W\) in livelli di grigio con oggetti di intensità \(110\dots140\) su sfondo \(0\), con rumore e coppie di oggetti tangenti.
  2. Pre-elaborazione e Separazione:
  • Applicazione della sogliatura.
  • Applicazione della Trasformata della Distanza (mm.dist).
  • Ottenimento dei picchi di distanza per servire come marcatori nella Trasformata Watershed (mm.watershed), separando fisicamente gli oggetti a contatto nella maschera. Suggerimento: usare mm.regmax() per ottenere i massimi locali e successivamente etichettare con mm.label0.
  • Dopo il watershed, applicare nuovamente la sogliatura con mm.threshold(water,0)//255.
  1. Analisi delle Componenti Connesse: misurare ogni regione isolata post-Watershed.
  2. Output: stampare i componenti ordinati per (bbox[0], bbox[1]) con le loro metriche individuali di area, centroide e solidità.
    • Per ordinare, usare medidas.sort(key=lambda m: (m['bbox'][1], m['bbox'][0])), con medidas = mm.measure(img, precision=0.02).

8.14.10.2 📌 Esempi

Input Output
16 16
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
…
(immagine binaria contenente due quadrati)
id area perimeter cx cy x y w h solidity
1 16.0 16.0 5.0 5.0 3 3 5 5 1.000
2 16.0 16.0 11.0 5.0 9 3 5 5 1.000
🧮 Simulatore EP08_10: Separazione di Dischi Tangenti (Trasformata L2 & Watershed) mm.dist L2 → mm.watershed → Misurazione
FASE DELL'ELABORAZIONE MORFOLOGICA
VISUALIZZAZIONE DELLA MATRICE DEI PIXEL
TABELLA DELLE MISURAZIONI DEI DISCHI DOPO IL TAGLIO DEL WATERSHED
id area perimeter cx cy x y w h circularity solidity vertices
Figura 8.24: Simulatore EP08_10: Separazione di Dischi Tangenti via Trasformata della Distanza L2 e Watershed

[req 418908] Traduci questo Markdown dal portoghese all’italiano:

%%writefile EP08_10.py
# Codice Python
Overwriting EP08_10.py
TestSuite("EP08_10.py").run()
✔️ EP08_10.cases esiste già in casos/
📋 3 caso/i caricato/i da casos/EP08_10.cases

🔍 Test di Python: EP08_10.py
⚠️ EP08_10.py: file vuoto (meno di 3 righe). Test saltati.