Bonjour tout le monde.
Je travaille actuellement sur le calcul de coupes sagittal et coronal à partir d'une image axial (imagerie médicale).
Bon jusque là aucun soucis, j'ai stocké toutes mes images axiales dans une matrice 3D ainsi en récuperant les lignes j'ai les coronal et les colonnes les sagittal.
Ensuite on affiche le tout et pour faire plaisir aux qui veulent s'en servir , un joli mouseDragged pour se promener dans les images et afficher les coupes correspondantes, cependant là c'est le hic. Ca rame
Un screenshot pour avoir une idée de ce à quoi ça ressemble :
Donc quand on déplace la souris dans la fenetre Coronal, cela met à jour l'axial et la sagittal, quand on est sur l'axial ça met à jour la coronal et sagittal ainsi de suite.
Un peu de code maintenant :
Voila comment j'extrait chacune des coupes. J'ai aussi remarqué que quand je me déplace dans mon image coronal la mise à jour de l'axial et la sagittal est instantanée ce qui est parfait pour mon utilisation, cependant dans les autres cas ça rame. J'ai remarqué que ça dépendait des indices auxquels on veut accéder dans le tableau 3D. Je pense que c'est une histoire de comment c'est stocké en mémoire, contigu ou non, etc...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 public int[][] getYZ(int X) { for(int Z=0;Z<depth;Z++) for(int Y = 0;Y<height;Y++) { coronal[Y][Z]=rubik[Z][X][Y]; } return coronal; } /** * * @param Z * @return */ public int[][] getXY(int Z) { for(int X = 0;X<width;X++) for(int Y=0;Y<height;Y++) { axial[X][Y]=rubik[Z][X][Y]; } return axial; } /** * * @param X * @return */ public int[][] getXZ(int Y){ for(int Z=0;Z<depth;Z++) for(int X = 0;X<width;X++) { sagittal[X][Z]=rubik[Z][X][Y]; } return sagittal; }
Du coup je sèche un peu sur comment accélérer tout ça, j'ai trouvé des librairies externes comme COLT qui semble pouvoir extraire n'importe qu'elle tranche d'une matrice 3D en O(1), mais si je peux éviter les librairies externes ça m'arrangerait.
Auriez vous une idée de comment améliorer tout ceci?
Sinon je pensais à m'orienter sur des arrayList, mais est ce que ce sera plus rapide?
PS : je m'excuse d'avance si un post sur un thème similaire à déjà été fait, car il aurait échappé à mes recherches.
Je vous remercie d'avance, bonne journée à vous tous.
Partager