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 :

Augmenter la luminosité d'une image


Sujet :

OpenCV

  1. #1
    Membre éclairé
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Par défaut Augmenter la luminosité d'une image
    Bonjour à tous,

    Je suis à la recherche d'un moyen simple et efficace (comprendre rapide) d'augmenter la luminosité d'une image assez conséquente (2500 par 2000px) et ce sachant que cette image est au format GrayScale.

    Selon vous quelle est la meilleure méthode pour faire ça ?


    Merci de votre aide

  2. #2
    Membre éclairé
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Par défaut
    Je complète un peu ce que j'ai dit :

    En fait ce que je cherche à faire c'est la fonction : "modifier la luminosité" de Photoshop qui, en quelque sorte, étale l'histogramme et non le décale ...

    Mais je ne sais pas comment faire ça efficacement avec OpenCv.

    La méthode EqualizeHistogram ne me donne pas satisfaction dans le résultat (en ayant regardé la doc, cette fonction agit en deux temps : 1- elle étale l'histogramme 2- elle l'égalise ... or pour moi cette étape est de trop je pense).

    En espérant que vous compreniez mieux ce que je cherche à faire

    Merci pour votre contribution

  3. #3
    Membre chevronné
    Inscrit en
    Mars 2010
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 439
    Par défaut
    N'oublie pas le filtre à la fin

  4. #4
    Membre éclairé
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Par défaut
    Bonjour,

    Avant toute chose, merci de t'intéresser à mon soucis

    J'ai déjà testé ceci ... sauf que cette technique est horriblement longue et non applicable dans mon cas (ils parcourent deux fois l'image complète dans ce code ... c'est assez horrible lorsqu'il s'agir d'une image de la taille que j'ai renseignée et dont les contraintes de traitement sont assez courtes).
    D'un point de vue résultat, c'est ce que j'attends (si mes souvenirs sont bons - quand j'ai testé ce code - le résultat était ce que j'attendais) mais d'un point de vu performance on y est pas du tout : je ne sais pas pourquoi je l'ai pas tout simplement dit : l'image provient d'un flux vidéo (une caméra pour être précis, mais, malheureusement, sur laquelle je ne peux pas modifier le temps d'ouverture ou l'ouverture du diaphragme ou autre) ... pour subir ensuite quelques traitements (transformée de Hough notamment qui est déjà lourd en soit). Vous comprenez bien pourquoi le temps de cette fonction doit être minimum ...

    Cela dit, je suis presque sûr qu'il y a moyen d'arriver à ce résultat en plus rapide ? Pourquoi ? tout simplement puisque la fonction d'OpenCv EqualizeHistogram fait un travail semblable en un temps déjà plus acceptable ... donc il doit bien y avoir moyen de faire la même chose ici ...


    Merci encore pour ton aide
    D'autres suggestions ?

  5. #5
    Membre chevronné
    Inscrit en
    Mars 2010
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 439
    Par défaut
    tu peux bufferisé ca peut aider aussi, je vais réfléchir si je trouve plus rapide je te le dis mais la comme ca je vois pas

  6. #6
    Membre éclairé
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Par défaut
    Citation Envoyé par snowpy Voir le message
    tu peux bufferisé ca peut aider aussi, je vais réfléchir si je trouve plus rapide je te le dis mais la comme ca je vois pas

    Désolé je ne vois pas ce que tu veux dire ?

    Bufferiser quoi ?
    Les valeurs utilisées pour l'étalement de l'histogramme ? pourquoi pas ... j'en vois une certaine possibilité ... à tester ...
    L'image ? là ... je ne vois pas l'intérêt ?

    Le seul moyen que je vois d'accélérer ce traitement (hormis une fonction intégrée à OpenCv) serait : soit d'accéder directement à l'imageData (je teste ça demain, mais je suis pas certain que le gain de performance soit si flagrant) soit utiliser un produit de convolution qui va bien (un filtre) ... mais alors avec quel Kernel ?

  7. #7
    Membre chevronné
    Inscrit en
    Mars 2010
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 439
    Par défaut
    Non je pensais plutot à induire un retard dans ta vidéo histoire de pouvoir traiter l'image.

    Oui j'ai pensé au kernel aussi mais la formule après aucune idée

    mais est ce que ceci ne suffirait pas cvNormalizeHist ?

    edit: y a ca aussi qui peut aider je pense cvGetMinMaxHistValue

  8. #8
    Membre éclairé
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Par défaut
    Heyhey ça aurait été plus simple d'utiliser un TChat !

    Non je pensais plutot à induire un retard dans ta vidéo histoire de pouvoir traiter l'image
    Je n'avais pas pensé à ça ... mais je ne peux pas faire ça en fait. Vis-à-vis des objectifs du traitement de l'image, je ne peux pas me permettre d'avoir un retard (la caméra film une scène sur laquelle se déplacent des objets que je dois asservir ... je ne peux induire un décalage entre l'image en cours d'analyse et la position réelle de mes objets ... )

    la méthode cvNormalizeHist agit sur ... un histogramme effectivement , mais je crois qu'il faut travailler dans un espace colorimétrique ... or mois je suis en N&B ... je vérifierai tout de même cette piste

    cvGetMinMaxHistValue : à voir encore une fois sur quelle type de matrice cette méthode agit

  9. #9
    Membre chevronné
    Inscrit en
    Mars 2010
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 439
    Par défaut
    Exemples

    Page 204, mais en effet c'est en couleur tu n'as à ta disposition qu'une image en NVG ?

  10. #10
    Membre éclairé
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Par défaut
    Learning OpenCv ... ... j'en ai lu une bonne partie ... mais je ne voulais pas me faire les histogrammes tant que je n'étais pas certain de n'avoir d'autre choix

    Bon et bien ... demain un peu de lecture pour moi alors

    Non, je n'ai qu'une image en NvG

    Merci pour ton aide

  11. #11
    Membre chevronné
    Inscrit en
    Mars 2010
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 439
    Par défaut
    une idée serait de:

    - récupérer ton image
    - considérer ton image comme une matrice, tu transfert tous les pixels dans une matrice
    - réaliser le cvGetMinMaxHistValue (si possible en NVG)
    - réaliser une simple multiplication scalaire*matrice
    - rapatrier la matrice de résultat dans une image


    j'essaierais de tester ca tout à l'heure ^^

Discussions similaires

  1. Augmenter la luminosité d'une image
    Par Étienne9 dans le forum Traitement d'images
    Réponses: 5
    Dernier message: 14/03/2012, 08h47
  2. Contraste et luminosité d'une image
    Par adrien954 dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/09/2008, 19h46
  3. modifier le contraste et la luminosité d'une image
    Par djtsou dans le forum Interfaces Graphiques
    Réponses: 6
    Dernier message: 31/03/2008, 18h00
  4. Augmenter la résolution d'une image
    Par ghassen_ing dans le forum 2D
    Réponses: 0
    Dernier message: 24/11/2007, 18h11
  5. Augmenter la résolution d'une image
    Par tlemcenvisit dans le forum Images
    Réponses: 3
    Dernier message: 20/10/2006, 14h03

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