IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenCV Discussion :

Matrice d'un espace euclidien vers projectif


Sujet :

OpenCV

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Par défaut Matrice d'un espace euclidien vers projectif
    Bonjour à tous,

    Je viens d'écumer le forum à la recherche d'un élément de réponse à une de mes questions fondamentale. Sans succès pour l'instant, donc...

    Voila :
    - je realise la detection de forme simple (rectangles supposés vrai dans l'espace euclidien) dans l'image

    - mais ils sont vus dans un espace projectif : je dispose donc des coordonnées pixel des 4 coins du rectangle dans l'espace projectif.

    Ma question est simple en apparence, mais je ne sais pas par quel angle aborder le problème :

    Je voudrai dessiner un cercle à l'intérieur de mon rectangle. Alors je sais comment calculer les coordonnée X,Y dans un espace euclidien, mais comment trouver les correspondances de ces coordonnées dans l'espace projectif (de mon image).

    Ca sent la matrice, mais si quelqu'un pouvait m'orienter un peu svp !!!

  2. #2
    Membre confirmé Avatar de xtra.creativity
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2007
    Messages : 108
    Par défaut
    En gros tu cherche a calculer la matrice de projection 2D , 3D ?

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Par défaut
    Et bien oui, ça doit être ca !!

    Voila certainement le mot clé qui me manquait. Donc je dispose des coordonnées dans l'espace projectif (donc dans l'image) :
    - des 4 coins du rectangle
    - des 3 points de fuites

    C'est grave docteur ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je pense que tu dois construire ta matrice de projection grâce à cvGetPerspectiveTransform. Tu donnes en entrée d'une part la famille de quatre points de l'espace euclidien et d'autre part les quatre points correspondants dans l'espace projectif. Tu récupères une matrice 3x3.

    Pour le changement de coordonnées euclidien vers projectif : (X,Y)->(X', Y'), il suffit d'utiliser la multiplication de matrices :
    transp [X' Y'] = M x transp [X Y 1]
    (transp = transposée, pour avoir des vecteurs colonne)
    M étant la matrice 3x3 précitée

    Enfin, si tu as une image dans l'espace euclidien et que tu veux la convertir en une image dans l'espace projectif, il faut utiliser cvWarpPerspective.

    J'espère t'avoir débloqué un peu.

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Par défaut
    Niquel,

    Je te remercie, en effet, c'est beaucoup plus clair à présent !

    Maintenant je sais ce qu'il me reste à faire... Trouver les coordonnées des 4 coins du rectangle dans l'espace euclidien (et oui je ne les ai pas !). En revanche, je sais qu'il s'agit d'un rectangle vrai (les 4 angles à 90 dans l'espace euclidien).

    J'imagine qu'il doit exister un moyen de trouver au moins un rapport de longueur euclidienne entre les differents cotés, non ? Et donc d'alimenter cvGetPerspectiveTransform ?

    Si vous trouvez, je vous paierai en reconnaissance éternelle (ou en faute d'orthographe, c'est selon) !

  6. #6
    Invité
    Invité(e)
    Par défaut
    Sauf erreur de ma part, je pense que ça n'a pas d'importance. Tu peux prendre un carré, par exemple (-1,-1) (-1,1) (1,-1) (1,1) comme coordonnées dans l'espace euclidien et les mapper sur les coordonnées de ton espace projectif.

    Ensuite, pour tracer ton cercle, il "suffit" de tracer chaque point du cercle que tu veux dans le carré (par exemple (cos(t), sin(t)) avec t variant entre 0 et 2PI), puis de les mapper dans l'espace projectif à l'aide de la matrice de projection...

    Il y a plus clean. Tracer sur une image vierge le cercle et le carré euclidiens, transformer cette image en projectif avec cvWarpPerspective, puis fusionner les deux images (image projective initiale + image projective du carré et du cercle).

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/12/2013, 11h12
  2. Matrice 3D et espace
    Par héloiise dans le forum MATLAB
    Réponses: 0
    Dernier message: 06/05/2013, 14h42
  3. Réponses: 5
    Dernier message: 08/03/2010, 08h08
  4. Traiter un espace euclidien n dimentionel: librairie ?
    Par méphistopheles dans le forum C++
    Réponses: 1
    Dernier message: 04/11/2009, 11h34
  5. Conversion de l'espace RGB vers RGB normalisé
    Par hanane78 dans le forum Images
    Réponses: 5
    Dernier message: 16/08/2007, 13h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo