2010-05-24 15 views
2

J'ai donc une image 3D transformée en espace via une transformation affine. Cette transformation est composée de la matrice 4x4 traditionnelle plus une coordonnée centrale à propos de laquelle la transformation est effectuée. Comment puis-je inverser ce point central pour retourner dans l'espace d'origine? J'ai la coordonnée, mais c'est un vecteur 1x3 (ou 3x1, selon l'ordre des lignes/colonnes). Je suppose que pour obtenir le centre approprié de l'inverse, j'ai besoin de faire le vecteur en 1x4, mais si c'est le cas, que dois-je mettre dans la quatrième position? Les candidats évidents sont 0 et 1, mais je ne suis pas sûr que ce soit la bonne chose à faire. L'idée est que si je transforme une image dans l'espace, puis que j'inverse la transformée, l'image résultante devrait être identique (dans les erreurs d'arrondi/les effets d'alias provenant du rééchantillonnage). Cependant, pour l'instant, j'utilise simplement la même coordonnée centrale, et cela produit une image décalée d'une certaine quantité plutôt que de produire exactement la même image. Alors, comment puis-je transformer ce point central?Inverser une transformation affine - comment mettre à jour les coordonnées du centre?

Répondre

1

Je suppose que votre transformation va comme ceci

x' = Mx + t 

La résolution de x devrait donner

x = M_inv (x' - t) 

Travailler avec des matrices 4x4 dans un système de coordonnées 3D signifie usally de travail en coordonnées homogènes. Vous stockez une valeur multiplicative dans la 4ème coordonnée appelée w. La valeur 1 fonctionne bien pour les positions, la valeur 0 est destinée aux vecteurs. C'est parce que les informations de traduction stockées dans la matrice M devraient affecter uniquement les positions (c'est une explication très basique, désolé). Donc, oui, nier le vecteur de traduction devrait déjà faire l'affaire. Ajoutez 0 comme 4ème composant.

+0

Merci, vérifier cela maintenant. – mmr