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

OpenGL Discussion :

Utilité de OpenGL pour le traitement d'images?


Sujet :

OpenGL

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2002
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 230
    Points : 148
    Points
    148
    Par défaut Utilité de OpenGL pour le traitement d'images?
    Bonjour à tous,

    Etant donné que j'ai jamais utilisé OpenGL je voulais avoir vos avis.
    J'ai développé une application de traitements d'image.
    Cette application applique principalement des filtres sur des images de types BMP, JPEG, TIF, ... etc.
    Donc pour simplifier, j'ai mon image sous format tableau, et j'applique des calculs mathématiques sur mon tableau. Une fois que lle calcul est fini, je retrouve mon image résultat.

    Est ce que vous pensez que OpenGL peut mettre utile ? Si oui, alors comment?

    Est ce qu'avec OpenGL, je peux accélérer mon temps de calcul ? (je veux dire par là que si OpenGL offre des bibliothèques qui permettent un accès rapide aux fichiers images par rapports aux autres bibliothèques de traitement d'images style OpenCV, CxImage, ...)

    Merci d'avance pour vos réponses
      0  0

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Aucun intérêt, puisque le but d'OpenGL est de fournir un accès au hardware, en aucun cas de fournir des routines de manipulation d'images.

    Par contre des bibliothèques genre OpenIL te seraient beaucoup plus utiles.
      0  0

  3. #3
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 530
    Points : 5 206
    Points
    5 206
    Par défaut
    Pour le traitement d'images en temps réel, il y a les shaders à la limite
    Des logiciels tels que After Effects le font dans les récentes versions
    De là à accélérer les temps de calcul, j'en doute vu les extensions dans les processeurs d'aujourd'hui, surtout si c'est juste pour du traitement d'images fixes
      0  0

  4. #4
    Membre régulier

    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 126
    Points : 107
    Points
    107
    Par défaut
    J'ai cru comprendre que le processeur de la carte graphique sait effectuer du calcul vectoriel, alors que le CPU n'opère que sur des scalaires et que OpenGl donne justement accès à cet harware.
    Par exemple faire un fondu entre deux images me semble bien plus rapide en utilisant la fonction Blending de OpenGL, que dans une triple boucle CPU où on mélange une à une les couleurs de tous les pixels de l'image.
    ...Mais il est possible que je trompe car je suis novice en la matière.
      0  0

  5. #5
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 530
    Points : 5 206
    Points
    5 206
    Par défaut
    Avec les shaders tu peux faire faire du calcul vectoriel directement par le GPU, certes ce sera plus rapide, mais quelle utilité ?

    Au lieu de faire un traitement CPU de quelques dizièmes de secondes le GPU va le faire en quelques millièmes de secondes, sur une image fixe cela n'a pas d'intérêt à mes yeux, bien sûr cela peut être un "projet d'apprentissage" pour le traitement d'images mais l'intérêt tu le trouvera dans le traitement video par exemple, et si la carte graphique est assez puissante tu peux traiter la video en temps réel

    il y a déjà des lecteurs multimédias qui affichent une vidéo en se servant d'OpenGL pour donner la possibilité d'appliquer un filtre à chaque image de la vidéo (en temps réel sauf que si la carte est peu puissante ça rame)

    mais au final, pour en revenir à ta question initiale, OpenGL te donne accès à des "outils vectoriels", il te faut coder tes procédures de chargement et de traitement d'image
      0  0

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Faire un traitement statique d'image via OpenGL n'a aucun intérêt, tu vas perdre beaucoup plus de temps à initialiser ton API, envoyer ton image à la mémoire vidéo, faire la manip, rapatrier ton image et la sauvegarder, que de simplement faire ça avec le CPU.

    L'intérêt du GPU c'est qu'il est préprogrammé pour certaines tâches et qu'il peut les faire en parallèle du CPU, l'utiliser pour ce genre de chose n'a aucun sens.
      0  0

  7. #7
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 80
    Points : 85
    Points
    85
    Par défaut
    Il y a plein de paper sur le "general purpose computation" sur le GPU. L'analyse d'image est d'ailleurs très souvent un des sujets traités. Je ne vois pas comment vous pouvez dire que l'utilisation d'OpenGL pour faire ça n'a aucun intérêt.
      0  0

  8. #8
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Pour du traitement en temps réel aucun souci, cependant pour appliquer une seule transformation à une image...
      0  0

  9. #9
    Membre régulier

    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 126
    Points : 107
    Points
    107
    Par défaut
    Citation Envoyé par jcs2
    ... faire un fondu entre deux images me semble bien plus rapide en utilisant la fonction Blending de OpenGL, que dans une triple boucle CPU où on mélange une à une les couleurs de tous les pixels de l'image.
    Dans cet exemple je pensais à un fondu enchaîné progressif (donc temps réel) pour passer de l'image 1 à l'image 2 et pour qu'à l'écran le passage soit fluide, sans à-coup, l'image résultante doit être renouvelée au moins 25 fois par seconde. Pour une image qui remplit totalement l'écran, la charge CPU est énorme et beaucoup de PC ne suivent pas. (1024x768x3x25 = 59 millions de calculs de mélange de couleur par seconde)
    Avec OpenGL les choses doivent quand même se présenter mieux.
      0  0

  10. #10
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 80
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par Loulou24
    Pour du traitement en temps réel aucun souci, cependant pour appliquer une seule transformation à une image...
    ça dépend à quelle point la transformation est complexe. De plus, lorsque tu fais tes opérations sur le GPU, tu décharges le CPU qui peut faire en parallèles d'autres opérations que le GPU ne peut pas effectuer.
      0  0

  11. #11
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Dans cet exemple je pensais à un fondu enchaîné progressif (donc temps réel) pour passer de l'image 1 à l'image 2 et pour qu'à l'écran le passage soit fluide, sans à-coup, l'image résultante doit être renouvelée au moins 25 fois par seconde. Pour une image qui remplit totalement l'écran, la charge CPU est énorme et beaucoup de PC ne suivent pas. (1024x768x3x25 = 59 millions de calculs de mélange de couleur par seconde)
    Avec OpenGL les choses doivent quand même se présenter mieux.
    Je ne sais pas pourquoi je pensais que tu ne faisais pas du temps réel, donc vu comme ça effectivement ça change tout

    En fait, c'est pour quel genre d'application ? Autant aller droit au but, ça nous aidera peut-être à mieux te conseiller.
      0  0

  12. #12
    Membre régulier

    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 126
    Points : 107
    Points
    107
    Par défaut
    Merci Loulou24 de t'intéresser à ma problématique.

    En fait mon projet je l'ai déjà un peu évoqué dans un autre fil.
    Je le poursuit donc http://www.developpez.net/forums/viewtopic.php?t=442257
      0  0

  13. #13
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Ok, si tu n'y vois pas d'inconvénient je vérrouille donc ici afin d'éviter de disperser la conversation.
      0  0

Discussions similaires

  1. Quel langage pour du traitement d'image ?
    Par shawty dans le forum Langages de programmation
    Réponses: 11
    Dernier message: 03/12/2007, 11h43
  2. Réponses: 1
    Dernier message: 07/06/2007, 11h16
  3. commande c++ pour le traitement d'images
    Par mateo.14 dans le forum MFC
    Réponses: 2
    Dernier message: 12/01/2005, 10h46

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