EDI+VA · Esercizio di Programmazione

EP03_03 — 🎭 Inversione dell’Immagine (Negativo Fotografico)

3.12.3 EP03_03 🎭 Inversione dell’Immagine (Negativo Fotografico)

In radiologia, le immagini ai raggi X sono tradizionalmente visualizzate in negativo: le ossa appaiono in nero su sfondo bianco. L’operazione di negativo fotografico viene applicata di routine nei PACS (Picture Archiving and Communication Systems) per facilitare la rilevazione di fratture e densità ossee.

Vedere nella Figura 3.28 una simulazione di questo EP.

3.12.3.1 📋 Linee Guida di Implementazione

  1. Dimensioni: Leggere gli interi \(L\) (righe) e \(C\) (colonne).
  2. Dati: Leggere i valori interi della matrice originale.
  3. Mappatura: Per ogni pixel \(p\), calcolare il negativo:

\[p' = 255 - p\]

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

3.12.3.2 📌 Vincoli Computazionali

  • Nessun clipping necessario: Il risultato di \(255 - p\) con \(p \in [0, 255]\) è sempre \(\in [0, 255]\).
  • Tipo intero: L’output deve essere composto da valori interi.
  • Equivalenza logica: L’operazione è identica al NOT bit a bit (mm.bnot) su immagini a 8 bit.

3.12.3.3 🧠 Fondamenti Teorici

Pixel Originale \(p\) Pixel Negativo \(p'\) Osservazione
0 (nero) 255 (bianco) Inversione totale
128 (grigio medio) 127 (grigio medio) Valore centrale
255 (bianco) 0 (nero) Inversione totale

3.12.3.4 📦 Specifica di Input e Output (VPL)

Input:

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

Output:

  • Matrice negativa in \(L\) righe e \(C\) colonne.

3.12.3.5 📌 Esempi

Input Output Osservazione
1
4
0 128 200 255
255 127 55 0 Inversione di ogni pixel
2
2
10 20
30 40
245 235
225 215
Matrice 2x2 invertita
🎭 Simulatore EP03_03: Negativo Fotografico (Inversione) p' = 255 − p

Osserva l'inversione complementare di intensità: i toni scuri diventano chiari e i toni chiari diventano scuri sottraendo ogni pixel dal valore massimo di 255.

Ingresso Originale (p)
Negativo (p' = 255 − p)
 
Formula applicata: p' = 255 − p
Figura 3.28: Simulatore EP03_03: Inversione dell’immagine — Negativo fotografico (p’ = 255 − p)
%%writefile EP03_03.py
# Codice Python
Overwriting EP03_03.py
TestSuite("EP03_03.py").run()
✔️ EP03_03.cases esiste già in casos/
📋 5 caso/i caricato/i da casos/EP03_03.cases

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