Bonjour,
Je suis sur du traitement d'images, plus précisément du face morphing.
Mon programme est un peu long à s'exécuter à mon goût. J'ai déjà
fait un PROFILE pour voir ce qui prenait le plus de temps, donc voilà
ce qui me pose problème :
Ce qui prend le plus de temps est l'appel à la fonction imtransform,
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 coeff = [1 oeil_left(1)+diff_pt1(1) oeil_left(1)+diff_pt1(1);... 1 1 oeil_left(3)+diff_pt1(2);] /... [1 oeil_left(1) oeil_left(1);... 1 1 oeil_left(3);... 1 1 1]; tform = maketform('affine', [coeff(1) coeff(3) 0; coeff(2) coeff(4) 0; 0 0 1]); tri = src(1:oeil_left(3), 1:oeil_left(1), :); tmp = imtransform(tri,tform); tmp_size = size(tmp); tmp_src(1:tmp_size(1) - 1, 1:tmp_size(2) - 1,:)=... tmp(1:tmp_size(1) - 1, 1:tmp_size(2) - 1,:);
comme c'est une fonction matlab, je doute que je puisse y faire grand
chose
Cependant, je dois répéter ce petit bout de code beaucoup de fois, et
les matrices que j'utilise pour calculer coeff sont toutes différentes.
Donc, au final, je me retrouve avec un fichier immense, avec ce petit bout
de code, quasi recopier, une trentaine de fois.
Est-ce qu'il y aurait moyen de réduire tout ça ?
* Est-ce que ça vaut le coup que je passe tout le fichier en C ?
* Je pourrais faire une grosse matrice regroupant tous mes "coeff"
et seulement ensuite faire un seul appel à imtransform, du genre :
ça serait possible ? ou alors ça servirait à rien ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 tform = maketform('affine', liste_coeff(:)); tri = src(1:oeil_left(3), 1:oeil_left(1), :); tmp = imtransform(tri,tform(:));
Merci,
--
Aurélie Barbier
Partager