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

Algorithmes et structures de données Discussion :

Correction de perspective


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2002
    Messages : 66
    Points : 40
    Points
    40
    Par défaut Correction de perspective
    Bonjour,

    j'aimerais réaliser un programme qui est capable de corriger la perspective d'une image. Par exemple si je prends une grille en photo, mais pas exactement de dessus ( le plan de l'objectif n'est pas parallèle à celui de la grille), les droites composant ma grille ne seront plus perpendiculaires.

    J'aimerais savoir comme corriger cette image pour qu'elle soit comme si l'objectif de l'appareil était parallèle àa la grille.

    Merci d'avance de vos propositions

  2. #2
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Points : 451
    Points
    451
    Par défaut
    Salut !

    Si sur ton image on voit la grille, alors aucun soucis : c'est juste une histoire de calculs de paramètres de la déformation à appliquer pour remettre l'image droite (c'est en fait une transformation affine à 9 paramètres si je ne me trompe) : pour chaque croisement de la grille, on associe son correspondant dans la grille "droite"... Ceci nous donne au final un ensemble de couple de points appariés avec lequel on peut calculer la transformation optimale pour passer de la grille déformée à la grille droite (via des algos d'optimisation).

    Je pourrais te donner plus de détails si c'est ce cas de figure...

    En revanche, si tu ne disposes pas de grille sur l'image (ou de quelque chose d'autre de référence comme des cercles concentriques ou tout ce qui peut servir de point de comparaison), ça n'est pas possible sans avoir de l'information a priori sur la déformation de l'image...

    Si j'ai pas été clair, dis le moi.

    A+
    "Cultiver les sciences et ne pas aimer les hommes, c'est allumer un flambeau et fermer les yeux." Proverbe chinois

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2002
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    Si justement la grille est visible. En fait il s'agit d'une photo d'un jeu de grille, comme par exemple un sudoku.

    Un prétraitement est fait pour que la grille soit le + visible possible selon la qualité de l'image, mais bon ca c'est sensé être fait.

    Il suffit donc de construire une matrice de transformation selon les paramètres de déformation ? (bon j'suis pas super fort en calcul matriciel...)

    Et la grille "droite", on la crée virtuellement en fait ? on peut donc décider des dimensions des cases, pour autant que ca reste rectiligne ?

    Ce serait cool si tu connais des algos d'optimisation !

  4. #4
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Points : 451
    Points
    451
    Par défaut
    Re...

    Bon voici la théorie :

    1 - Matrice de transformation:
    C'est une matrice 3x3 (on est en coordonnées homogènes) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    | x' |    | e11 e12 p |    | x |
    | y' | =  | e21 e22 q | .  | y |
    | z' |    | f   g   1 |    | 1 |
    eij sont les paramètres de rotation, p et q translation, f et g sont les paramètres de perspective.

    2 - Optimisation :
    On se place dans l'espace aux 8 paramètres eij, p, q , f et g;
    Dans cet espace, on a un critère de minimisation simple : minimser la distance entre chaque couple apparié.
    L'énergie à minimiser est donc la somme de toutes les distances : si on a N couples (A,B) de points appariés, et i allant de 1 à n, alors l'énergie s'écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    E = Somme(i de 1 à N, d(Ai,Bi))
    où d est la distance entre Ai et Bi.

    Cette énergie se minimise dans l'espace à 8 paramètres via n'importe quelle méthode d'optimisation telle que la méthode des moindres carrés...

    Dis le moi si ça n'est pas clair...

    A+
    "Cultiver les sciences et ne pas aimer les hommes, c'est allumer un flambeau et fermer les yeux." Proverbe chinois

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2002
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    ok merci beaucoup. Jvais voir si j'arrive à mettre en pratique ta théorie.

    Juste encore 2-3 petites questions, quand tu parles de l'espace aux 8 paramètres, c'est donc dans l'espace de mon image déformée ?

    Et donc ces 8 paramètres, je comprends pas bien à quoi ils correspondent. Pourquoi il y en a 4 de rotation, comment je les trouve ? Ils caractérisent la rotation de mon image déformée par rapport à l'image "droite" ?

  6. #6
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Points : 451
    Points
    451
    Par défaut
    Oui, oups...

    En fait il n'y a qu'un paramètre de rotation (suis fatigué moi)... On a e11 = cos(theta), e12 = sin(theta), e21 = -sin(theta) et e22 = cos(theta)...

    Donc ça ne fait plus que 5 paramètres... : theta, p, q, f, g.
    Et non, cet espace de 5 paramètres, ça n'est pas l'espace de ton image déformée, c'est l'espace engendré par toutes les 5 variables . C'est A = [0;2*Pi]xRxRxRxR.
    C'est dans cet espace que tu minimises l'énergie : pour un point de l'espace A, on calcule l'énergie (un point de l'espace correspond en fait à une matrice de tranformation). Le but est de trouver le point de A qui minimise cette énergie, cad les valeurs des 5 paramètres qui font que chaque élément d'un couple est le plus proche de son 2nd élément, cad trouver les valeurs des paramètres qui font que la grille déformée vienne coller au mieux à la grille droite via la matrice de transformation.

    Si tu ne connais pas du tout ce qu'est l'optimisation, je t'encourage à voir un cours, car ça serait bien trop long ici (en + je risquerais de dire des c...).

    A+
    "Cultiver les sciences et ne pas aimer les hommes, c'est allumer un flambeau et fermer les yeux." Proverbe chinois

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2002
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    ok merci beaucoup !!

    Je vais me pencher sur tout ca et tenter d'implémenter qqch.

    A+

Discussions similaires

  1. Correction de perspectives
    Par Ryooo dans le forum Traitement d'images
    Réponses: 0
    Dernier message: 18/07/2014, 16h07
  2. Réponses: 3
    Dernier message: 17/06/2013, 17h00
  3. Correction de la perspective
    Par utoz07 dans le forum Développement 2D, 3D et Jeux
    Réponses: 12
    Dernier message: 02/06/2008, 18h58

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