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

Traitement d'images Discussion :

Redressement d'Image avec OpenGL Shader Language (GLSL)


Sujet :

Traitement d'images

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Par défaut Redressement d'Image avec OpenGL Shader Language (GLSL)
    Si quelqu'un pouvait m'aider à porter en GLSL cet algorithme de redressement d'image

    http://www.developpez.net/forums/d59...e/#post3618514

    Je débute à peine avec GLSL

    Ce serait le pied de pouvoir utiliser ça avec gstreamer et opencv pour redresser un plan en temps réel dans une vidéo

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #extension GL_ARB_texture_rectangle : enable
    uniform sampler2DRect tex;
    uniform mat3x3 H;
    uniform vec2 dstsize;
    void main () {
      vec2 dstcoord = gl_TexCoord[0].st;
      vec3 uv = vec3( dstcoord.x/dstsize.x, dstcoord.y/dstsize.y, 1.0);
      vec3 srccoord = uv * H ;
      gl_FragColor = texture2DRect(tex, vec2(srccoord.x/srccoord.z, srccoord.y/srccoord.z));
    }
    Calculez H avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    double *getPerspectiveTransform(CvPoint2D32f *P) {
     
            double *H=calloc(18,sizeof(double));
            double *adj=H+9;
     
            double sx = (P[0].x-P[1].x)+(P[2].x-P[3].x);
            double sy = (P[0].y-P[1].y)+(P[2].y-P[3].y);
            double dx1 = P[1].x-P[2].x;
            double dx2 = P[3].x-P[2].x;
            double dy1 = P[1].y-P[2].y;
            double dy2 = P[3].y-P[2].y;
     
            double z = (dx1*dy2)-(dy1*dx2);
            double g = ((sx*dy2)-(sy*dx2))/z;
            double h = ((sy*dx1)-(sx*dy1))/z;
     
            // projection matrix
            double a=H[0]=P[1].x-P[0].x+g*P[1].x;
            double b=H[1]=P[3].x-P[0].x+h*P[3].x;
            double c=H[2]=P[0].x;
            double d=H[3]=P[1].y-P[0].y+g*P[1].y;
            double e=H[4]=P[3].y-P[0].y+h*P[3].y;
            double f=H[5]=P[0].y;
            H[6]=g;
            H[7]=h;
            H[8]=1;
            // inverse projection matrix (adjoint matrix)
            adj[0]=e-f*h;
            adj[1]=c*h-b;
            adj[2]=b*f-c*e;
            adj[3]=f*g-d;
            adj[4]=a-c*g;
            adj[5]=c*d-a*f;
            adj[6]=d*h-e*g;
            adj[7]=b*g-a*h;
            adj[8]=a*e-b*d;
     
    //        printf("a %f b %f c %f d %f e %f f %f g %f h %f i 1\n",a,b,c,d,e,f,g,h);
    //        printf("adj: a %f b %f c %f d %f e %f f %f g %f h %f i 1\n",adj[0],adj[1],adj[2],adj[3],adj[4],adj[5],adj[6],adj[7]);
            return H;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Affichage d'image avec OpenGL
    Par nonolerobot77 dans le forum OpenGL
    Réponses: 3
    Dernier message: 14/02/2008, 15h58
  2. Probleme de chargement d'une image avec opengl
    Par JilyJ dans le forum OpenGL
    Réponses: 11
    Dernier message: 30/05/2007, 14h11
  3. Réponses: 1
    Dernier message: 06/04/2006, 17h04
  4. Shaders avec openGL 1.5
    Par Fa7 dans le forum OpenGL
    Réponses: 1
    Dernier message: 16/03/2006, 17h05
  5. Afficher une image avec opengl
    Par kmaniche dans le forum OpenGL
    Réponses: 4
    Dernier message: 07/02/2006, 09h04

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