MATLAB mesurer la rotation et translation moyenne entre 2 images
Discussion fermée
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 58

MATLAB mesurer la rotation et translation moyenne entre 2 images



  1. #1
    invitee86e7aea

    MATLAB mesurer la rotation et translation moyenne entre 2 images


    ------

    Bonjour,

    je cherche une fonction matlab capable de mesurer la rotation et translation moyenne entre deux images, afin de pouvoir obtenir le drift entre mes deux images.
    Voici mes images:

    aftjpg.jpg

    befjpg.jpg


    Le principal pb etant que je ne suis pas sure que la translation/rotation est homogene sur la surface...

    Merci pour votre aide!!
    Aude

    -----

  2. #2
    inviteb6b93040

    Re : MATLAB mesurer la rotation et translation moyenne entre 2 images

    Il me semble qu'une fonction automatique pour celà serait trop longue à exécuter sans info supplémentaire
    on doit au moins fournir 3 points communs aux 2 images, le plus éloigné et le moins aligné possibles

  3. #3
    inviteb9f49292

    Re : MATLAB mesurer la rotation et translation moyenne entre 2 images

    Si tu es capable d'identifier 2 couples de points identiques sur tes images alors c'est très facile il me semble ?

    Sinon quelques pistes:

    Je crois que la transformée de Radon permet de récupérer l'angle et le centre d'une rotation entre 2 images (mais un tour le wikipedia fr ne m'a pas vraiment avancé)

    peut-être peux tu tirer des info intéressante des vecteurs construits comme la somme des éléments par ligne et par colonne ?

    Le principal pb etant que je ne suis pas sure que la translation/rotation est homogene sur la surface...
    Ca, ça risque de complexifier la chose...

  4. #4
    inviteb6b93040

    Re : MATLAB mesurer la rotation et translation moyenne entre 2 images

    Il y a une explication là http://images.math.cnrs.fr/Le-theoreme-de-Radon.html
    il devrait être possible de repérer des triangles dans une image et de la rechercher dans l'autre, la rotation/translation conservant les distances entre les points et les angles du triangles

  5. A voir en vidéo sur Futura
  6. #5
    Dlzlogic

    Re : MATLAB mesurer la rotation et translation moyenne entre 2 images

    Bonjour,
    Le cas général est la transformation affine. En effet, il n'y a aucune raison que le deux images soient strictement semblable.
    Cette méthode est utilisée habituellement pour calculer la correspondance entre deux cartes par exemple, ou pour caler une photo aérienne sur une carte.
    Dans la pratique, on identifie quelques couples de points "correspondant" (en gros, une dizaine) et on calcule les 6 paramètres de la transformation pas la méthode des moindres carrés.

  7. #6
    Dlzlogic

    Re : MATLAB mesurer la rotation et translation moyenne entre 2 images

    J'ai fait le calcul sur 7 points. Les valeurs sont en pixels.
    Les résultats ne sont pas très bon à mon avis. Mauvaise saisie, peut-être, mais comme il n'y a pas de point qui soit visiblement faux, le seul moyen de savoir est de digitaliser d'autres points. A vous de me dire.
    Données de base
    n°=1 xA=83.00 yA=82.00 xN=102.00 yN=61.00
    n°=2 xA=538.00 yA=14.00 xN=539.00 yN=12.00
    n°=3 xA=671.00 yA=272.00 xN=660.00 yN=249.00
    n°=4 xA=613.00 yA=440.00 xN=597.00 yN=429.00
    n°=5 xA=146.00 yA=458.00 xN=146.00 yN=455.00
    n°=6 xA=80.00 yA=256.00 xN=80.00 yN=253.00
    n°=7 xA=328.00 yA=300.00 xN=325.00 yN=299.00
    point 1 X= 96.67 Y= 73.73 écart= 13.80
    point 2 X= 540.34 Y= 0.93 écart= 11.15
    point 3 X= 659.32 Y= 260.02 écart= 11.04
    point 4 X= 596.62 Y= 430.06 écart= 1.12
    point 5 X= 143.24 Y= 452.52 écart= 3.71
    point 6 X= 87.05 Y= 249.32 écart= 7.96
    point 7 X= 325.75 Y= 291.43 écart= 7.61
    erreur moyenne quadratique sur les 7 points = 3.38 m.
    Paramètre de la formule
    xN = Tx + XX * xA + XY * yA
    yN = Ty + YX * xA + YY * yA
    xA = x - CxA ; yA = y - CyA
    CxA = 351.29 CyA = 260.29
    Tx = 369.23 Ty = 242.90 XX = 9.69347E-01 XY = -3.85403E-02 YX = -9.21383E-03 YY = 1.00896E+00

  8. #7
    Dlzlogic

    Re : MATLAB mesurer la rotation et translation moyenne entre 2 images

    Je voudrais faire un petit complément strictement théorique.
    Soit deux images semblables ou assimilées comme tel. Alors il existe une infinité de transformations "translation + rotation" qui font correspondre ces deux images. Si on ajoute une homothétie, cela ne change rien. Autrement dit, il faudrait préciser le but de la question.
    Les calculs que j'ai faits, la transformation affine, correspondent à un hypothèse précise que je peux expliquer, mais elle n'est pas forcément justifiée.

  9. #8
    invitee86e7aea

    Re : MATLAB mesurer la rotation et translation moyenne entre 2 images

    Merci pour vos réponses, notamment Dlzlogic pour vos propositions.

    J’essaye de mettre en place la méthode de Cell Traction Force Microscopy pour mesurer les forces exercées par une cellule sur la surface d’un matériau. Pour cela, j’ai besoin d’une photo de billes fluorescentes (mes photos) sur la surface de mon gel « force loaded » =avec la cellule, et une « null force » =sans la cellule. Je mesure ensuite le déplacements et transforme les déformations en forces.

    Le problème est qu’entre mes deux prises d’images, le matériau « drift » très légèrement. J’ai donc besoin d’identifier et soustraire ce drift pour obtenir les vrais déplacements dus à la cellule.

    J’ai pensé à une autre méthode pour trouver le drift : prendre les 4 coins de ma photo (où la cellule n’a pas d’influence), puis calculer le drift par cross-corrélation entre les deux images. Je cherche actuellement un code MATLAB qui pourrait faire ça.
    Si vous avez d’autres idées elles sont les bienvenues !

    Merci

  10. #9
    Dlzlogic

    Re : MATLAB mesurer la rotation et translation moyenne entre 2 images

    Bonjour,
    Donc, j'étais à côté de la plaque.
    Je résume : vous prenez deux photos successives d'une même image où vous cherchez à mesurer le déplacement de cellules (ce que j'ai pris pour des étoiles).
    Mais pour des raisons que je ne connais pas il y a un certain déplacement général, disons du support de prise de vue. Vous cherchez à mesurer ce déplacement, de façon à corriger ce qu'on appelle un écart systématique.
    Si c'est ça, c'est la méthode que j'ai indiquée, mais en prenant comme point homologues les quatre coins et surtout pas les "étoiles".

    Concernant Matlab, je ne pourrai pas vous aider, par contre je peux vous donner un petit utilitaire qui fais ça, ou vous donner le code en C, ou en PHP.
    Une dernière question : pourquoi translation + rotation ? Il y en a une infinité. Si vous avez les coefficients de transformation affine de 1->2, une cellule mesurée sur la photo 1 pourra être "reportée" sur la photo 2 et vous pourrez ainsi mesurer le déplacement vrai.

    Bonne journée.

  11. #10
    invite6c250b59

    Re : MATLAB mesurer la rotation et translation moyenne entre 2 images

    Citation Envoyé par aude21 Voir le message
    Le problème est qu’entre mes deux prises d’images, le matériau « drift » très légèrement. J’ai donc besoin d’identifier et soustraire ce drift pour obtenir les vrais déplacements dus à la cellule.
    Est-ce que tu peux faire l'hypothèse que les déplacements dus à la cellule sont en moyenne négligeables par rapport au « drift »? Si non, tu es fourré. Si oui, tu peux simplement programmer une exploration systématique de toutes les petites transformations appliquée à une image (ajout de translation et de rotation) et prendre celle qui minimise l'erreur avec la nouvelle image. Une amélioration serait de glisser sur le gradient d'erreur plutôt que de tout calculer systématiquement, mais dépendant des cas cela ne vaut possiblement pas la peine -d'autant que tu vas probablement vouloir te convaincre que cela marche en faisant des graphiques avec erreur=f(translation) ou f(rotation) ou f(rotation, translation), ce qui nécessite de tout calculer de toute façon.

    Dlzlogic, ta méthode serait bonne si on pouvait avoir une garantie qu'il existe des points de références commun, mais il ne me semble pas que ce soit le cas.

  12. #11
    Dlzlogic

    Re : MATLAB mesurer la rotation et translation moyenne entre 2 images

    @ Jiav,
    Oui, nous sommes d'accord. Cependant il semble bien, d'après ce que dit Aude, qu'il y a des points fixes entre les deux images. peut-être les toutes petites étoiles. C'est ce que j'essaye de comprendre, d'où ma dernière réponse. En gros, j'essaye de comprendre la réalité du problème.

  13. #12
    invitee86e7aea

    Re : MATLAB mesurer la rotation et translation moyenne entre 2 images

    Merci Dlzlogic et Jiav pour vos réponses.

    Ce que vous appelez "étoiles"sont en réalité des billes fluorescentes à la surface de mon matériau qui me servent à mesurer le déplacement à la surface de mon matériau induit pas les forces exercées par ma cellule. On ne peut pas voir la cellule sur ces photos. En résumé, voici donc les 3 photos nécessaires à mon étude :

    1. la cellule sur la surface de mon matériau

    well8 cellll.jpg

    2. les billes fluorescentes à la surface de mon matériau "force loaded"=avec la cellule toujours attaché à la surface

    well8 bef.jpg

    3. les billes fluorescentes à la surface de mon matériau "null force"=la cellule n'est plus attachée à la surface

    well8 aft.jpg


    Pour mesurer le déplacement à la surface de mon matériau induit pas les forces exercées par ma cellule, je dois donc soustraire la position des billes fluorescentes entre les deux images, SAUF qu'entre mes deux prises d'image, mon matériau se déplace légèrement, et j'ai donc besoin d'identifier ce drift (pour le soustraire et pour obtenir le déplacement des billes réellement dus à la cellule). J'espère que mon explication est plus claire maintenant.

  14. #13
    invite6c250b59

    Re : MATLAB mesurer la rotation et translation moyenne entre 2 images

    Oui c'est plus clair. Les deux méthodes marcheraient, mais dans les deux cas je te suggère de commencer par mettre un masque (exclure un cercle centrée sur la cellule, avec une certaine marge) afin d'éviter toute contamination du signal d'intérêt dans le calcul du drift.

  15. #14
    invitee86e7aea

    Re : MATLAB mesurer la rotation et translation moyenne entre 2 images

    Je pensais sélectionner les 4 coins de ma photo (en simplement rognant), qui sont des zones où la cellule n'a pas d'influence, et calculer le drift pour chacun de ces coins avec un code matlab (via cross correlation), et ensuite prendre la "moyenne" des drifts calculés. Qu'en pensez-vous?

  16. #15
    Dlzlogic

    Re : MATLAB mesurer la rotation et translation moyenne entre 2 images

    Bonjour,
    J'ai fait une petite expérience :
    D'abord, j'ai utilisé les images en négatif.
    Pour chacune des deux images, j'ai diminué le nombre de couleurs, l'une en rouge sur fond transparent, l'autre en vert sur fond blanc.
    Puis j'ai superposé les deux images graphiquement, c'est à dire que j'ai une précision de 1 ou 2 pixels. Le résultat est que les images sont identiques, à un ou deux pixels près. Je peux faire une comparaison numérique, c'est à dire compter et produire une image des pixels différents, ou toute sorte de chose.
    En fait, à première vue, la seule différence est la "taille" des étoiles, c'est à dire que sur une image les étoiles sont plus marquées, donc plus grosses. C'est à dire que cette opération étant faite, tous les pixels visibles de l'image 1 sont présents et à la même position sur l'image 2.

  17. #16
    invite6c250b59

    Re : MATLAB mesurer la rotation et translation moyenne entre 2 images

    Cela devrait marcher, mais je te suggérerais de sortir les calculs avec plusieurs méthodes (par exemple une avec un seul coin et une avec la moyenne). Si les photos que tu as mis sont typiques, je m'attend à ce que le calcul avec un seul coin donne une approximation très proche de la moyenne, ce qui te validera que ta méthode est ok. (si ce n'est pas le cas, ce sera un signe qu'il y a une subtilité à comprendre)

    (croisement)

  18. #17
    invitee86e7aea

    Re : MATLAB mesurer la rotation et translation moyenne entre 2 images

    Dlzlogic, "les images sont identiques, à un ou deux pixels près." Je pense que c'est ce "à un ou deux pixels près" que j'ai besoin d'identifier. En trouvant le drift entre mes deux images je pourrais le soustraire aux positions x et y de mes billes sur la photo 2 et ainsi comparé les positions avec celles de la photo 1.

    Jiav, voulez-vous dire que si ce n'est pas le cas, alors mon drift n'est pas uniforme sur la surface de mon matériau?

  19. #18
    invite6c250b59

    Re : MATLAB mesurer la rotation et translation moyenne entre 2 images

    Oui, ou une autre raison a decouvrir. Exemple: si le drift est modelise comme une translation alors qu'il faudrait une rotation, alors il va y avoir des differences selon le coin pris pour a peu pres toutes les images. Si des poussieres s'ajoutent de temps en temps a l'image, alors le calcul avec les differents coins donnera des resultats differents pour une petite partie des images seulement. Autrement dit, lancer plusieurs calculs qui devraient en theorie donner a peu pres la meme chose agit comme un controle qualite.

  20. #19
    Dlzlogic

    Re : MATLAB mesurer la rotation et translation moyenne entre 2 images

    Bonjour,
    J'ai toujours un peu de mal à comprendre.
    On veut comparer deux photos "presque" identiques.
    En fait ces photos on une différence importante : leur degré de luminosité, ce qui fait que un même point prendra l'espace d'un pixel sur une photo et l'espace de 4 pixels sur une autre.
    D'autre part, je propose des méthodes précises et rigoureuses pour faire des comparaisons et on préfère des méthodes simplifiées, alors que l'on cherche à identifier des quantités extrêmement petites.
    Il est évident que si vous aviez dit que la quantité cherchée est de l'ordre du pixel, c'est à dire de l'unité de définition, la démarche intellectuelle aurait été différente.
    Par ailleurs, je ne sais toujours pas si les billes phosphorescentes sont la dizaine de "grosse étoile" ou chacun des points petit ou grand. Si ça se trouve, au contraire, les grosses étoiles sont à ignorer.
    Bref, on a beau essayer de deviner, mais il y a peu de chance de tomber juste.

    @ Jiav,
    Le problème que vous soulevez est le problème de erreurs. Une erreur est soit systématique, soit accidentelle. Ce que l'on appelle le "drift", (pourquoi pas dire la dérive ?) est une erreur systématique que l'on ne connait pas mais que l'on peut apprécier grâce aux zones proches des angles. Dans le cas présent, j'ai constaté (cad c'est mon avis) qu'il est très faible, voire nul.
    Sur un plan strictement mathématique, pour passer d'une image à une image égale (pardon, isométrique) il existe une rotation et une seule. Si on veut utiliser aussi la translation, alors il existe une infinité de couple translation+rotation.

  21. #20
    invite6c250b59

    Re : MATLAB mesurer la rotation et translation moyenne entre 2 images

    @Dlzlogic, Je ne pense pas comprendre ton raisonnement. Pourrais-tu donner un exemple de deux images simples (ou complexes au besoin) pour lesquelles il existe une infinité de translation+rotation, ou pour lesquelles la méthode que tu proposes est plus précise?

  22. #21
    Dlzlogic

    Re : MATLAB mesurer la rotation et translation moyenne entre 2 images

    Soit deux vecteurs de même longueur, dans le plan. Il existe une rotation et une seule qui permet de passer d'un vecteur à l'autre.
    Précision en matière de vocabulaire, j'appelle vecteur un segment orienté. Le centre de rotation est l'intersection des médiatrices des segments joignant les origines et les extrémités des vecteurs.
    Si on applique une translation à l'un des vecteurs, la rotation permettant de passer d'un vecteur à l'autre sera différente, mais unique. Il existe donc une infinité de couples translation+rotation permettant de passer d'un vecteur à l'autre.
    Ce qui est vrai pour 2 vecteurs est vrai pour n'importe quel couple de deux images isométriques.

    Concernant la précision de l'opération. C'est beaucoup plus difficile à expliquer et même très controversée, bien que cette méthode est utilisé en permanence pour la cartographie et ce qui s'y rattache de près ou de loin. Je vais essayer de résumer.
    Soit deux images "à peu près pareille". Cela sous-entent une carte nouvelle et une carte ancienne de la même zone, par extension, mais avec des précautions, cela peut s'appliquer à une photo aérienne et une carte etc.
    Dans le cas général, la transformation la meilleure est la transformation affine. Dans de nombreux cas, on se contente d'une rotation+homothétie à quoi on rajoute une translation pour des raisons strictement numériques. Dans le cas présent le rapport d'homothétie est probablement 1.000.
    Le problème consiste donc à définir les paramètres de cette transformation. Naturellement deux points (ou 3 pour la transformation affine) suffisent pour un mathématicien, puisque ces points sont supposés être exactes. Dans la pratique, ce n'est pas vrai, alors on prend plusieurs points "de calage" et on calcule les paramètres de la transformation, les plus probables, par la méthode des moindres carrés des écarts entre les points mesurés et les points observés.
    Ceci est très résumé, mais je peux développer dans les moindres détails.

  23. #22
    invite6c250b59

    Re : MATLAB mesurer la rotation et translation moyenne entre 2 images

    Citation Envoyé par Dlzlogic Voir le message
    Ce qui est vrai pour 2 vecteurs est vrai pour n'importe quel couple de deux images isométriques.
    Cela marche certainement pour les vecteurs (et les points ). Prenons un exemple concret pour une image à trois points tel que: un triangle défini par les points (-1,0) (-1,3) (-6,0), et son image après une translation (x=>x+1) suivi d'une rotation (+90 degrés, centré sur l'origine). Quel autre couple de translation+rotation donnerait le même résultat?

    Citation Envoyé par Dlzlogic Voir le message
    Concernant la précision de l'opération. C'est beaucoup plus difficile à expliquer (...) deux points (ou 3 pour la transformation affine) suffisent pour un mathématicien, puisque ces points sont supposés être exactes. Dans la pratique, ce n'est pas vrai, alors on prend plusieurs points "de calage" et on calcule les paramètres de la transformation, les plus probables, par la méthode des moindres carrés des écarts entre les points mesurés et les points observés.
    C'est très bien expliqué mais... cela n'explique en rien ta suggestion selon laquelle la méthode que tu proposes est plus précise ou plus rigoureuse. Au contraire en fait: n'est-ce pas toi qui proposais de prendre seulement quelques points, et moi une méthode basée sur presque tous les points?

    Comme je l'ai déjà dit je ne pense pas que les deux méthodes donneront des résultats différents (du moins dès que le nombre de points pris, avec la première méthode, est raisonnable). La principale différence, pour l'application visée, est qu'il existe probablement des petits changements de focus ou d'exposition, donc une déformation des points. Dépendant des circonstances cela peut être un problème pour une méthode basée sur la détection explicite de points commun, alors que cela ne changera rien pour une méthode de minimisation de l'erreur totale. A l'inverse, on peut imaginer des circonstances (déplacement suffisant pour que la cellule sorte du masque) dans laquelle la minimisation sera biaisée -d'où l'idée de calculer le drift de plusieurs façons afin de signaler les cas d'anomalies.

    PS: il y a deux autres avantages: augmenter sa confiance que le programme marche et vérifier que les déplacements sont réellement modélisables comme un couple de translation+rotation.

  24. #23
    Dlzlogic

    Re : MATLAB mesurer la rotation et translation moyenne entre 2 images

    Bon, là j'avoue que je n'ai rien à répondre.
    Soit deux figures isométriques dans le plan,il existe une rotation et une seule pour passer de l'une à l'autre.
    Concernant la comparaison de deux images, avec beaucoup de points, dans la pratique le choix de 6 à 10 points permet de calculer les paramètres de la transformation, ceci dans le cas général où les points sont "approximativement" les mêmes, à une transformation près (rotation+homothétie près, la translation n'étant qu'un artifice de calcul. Dans le cas présent, étant donné qu'il n'y a pas de déformation, le chois de quelques points choisis dans les angles donnera un bon résultat pour les paramètres de transformation. On pourra ensuite effectuer la dite transformation et comparer les images dans la zone centrale.
    Ceci dit, on a fait pas mal d'hypothèses, la presque identité des deux image rend l'opération injustifiable.
    NB. il est évident que je me place dans le cas où la transformation affine n'est pas nécessaire.

  25. #24
    invitee86e7aea

    Re : MATLAB mesurer la rotation et translation moyenne entre 2 images

    Bonjour,

    Dlzlogic,
    "Par ailleurs, je ne sais toujours pas si les billes phosphorescentes sont la dizaine de "grosse étoile" ou chacun des points petit ou grand."
    Ce sont toutes les "étoiles": j'ai besoin de la position d'environ 2000 étoiles pour pouvoir lancer mon particle-tracking code (qui track la position de mes billes entre les deux images) après avoir identifier le drift.

    Je suis un peu confuse... quelle méthode est plus précise que la "cross correlation" pour vous au final? La transformation des images en négatif + comparaison numérique, ou la transformation affine? Car plus mon drift sera identifié précisément, mieux ça sera.
    De quelle méthode parlez-vous dans votre dernier commentaire?

  26. #25
    invitee86e7aea

    Re : MATLAB mesurer la rotation et translation moyenne entre 2 images

    En utilisant la fonction normxcorr2 de matlab (cross-correlation) entre mes deux images, je trouve différents "offset" pour trois coins différents (coins rognés, ou la cellule n'a pas d'influence). Pour [offset_x,offset_y]:
    coin gauche haut: [-2,-2]
    coin gauche bas : [-1,-1]
    coin droit haut : [0,-2]
    Les résultats ne sont pas égaux j'ai donc cherché une autre technique.

    En utilisant la cross corrélation dans le domaine spatiale, (avec les fonctions citées dans ce lien : http://stackoverflow.com/questions/1...ift-of-another)
    J'obtiens :
    coin gauche haut: [1,0]
    coin gauche bas : [0,2]
    coin droit haut : [0,0]

    Une fois de plus pas vraiment exploitable... Surtout que les résultats sont en pixels et donc comme le rappelle Dlzlogic, pas très précis...

    Sinon, avec le particle tracking code qui est capable de déterminer la position de ma bille entre photo1 et photo2, je pensais simplement faire la différence de mes positions avec une bille dans chacun des coins (pas d'influence de ma cellule), mais j'ai par exemple :

    x y photo drift x drift y
    13,08238311 45,46434837 1 0,161404126 0,885520515
    12,92097899 44,57882786 2

    668,737204 499,4698298 1 0,02096897 1,220112112
    668,716235 498,2497177 2

    11,48932512 439,9822186 1 0,409373201 1,09205229
    11,07995192 438,8901663 2

    664,566391 10,85178473 1 -0,043726139 1,17929357
    664,6101172 9,672491156 2


    Comme on peut le voir mes déplacements ne sont pas tout le temps égaux... devrais-je faire une moyenne, est-ce pertinent? Sinon je peux créer un triangle avec trois points, comment pourrais-je alors calculer le déplacement de mon triangle (je pense que c'est trivial mais je bloque...)?
    Merci pour votre aide!

  27. #26
    Dlzlogic

    Re : MATLAB mesurer la rotation et translation moyenne entre 2 images

    Bonjour,
    Je crois que maintenant j'ai compris le problème.
    1- dans les coins on suppose que les billes gardent leur position entre les photos 1 et 2. On peut donc déterminer la dérive.
    2- l'utilisation des pixels est précise, c'est éventuellement le résultat qui ne l'est pas
    3- je vais faire une comparaison numérique des deux images après avoir corrigé la dérive de l'une par rapport à l'autre
    4- au préalable, je vais modifier la luminosité de la photo 1 pour être du même ordre que celle de la photo 2.
    5- au final je vais faire une "carte" des déplacement 1-->2.
    Il faut me laisser un peu de temps.

  28. #27
    invite6c250b59

    Re : MATLAB mesurer la rotation et translation moyenne entre 2 images

    Citation Envoyé par aude21 Voir le message
    Les résultats ne sont pas égaux j'ai donc cherché une autre technique. (...) 13,08238311
    C'est très bien même si perso je n'ai pas compris la troisième méthode. Pour les deux premières: ce que tu dois faire maintenant dépend de comment tu interprètes le résultat.

    Est-ce que des résultats différents signifient nécessairement que les méthodes sont insatisfaisantes? Dis autrement: si tu as trois méthodes qui te donnent (pour un paramètre quelconque en pixel) 13,08238311 et 13,08238928 et 13,08238057, est-ce que tu conclues que les résultats sont différents? J'imagine que non. Alors, pourquoi penses-tu qu'une différence de quelques pixels (pour les deux premières méthodes) signifie nécessairement que le résultat est faux?

    Peut-être que tu as raison (par exemple, peut-être que la dérive est mieux décrit par une rotation que par une translation). Mais peut-être aussi que tu es simplement devant du bruit expérimental et qu'il faut conclure que les résultats sont "égaux, au bruit expérimental près"). (si c'est la conclusion, ma suggestion est de prendre la médiane de quelques méthodes indépendante afin d'avoir plus de robustesse en cas d'anomalie sur une image)

    Pour le vérifier une façon de faire est d'imposer toi-même un drift. Technique: prend une image expérimentale "mère" et tires-en deux images "filles" un peu plus plus petites et avec un décalage de m*n pixels (ce qui simule un drift [m,n]), puis fourni ces deux images filles à tes algorithmes de détection du drift. En variant [m,n] tu pourras alors comparer les décalages trouvés par tes différents algorithmes de calculs (et leur médiane si tu suis ma suggestion précédente) et conclure sur leur niveau de précision réel (ainsi que leur éventuel biais). Si tes méthodes sont correctes, le niveau de précision sera à nouveau de l'ordre de quelques pixels aussi. Si elles sont fausses, tu observeras une erreur beaucoup plus importante, ou un biais systématique.

    EDIT: croisement

  29. #28
    invitee86e7aea

    Re : MATLAB mesurer la rotation et translation moyenne entre 2 images

    Pour moi le fait que je ne trouve pas 4 fois le même drift pour mes 4 coins n'est pas cohérent...Je pensais trouver 4 fois le même (ou environ le même, au moins le même signe) offset en x et en y, ce n'est pas le cas. Dans ce cas mon drift ne serait pas le même sur toute la surface mon matériau...

    Pour la méthode 3 :
    Etant donné que je fais l'hypothèse que mon drift dans les coins n'est dû QUE au microscope (drift entre les 2 prises d'image) et pas à la cellule, alors si je fais simplement la différence entre la position de ma bille sur la photo 1 et la position sur la photo 2, j'identifie mon drift.
    Grâce à mon particle tracking code, je connais les positions de mes billes dans la photo 1 puis 2. Par exemple, avec 4 points (1 dans chaque coin):

    Nom : Capture.JPG
Affichages : 362
Taille : 35,1 Ko

    On constate que mes déplacements ne sont pas tout le temps égaux... Ma question était donc: devrais-je faire une moyenne, avec combien de points par coin; est-ce pertinent? Sinon je peux créer un triangle avec trois points (chacun dans un angle différent), comment pourrais-je alors calculer le déplacement de mon triangle (je pense que c'est trivial mais je bloque...)?

  30. #29
    invite6c250b59

    Re : MATLAB mesurer la rotation et translation moyenne entre 2 images

    Citation Envoyé par aude21 Voir le message
    pas cohérent...Je pensais trouver 4 fois le même (ou environ le même
    Encore une fois: qu'est-ce qui te fait dire que ces 4 résultats ne sont pas "environ le même"? Dit autrement: pourquoi est-ce que c'est tu conclues à une incohérence dans le cas de ces deux méthodes, alors que tu ne conclues pas à une incohérence pour la troisième méthode qui montre aussi des différences?

    Citation Envoyé par aude21 Voir le message
    Pour la méthode 3 :
    Ok compris. Quelle est l'unité de mesure?

    Citation Envoyé par aude21 Voir le message
    Ma question était donc: devrais-je faire une moyenne, avec combien de points par coin; est-ce pertinent?
    Si tu es convaincu que ces écarts sont "égaux, au bruit expérimental près", alors ma suggestion est de prendre la médiane des résultats calculés indépendamment pour chacun des 4 coins(pour des raisons de robustesse).

    Citation Envoyé par aude21 Voir le message
    Sinon je peux créer un triangle avec trois points (chacun dans un angle différent), comment pourrais-je alors calculer le déplacement de mon triangle (je pense que c'est trivial mais je bloque...)?
    En soustrayant les coordonnées d'un même sommet. Par exemple si le sommet 1 est aux coordonnées (10;100) sur une image et aux coordonnées (20, 50) sur une autre image, alors elle a subit une translation selon le vecteur (10; -50). Le résultat doit être le même pour les trois sommets. Si ce n'est pas le cas alors soit le triangle n'est pas invariant, soit il n'a pas subit une simple translation.

  31. #30
    invitee86e7aea

    Re : MATLAB mesurer la rotation et translation moyenne entre 2 images

    Je conclue à une incohérence car je ne vois pas comment exploiter ces résultats si le offset est différent... comment savoir lequel choisir? De plus ce n'est pas trop applicable à mes données puisque je cherche une valeur que je pourrais soustraire à l'ensemble de mes positions pour soustraire le drift...si je soustrais -2 (drift trouvé avec cross correlation) à toutes mes positions x, je ne pense pas que ça marchera.

    L'unité de mesure est le pixel.

    Concernant la médiane des résultats calculés indépendamment pour chacun des 4 coins, me conseillez-vous de faire préalablement pour chaque coin une moyenne (ou médiane) sur plusieurs points? Je pense que plus j'utilise de points, plus ça sera précis...?

    J'ai essayé la méthode du triangle et je ne trouve pas exactement le même résultat, mais c'est dans le même ordre de grandeur (à part pour le coin bas droit, peut etre car ma photo est "floue" à ce niveau.) :

    Nom : Capture2.JPG
Affichages : 361
Taille : 91,5 Ko


    Pensez-vous que c'est une bonne idée si je prends par exemple, pour 1 coin, la moyenne de mes 3 vecteurs translations pour les 3 sommets, et après je peux prendre la moyenne/ou médiane de 2 ou 3 coins?

    Merci pour votre aide

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. Rotation à translation
    Par invite5adeb9de dans le forum Technologies
    Réponses: 4
    Dernier message: 05/05/2016, 04h36
  2. De la rotation à la translation
    Par invite8ecedd5b dans le forum Physique
    Réponses: 17
    Dernier message: 04/03/2015, 07h53
  3. calcul de vecteur deplacement entre deux images sous matlab
    Par invite2ab74b6f dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 01/01/2015, 19h03
  4. translation ou rotation
    Par invite381392ae dans le forum Technologies
    Réponses: 7
    Dernier message: 09/07/2009, 17h16
  5. Rotation et translation
    Par invite766b3b71 dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 21/04/2009, 13h25