EDI+VA · Esercizio di Programmazione

EP03_05 — 🔲 Applicazione della Maschera AND Binaria

3.12.5 EP03_05 🔲 Applicazione della Maschera AND Binaria

Nei sistemi di ispezione industriale tramite visione artificiale, è necessario isolare le regioni di interesse (ROI) nelle immagini dei pezzi per verificare difetti di fabbricazione. L’operazione AND bit a bit con una maschera binaria è il meccanismo fondamentale per ritagliare esattamente l’area di ispezione, azzerando tutti i pixel al di fuori di essa.

Vedi in Figura 3.30 una simulazione di questo EP.

3.12.5.1 📋 Linee Guida di Implementazione

  1. Dimensioni: Leggere gli interi \(L\) (righe) e \(C\) (colonne).
  2. Dati: Leggere la matrice di pixel \(f\) (valori \(\in [0, 255]\)).
  3. Maschera: Leggere la matrice binaria \(m\) (valori: solo 0 o 255).
  4. Mappatura: Per ogni pixel \((i,j)\), applicare l’AND bit a bit:

\[ g(i,j) = f(i,j) \;\text{AND}\; m(i,j) \]

dove \(255 =\) 11111111 e \(0 =\) 00000000 in binario.

  1. Output: Visualizzare la matrice risultante \(L \times C\).

3.12.5.2 📌 Vincoli Computazionali

  • AND con 255: \(p \; \text{AND} \; 255 = p\) (tutti i bit preservati).
  • AND con 0: \(p \; \text{AND} \; 0 = 0\) (tutti i bit azzerati).
  • Maschera: Gli unici valori possibili nella maschera sono 0 e 255.
  • Implementazione: In Python, l’AND bit a bit tra interi utilizza l’operatore &.

3.12.5.3 🧠 Fondamento Teorico

Pixel \(f\) Maschera \(m\) Risultato \(f\) AND \(m\)
qualsiasi \(v\) 255 (11111111) \(v\) (preservato)
qualsiasi \(v\) 0 (00000000) 0 (azzerato)

3.12.5.4 📦 Specifica di Input e Output (VPL)

Input:

  • Riga 1: Intero \(L\).
  • Riga 2: Intero \(C\).
  • Righe successive: Elementi di \(f\) (\(L\) righe).
  • Righe successive: Elementi di \(m\) (\(L\) righe con valori 0 o 255).

Output:

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

3.12.5.5 📌 Esempi

Input Output Osservazione
2
3
100 150 200
50 80 120
255 255 0
0 255 255
100 150 0
0 80 120
La maschera seleziona la regione
1
4
10 20 30 40
255 0 255 0
10 0 30 0 Alternato preservato/azzerato
⬛ Simulatore EP03_05: Maschera AND Binaria g = f AND m

Fai clic sulle celle della Maschera m per alternare tra passante (255) e bloccante (0), applicando l'operazione logica pixel per pixel.

Immagine f (0–255)
Maschera m (Fai clic per Alternare)
Risultato g = f AND m
—
—preservati
—azzerati
—visibile
Legenda:
255
Passante (preservato)
0
Bloccante (azzerato)
g(i,j) = f(i,j) & m(i,j)
Figura 3.30: Simulatore EP03_05: Applicazione della Maschera AND Binaria
%%writefile EP03_05.py
# Codice Python
Overwriting EP03_05.py
TestSuite("EP03_05.py").run()
✔️ EP03_05.cases esiste già in casos/
📋 5 caso/i caricato/i da casos/EP03_05.cases

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