Questo progetto del corso di Compressione Dati 2023/24 della magistrale di Informatica presso l'Università degli Studi di Salerno, si propone di condurre una valutazione comparativa tra diversi algoritmi di compressione video. Particolare attenzione sarà dedicata alla valutazione della loro efficacia nella compressione di Light Field.
L'obiettivo principale è analizzare le prestazioni di tali algoritmi in termini di qualità della compressione, velocità di codifica/decodifica e efficienza complessiva nella gestione di dati di tipo Light Field.
I risultati ottenuti includono metriche di qualità della compressione, tempi di codifica/decodifica e altri parametri rilevanti.
Siete invitati a contribuire a questo progetto aprendo issue, inviando pull request o fornendo feedback sulla valutazione comparativa degli algoritmi di compressione video per Light Field. Le vostre contribuzioni sono preziose per migliorare la comprensione e l'efficacia di tali algoritmi.
- Assicurati di avere Python installato sul tuo sistema (Versione usata - 3.11.6).
- Assicurati di avere le librerie necessarie installate eseguendo il comando seguente:
pip install -r requirements.txt- Installare ffmpeg (FFmpeg 6.0.1 release):
- Per Windows: scaricare ffmpeg dal sito ufficiale e inserire la cartella ffmpeg contenente gli eseguibili nella root del progetto
- Per macOS/Linux: scaricare il pacchetto e installarlo.
Per avviare l'esperimento, segui i seguenti passaggi:
- Apri un terminale o prompt dei comandi nella directory del progetto.
- Esegui il comando
python test_compression.pyper avviare la prima fase dell'esperimento (la compressione). Lo script utilizzerà gli algoritmi di compressione specificati nella listaalgorithmsnel fileutils.py. Assicurati che questa lista includa tutti gli algoritmi utilizzati durante la fase di compressione. - Al termine (e unicamente al termine di questa fase) della fase di compressione, esegui il comando
python test_decompression.pyper avviare la seconda fase dell'esperimento (la decompressione). Durante questa fase, lo script decomprimerà i video compressi utilizzando gli stessi algoritmi e dataset utilizzati nella fase di compressione. - I risultati della decompressione saranno registrati e comparati con i video originali per valutare la qualità della decompressione. Per eseguire la decompressione, lo script utilizzerà gli algoritmi di compressione specificati nella lista
algorithmsnel fileutils.py. Assicurati che questa lista includa tutti gli algoritmi utilizzati durante la fase di compressione. Dopo aver eseguito lo script, troverai i risultati della decompressione nella directory specificata dal parametrodecompression_dir. Ogni dataset avrà una directory separata all'interno della directory di decompressione, contenente i video decompressi utilizzando gli algoritmi specificati.
Se desideri espandere il progetto aggiungendo nuovi codec o dataset per la comparazione, segui questi passaggi:
Se vuoi aggiungere nuovi codec per la comparazione, segui questi passaggi:
-
Apri il file
utils.pyall'interno del progetto. -
Trova la funzione
get_valid_extensione aggiungi il nuovo codec insieme alla sua estensione valida. Ad esempio:valid_extensions = { ... "NUOVO_CODEC": ".formato", ... }
-
Assicurati di specificare correttamente il formato dell'estensione del nuovo codec.
-
Aggiungere il nuovo codec alla lista
algorithms.algorithms = [..., ..., "NUOVO_CODEC"]
-
Implementare la logica (vedi cartella codecs) con ffmpeg o altri strumenti.
-
Modificare i file appositamente
test_decompression.py,test_compression.pyper adattarli al nuovo studio
Se vuoi aggiungere nuovi dataset per la comparazione, segui questi passaggi:
-
Sempre nel file utils.py, trova la definizione dei dataset e degli algoritmi.
-
Aggiungi il nuovo dataset specificando il nome e il percorso delle immagini. Ad esempio:
datasets = {
...
"NUOVO_DATASET": "./percorso/nome-dataset/nome-file%placeholder
...
}Il formato dei nomi dei file delle immagini nei dataset può variare leggermente da un dataset all'altro. Tuttavia, ci sono alcune linee guida generali da seguire:
-
Numerazione Sequenziale: Molti dataset utilizzano una numerazione sequenziale per le immagini. In questi casi, il nome del file dovrebbe includere un numero di sequenza univoco. Utilizza il placeholder
%3dper formattare i numeri su tre cifre con zero padding se necessario. Ad esempio,Frame_%3d.pngprodurrà nomi file comeFrame_001.png,Frame_002.png, ...,Frame_999.png,Frame_1000.png. -
Formato Specifico: Alcuni dataset possono utilizzare un formato specifico per i nomi dei file delle immagini. Ad esempio,
dice-%2d.pngindica che il numero di sequenza è incluso nel nome del file preceduto da un prefisso (dice-) e seguito da un numero a due cifre. Assicurati di seguire il formato specifico indicato per ogni dataset.
Assicurati di controllare attentamente il formato dei nomi dei file delle immagini per ciascun dataset e seguire le indicazioni fornite per garantire una corretta elaborazione da parte del programma.
Questo progetto è distribuito con licenza MIT, che consente un uso libero e aperto dei materiali inclusi.