Regola il fattore di sottocampionamento (f) per osservare la riduzione della dimensione spaziale della matrice e il campionamento a salti dei pixel in alto a sinistra di ogni blocco f × f.
2.12.2 EP02_02 🔬 Sottocampionamento Spaziale
In questa attività, devi implementare la riduzione della risoluzione spaziale di un’immagine attraverso il processo di sottocampionamento.
- Leggi due interi L e C, che rappresentano le dimensioni della matrice originale.
- Leggi un valore intero \(f\) (\(f \ge 1\)), che rappresenta il fattore di campionamento.
- Leggi i valori interi della matrice originale.
- La nuova immagine deve essere costruita selezionando il pixel nella posizione \((f \cdot i, f \cdot j)\) dell’immagine originale.
- Stampa la matrice risultante con le nuove dimensioni.
- Vedi una simulazione di questo EP in Figura 2.13.
📌 Importante:
- Dimensioni Finali: L’immagine campionata avrà dimensioni \(\lceil L/f \rceil \times \lceil C/f \rceil\). Nel contesto della programmazione, ciò equivale alla dimensione risultante da uno slicing con passo \(f\).
- Implementazione: Non utilizzare funzioni pronte di librerie di elaborazione delle immagini (come OpenCV o PIL) per il ridimensionamento. Implementa la logica di selezione dei pixel manualmente o tramite slicing di matrici.
- Aliasing: Nota che questo processo può causare l’effetto di aliasing (effetto a scaletta), dove i dettagli fini vengono persi o compaiono pattern indesiderati.
2.12.2.1 🧠 Discretizzazione dello Spazio
Il sottocampionamento riduce la risoluzione spaziale di un’immagine, selezionando solo un pixel ogni \(f\) pixel in ciascuna direzione. È il processo inverso dell’interpolazione:
| Parametro | Funzione | Effetto |
|---|---|---|
| Fattore \(f\) | Passo di campionamento | Definisce l’intervallo di selezione. Un fattore \(2\) riduce larghezza e altezza della metà. |
| Risoluzione | Densità dei pixel | Riduce la quantità totale di informazione spaziale dell’immagine. |
| Aliasing | Effetto collaterale | Comparsa di pattern a scaletta o a blocchi dovuti alla perdita di dettagli fini. |
2.12.2.2 📋 Compito (specifica per VPL)
Input:
La prima riga contiene L.
La seconda riga contiene C.
La terza riga contiene il fattore f.
Le righe successive contengono gli elementi della matrice \(L \times C\).
Output:
La matrice ridotta con le dimensioni corrispondenti allo slicing per f.
2.12.2.3 📌 Esempi
| Input | Output | Osservazione |
|---|---|---|
| 2 4 2 10 20 30 40 50 60 70 80 |
10 30 | Il fattore 2 seleziona i pixel (0,0) e (0,2) della prima riga. La seconda riga viene ignorata. |
🔽 Simulatore EP02_02: Sottocampionamento Spaziale dell'Immagine
p'(i, j) = p(i·f, j·f)
1
f = 1 → Risoluzione Originale (4×4) | f = 2 → Metà (2×2) | f = 3 o 4 → Campione Unico (1×1)
Originale (4×4)
Sottocampionata (Dimensione Variabile)
Fattore f = 1 → mantiene tutti i pixel originali (4×4)
%%writefile EP02_02.cpp
// your solutionOverwriting EP02_02.cpp
TestSuite("EP02_02.cpp").run()✔️ EP02_02.cases esiste già in casos/
📋 5 caso/i caricato/i da casos/EP02_02.cases
🔍 Test di C++: EP02_02.cpp
⚠️ EP02_02.cpp: file vuoto (meno di 3 righe). Test saltati.