EDI+VA · Esercizio di Programmazione

EP03_07 — 🔍 Operatore Laplaciano (w4) per l’Enfatizzazione dei Bordi

3.12.7 EP03_07 🔍 Operatore Laplaciano (w4) per l’Enfatizzazione dei Bordi

Nelle tomografie ad alta risoluzione, la nitidezza dei bordi tra i tessuti è critica per la diagnosi. L’operatore Laplaciano è ampiamente utilizzato nei pipeline di pre-elaborazione delle immagini mediche per enfatizzare automaticamente i contorni anatomici prima della segmentazione, evitando l’intervento manuale del radiologo.

Vedi in Figura 3.32 una simulazione di questo EP.

3.12.7.1 📋 Linee Guida di Implementazione

  1. Dimensioni: Leggere gli interi \(L\) (righe) e \(C\) (colonne).
  2. Dati: Leggere la matrice di pixel \(f\).
  3. Laplaciano (w4): Per ogni pixel interno \((i,j)\) con \(1 \le i < L-1\), \(1 \le j < C-1\), calcolare:

\[\nabla^2 f(i,j) = f(i-1,j) + f(i+1,j) + f(i,j-1) + f(i,j+1) - 4 \cdot f(i,j)\]

  1. Enfatizzazione: Calcolare l’immagine enfatizzata:

\[g(i,j) = \text{clip}(f(i,j) - \nabla^2 f(i,j))\]

  1. Bordo: I pixel sul bordo vengono copiati direttamente: \(g(i,j) = f(i,j)\).
  2. Uscita: Visualizzare la matrice enfatizzata \(L \times C\).

3.12.7.2 📌 Vincoli Computazionali

  • Kernel w4: \(\begin{bmatrix} 0 & 1 & 0 \\ 1 & -4 & 1 \\ 0 & 1 & 0 \end{bmatrix}\) — solo 4-vicini.
  • Saturazione: \(\text{clip}(x) = \max(0, \min(255, x))\) applicato al risultato dell’enfatizzazione.
  • Senza arrotondamento: Il Laplaciano usa solo somme/sottrazioni di interi.

3.12.7.3 🧠 Fondamenti Teorici

Regione \(\nabla^2 f\) Effetto dell’Enfatizzazione
Uniforme \(\approx 0\) Nessuna modifica
Bordo crescente \(< 0\) Pixel schiarito
Bordo decrescente \(> 0\) Pixel scurito

3.12.7.4 📦 Specifica di Ingresso e Uscita (VPL)

Ingresso:

  • Riga 1: Intero \(L\).
  • Riga 2: Intero \(C\).
  • Righe successive: Elementi della matrice originale.

Uscita:

  • Matrice enfatizzata \(L \times C\).

3.12.7.5 📌 Esempi

Ingresso Uscita Osservazione
3
3
0 0 0
0 100 0
0 0 0
0 0 0
0 255 0
0 0 0
Picco isolato: lap=−400, g=100−(−400)=500 → clip=255
3
3
50 50 50
50 50 50
50 50 50
50 50 50
50 50 50
50 50 50
Regione uniforme: Laplaciano=0, nessuna modifica
📐 Simulatore EP03_07: Operatore Laplaciano (w4) g = f ∓ ∇²f

Seleziona la variante di evidenziazione e passa il mouse sui pixel interni del risultato per ispezionare l'intorno di 4 punti e l'equazione del Laplaciano.

Variante:
① Immagine Originale f Gradino con rumore leggero
② Laplaciano ∇²f Bordi rilevati (±128 shift)
③ Risultato g = f − ∇²f Passa il mouse per ispezionare
Kernel w4 (4-Vicini)
0
+1
0
+1
−4
+1
0
+1
0
∇²f = T + B + L + R − 4·f
Legenda:
4-Vicini del Kernel
Pixel Centrale
Bordo (Copiato)
Passa il mouse su un pixel interno del risultato per dettagliare l'equazione.
Figura 3.32: Simulador EP03_07: Operador Laplaciano (w4) para Realce de Bordas
%%writefile EP03_07.cpp
// your solution
Overwriting EP03_07.cpp
TestSuite("EP03_07.cpp").run()
✔️ EP03_07.cases esiste già in casos/
📋 5 caso/i caricato/i da casos/EP03_07.cases

🔍 Test di C++: EP03_07.cpp
⚠️ EP03_07.cpp: file vuoto (meno di 3 righe). Test saltati.