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 :

contraste d'une image


Sujet :

Traitement d'images

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 268
    Points : 393
    Points
    393
    Par défaut contraste d'une image
    Bonjour,

    Je souhaite écrire une fonction simple qui augmente ou diminue le contraste d'une image.

    En entrée j'ai un tableau d'entiers [0 .... 255] qui représentent un niveau de gris. Voilà ce que j'ai pu trouver pour augmenter le contraste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int
    myClass::upContrast(int value, int factor)
    {
    	value += (factor / 10) * (value - 127);
     
    	(value > MAXGL)? value = MAXGL : value;
    	(value < 0)? value = 0 : value;
    	return  value;
    }
    Indications : MAXGL = 255 , value est le niveau de gris (entier entre 0 et 255), et factor est le facteur de contraste (afin de l'augmenter plus ou moins selon le cas).

    J'ai essayé avec un value -= .... pour la diminution mais la formule doit changer car ce n'est pas ca. Une idée?

  2. #2
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    oui =>
    Le sujet a déjà été traité de nombreuses fois. J'ai d'ailleurs donné un lien vers une page web qui explique simplement comment on peut modifier le contraste.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 268
    Points : 393
    Points
    393
    Par défaut
    Merci ToTo13, seulement entre les fonctions MATLAB (moi je suis en c++) et les courbes de Bézier je pensais trouver un algo + simple...

  4. #4
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Pour modifier le contraste et la brightness, j'utilisais un code du type :

    Code java : 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
     
    int brightness = getIntValue("brightness");
    int contrast = getIntValue("contrast");
     
     
    //on multiplie chaque pixel par alpha*pixel+beta  de telle manière que si brightness est nulle, l
    //  la courbe passe par (128,128)
    double alpha;
    double beta;
     
    double contrastFactor = 0.01;
     
    if(contrast>=0)
    	alpha=contrast*contrastFactor+1;
    else
    	alpha=(1/(-contrast*contrastFactor+1));
     
    beta=brightness+128-(128*alpha);
     
    short lutTable[]  = new short[256];
    for(int i = 0; i<lutTable.length;i++) {
    	int value = (int) (alpha*i+beta);
    	if(value>255) value=255;
    	if(value<0) value = 0;
    	lutTable[i] = (short) value;
    }
    LookupOperator op = new LookupOperator(lutTable);
     
    op.compute(output, getInputImage());
     
    return output;

    => Donc il faut mettre un facteur négatif est modifier comme dans mon code les facteurs multiplicatifs
    Je ne répondrai à aucune question technique en privé

  5. #5
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonsoir,

    voilà une des discussions dont je parlais.
    Si les Béziers t'affole alors prend une fonction plus simple (mais elles sont toutefois faciles à mettre en place).
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 268
    Points : 393
    Points
    393
    Par défaut
    Je vais regarder ça, merci à vous 2.

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

Discussions similaires

  1. modifier contraste d'une image
    Par sarainformatique dans le forum Imagerie
    Réponses: 1
    Dernier message: 08/12/2008, 10h24
  2. Définition du contraste d'une image
    Par bahiatoon dans le forum Traitement d'images
    Réponses: 4
    Dernier message: 02/12/2007, 15h59
  3. Réglage du contraste d'une image à la souris
    Par pwfsic dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 16/05/2007, 14h45
  4. Luminosité et contraste d'une image
    Par biquet dans le forum Images
    Réponses: 1
    Dernier message: 03/05/2007, 17h35
  5. Modification du contrast d'une image
    Par Bourak dans le forum Langage
    Réponses: 3
    Dernier message: 08/11/2005, 17h37

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