Questo progetto riguarda la registrazione di immagini MRI 3D tramite ottimizzazione dei parametri di trasformazione con Particle Swarm Optimization (PSO) e Continuous Particle Swarm Optimization (CPSO). Il processo include il calcolo della Mutual Information (MI) e del Root Mean Squared Error (RMSE) per valutare la qualità della registrazione.
Il codice:
- Carica due immagini MRI in formato NIfTI (.nii.gz) (una fissa e una mobile).
- Le converte in formato numerico e applica un filtro gaussiano.
- Utilizza PSO e CPSO per ottimizzare una trasformazione affine.
- Calcola e visualizza i risultati di Mutual Information e RMSE.
- MATLAB (versione 2020 o successiva).
- Image Processing Toolbox.
- NIfTI Toolbox per MATLAB (link).
- CPSO (implementato nel codice).
Esegue la registrazione utilizzando CPSO con:
- Caricamento e pre-processing delle immagini.
- Ottimizzazione dei parametri di trasformazione.
- Calcolo di Mutual Information e RMSE.
Simile a mainCPSO.m, ma utilizza PSO invece di CPSO.
objective_function.m→ Funzione obiettivo per l'ottimizzazione.create_transformation_matrix.m→ Costruisce la matrice di trasformazione affine.mutual_information.m→ Calcola la Mutual Information.rmse_control_points.m→ Calcola RMSE usando punti di controllo.rmse.m→ Calcola RMSE tra le immagini.
-
Configurazione dell'Ambiente
- Installare MATLAB e i toolbox richiesti.
- Aggiungere il toolbox NIfTI alla cartella di lavoro.
-
Caricamento delle Immagini
- Modificare i percorsi delle immagini nei file
.m:fixedImageStruct = nii_tool('load', 'Task02_Heart/imagesTr/la_019.nii.gz'); movingImageStruct = nii_tool('load', 'Task02_Heart/labelsTr/la_019.nii.gz');
- Modificare i percorsi delle immagini nei file
-
Esecuzione dello Script
- Eseguire
mainCPSO.momainPSO.min MATLAB:run('mainCPSO.m');
- Eseguire
-
Visualizzazione dei Risultati
- MATLAB mostrerà le immagini fisse, mobili e registrate.
- Verranno stampati i valori ottimizzati e le metriche di qualità.
Il file monte_carlo_results_cpso.json viene generato per analisi successive.
Per visualizzare i risultati in MATLAB:
jsonData = fileread('monte_carlo_results_cpso.json');
data = jsondecode(jsonData);figure;
for i = 1:length(data.execution_times_all)
plot(data.convergence_all{i}, 'LineWidth', 1.5);
end
xlabel('Iterazioni'); ylabel('Funzione Obiettivo');
title('Convergenza della Funzione Obiettivo');
grid on;figure;
boxplot(data.optimal_params_all, 'Labels', {'tx', 'ty', 'tz', 'θx', 'θy', 'θz', 'scale'});
title('Distribuzione dei Parametri Ottimali');
grid on;Il progetto confronta PSO e CPSO per la registrazione di immagini MRI 3D, mostrando i vantaggi dell'ottimizzazione continua sui parametri di trasformazione affine.
Questo progetto è distribuito con licenza MIT.
Per domande o suggerimenti, contattare: giovanni.iacuzzo@unikorestudent.it




