Bonjour,
Je cherche à optimiser l'opération suivante : je possède une matrice d'entrée (représentant une image par ex.) de dimension NxN pixels. Je possède aussi 2 matrices de "transfert" qui m'indiquent localement (en (i,j)) le déplacement en x et y (en pixel) du pixel (i,j) de ma matrice d'entrée pour générer ma matrice de sortie (l'objectif étant de simuler une image localement distordue).
Actuellement, je réalise l'opération de "transformation" par 2 boucles "for" en décalant la matrice d'entrée via la fonction "circshift" :
Ces 2 boucles "for" sont consommatrices de temps de calcul.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 for jj = 1 : N for ii = 1 : N mire_entree_decalee=circshift(mire_entree,[round(decal_x(ii,jj)) round(decal_y(ii,jj))]); %decal_x = matrice de transfert en X %decal_y = matrice de transfert en Y mire_sortie(ii,jj)=mire_entree_decalee(ii,jj); end end
Je me demandais si il n'existerait pas une solution plus astucieuse pour économiser en temps de calcul !
Merci par avance de vos réponses,
O.M.
Partager