Algorithme d'optimisation pour une reconstruction d'image
Bonjour à tous !
Voici mon problème : je cherche a déterminer les caractéristiques directionnelles d'une source lumineuse, à partir de projections prises à différentes distances.
Pour faire simple, je cherche I(x,y,theta) en z=0 en comparant avec les "images" Q(x,y) en z=0:10. Pour cela, je défini un I, le projette en z=1:10, compare avec les Q correspondant, ce qui défini une fonction objectif a minimiser.
Le problème est que mon I fait 80*80*5 et que les projections en z sont longues (~1minute : pour chaque point je parcoure différentes directions theta, retrouve le I correspondant et l’additionne, moyennant pas mal de géométrie). Du coup, si j'ai bien retenu mes cours d'algo, toutes méthodes avec calcul d'une matrice de sensibilité demande de calculer une matrice de (80*80*5)*(80*80*5) soit 1 milliard de valeur... ce qui est à la fois trop gros et trop long !
J'utilise MATLAB et j'ai essayé fminsearch (erreur, matrice a créer trop grosse), fminunc, GA et LMFnlsql (algo performant déjà utilisé avant) mais même après une semaine de calcul pas de trace d’itération. Les 4 coeurs de mon pc tournent, ma fonction objectif est bien fonctionnelle, et la solution initiale pas trop éloignée.
Voila mes questions :
Pensez-vous que cette approche est correct et qu'il faut juste plus de temps ? Ou que dans tous les cas le calcul est planté ?
Une idée d'un algorithme utilisable ? je pensais à un adaptation d'un algorithme pour la reconstruction d'image (logiquement fait pour travailler avec d'aussi grosses variable), mais je n'y connais rien.
Évidemment, la réponse qui vous sautera aux lèvres sera : "Commence par utiliser un langage plus efficace et pour lequel des tonnes d'algo existe depuis 20 ans, comme C++ ou fortran..."
C'est pas faux. Mais apprendre un nouveau langage est long ! et je peux avoir accès à un cluster, si je suis sûr que mon problème est solutionnable.
Merci de me faire part de vos remarques/conseils, tout est le bienvenue !
Cordialement,
GL
Algorithme d'optimisation pour une reconstruction d'image
Bonjour, :)
Ton énoncé, dans le résumé que tu en donnes, n'est guère compréhensible en raison des abréviations employées (pour moi, tout au moins).
Citation:
Envoyé par
Gawel72
... Voici mon problème : je cherche à déterminer les caractéristiques directionnelles d'une source lumineuse, à partir de projections prises à différentes distances.
Pour faire simple, je cherche I(x,y,theta) en z=0 en comparant avec les "images" Q(x,y) en z=0:10. Pour cela, je définis un I, le projette en z=1:10, compare avec les Q correspondant, ce qui définit une fonction objectif à minimiser ...
Il va de soi qu'envisager une matrice carrée d'ordre 802*5 = 32000 conduit à une impasse. Ne s'agirait-il pas plutôt de localiser le minimum d'une somme de N carrés, avec N = 80 (?) - ce serait en tous cas un projet plus raisonnable ...
Citation:
Envoyé par
Gawel72
... Voici mon problème : je cherche à déterminer les caractéristiques directionnelles d'une source lumineuse, à partir de projections prises à différentes distances.
Pour faire simple, je cherche I(x,y,theta) en z=0 en comparant avec les "images" Q(x,y) en z=0:10. Pour cela, je définis un I, le projette en z=1:10, compare avec les Q correspondant, ce qui définit une fonction objectif à minimiser ...
Essayons de reprendre: il faut localiser une source lumineuse ponctuelle (S) connaissant un certain nombre de points I(x, y, 0) et leur "image" (par projection centrale, ou conique) Q(x', y', h) - notation abrégée.
Théoriquement, toutes les droites (IkQk) concourent en (S); mais comme cette condition ne saurait être exactement vérifiée pour l'ensemble des (N) couples de points envisagés, il faut trouver le "meilleur" point S(u, v, w) pour lequel la somme des carrés des écarts:
T = (Q1Q'1 )2 + (Q2Q'2 )2 + ... + (QNQ'N )2 est minimale.
Il suffit dans ces conditions d'exprimer (T), puis ses dérivées partielles par rapport aux coordonnées (u, v, w) de la source; l'annulation de ces dernières doit conduire à 3 équations linéaires.
Deux remarques, mais qui ne remettent pas en cause la méthode proposée:
(*) Tu localises apparemment la source par un angle (Thêta = (Oz,OS) = Arctan((u2 + v2)1/2 / w) ?); cependant les coordonnées cartésiennes sont ici les meilleurs paramètres.
(**) L'énoncé paraît avoir subi une inversion: la source de lumière étant à priori placée "vers le haut" (w>>h), les points (I) - de cote nulle - ne seraient-ils pas plutôt les "ombres" (ou images par projection centrale) des points (Q) correspondants, de cote (h) positive ? Là non plus, ce n'est qu'un détail.