Bonjour,
J'essaye actuellement d'optimiser un code afin que son exécution soit plus rapide. Malheureusement, je me retrouve confronté à un problème dont je n'arrive pas à déterminer a cause. Je m'explique :
Le but de mon code est de lire un fichier contenant une séquence d'image, d'en extraire une en particulier, de réaliser un traitement puis de passer à l'image suivante et ainsi de suite jusqu’à la dernière image (en simplifier).
J'ai donc réaliser une boucle for pour réaliser cela.
Ce qui est étrange c'est que lors de la lecture des premières images, la boucle est relativement rapide, et qu'arrivé à une certaine image, le temps passé pour une itération est multiplié par 10...
Voici la partie de mon code contenant la boucle dont je vous parle, ainsi que le code me permettant d'extraire une image de la séquence d'image (ReadSML) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 for nbr = 1 : nbrImages cd(pathRef); [a, dataRef, a] = ReadSML(nomRefSML,nbr); cd(pathAdj); [a, dataAdj, a] = ReadSML(nomAdjSML,nbrImages - nbr + 1); energieTopo = energieTopo + ((dataRef.^2) .* (dataAdj.^2)); gradTopo = gradTopo + ((dataRef) .* (dataAdj)); end
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 function [header, data, maxData, minData] = ReadSML(filename,image) file = fopen(filename,'rb'); fseek(file,4,'cof'); header.NbX = fread(file,1,'int'); header.NbZ = fread(file,1,'int'); header.NbY = fread(file,1,'int'); header.NbPasTemporel = fread(file,1,'int'); fseek(file,56,'cof'); header.PasSpatial = fread(file,1,'float'); header.PasTemporel = fread(file,1,'float'); fseek(file,3478,'cof'); header.PasImages = fread(file,1,'int'); fseek(file,94,'cof'); header.NbImages = fread(file,1,'int'); fseek(file,8,'cof'); deplacement = (image-1)*(header.NbX*header.NbY+1)*4; fseek(file,deplacement,'cof'); data = fread(file,[header.NbY, header.NbX],'float'); data = data'; minData = min(min(data)); maxData = max(max(data)); fclose(file);
Je vous remercie d'avance pour votre aide!
Partager