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

C++Builder Discussion :

niveau de gris d'une image


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 14
    Points : 10
    Points
    10
    Par défaut niveau de gris d'une image
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    couleur=Image1->Picture->Bitmap->Canvas->Pixels[i][j];
    Mat[i][j]=couleur;
    je récupere les pixels d'une image.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Image2->Picture->Bitmap->Canvas->Pixels[i][j]=(TColor)(RGB(couleur,couleur,couleur));
    ensuite je ait quelque traitement sur cette image, ensuite je l affiche, mais tjr j obient une image trop sombre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Image2->Picture->Bitmap->Canvas->Pixels[i][j]=(TColor)(couleur);
    je fait quelque modification, j remarqué que les pixel de ce dernier sont code R (rouge), ce ci est logique.
    je ne sai pas pourqui l instrucion 2eme, elle me revoi une image plus sombre que la premiere image

  2. #2
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Il est tout à fait logique que tu obient ce résultat. Toutefois, Tu fais du traitement sur des images couleurs ou en niveau de gris.

  3. #3
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Si c'est le 1er cas, il faut lire les trois compsantes couleur de l'images, à savoir "Le rouge", "Le vert" et "Le bleu". Pour faire plus simple, utilise les instruction suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ... = GetRValue(Image1 -> Canvas -> Pixels[j][i]) ; // Rouge
    ... = GetGValue(Image1 -> Canvas -> Pixels[j][i]) ; // Vert
    ... = GetBValue(Image1 -> Canvas -> Pixels[j][i]) ; // Bleu

  4. #4
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Et pour le deuxième cas, si tu utilise les niveaux de gris, et ton image est en couleur, tu dois convertir l'espace couleur en nvg, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    ... = (GetRValue(Image1 -> Canvas -> Pixels[j][i]) +
            GetGValue(Image1 -> Canvas -> Pixels[j][i]) + 
            GetBValue(Image1 -> Canvas -> Pixels[j][i]) /3 ;

  5. #5
    Invité
    Invité(e)
    Par défaut
    Pour convertir une image couleur en niveau de gris, il faut utiliser la formule

    Gris=Rouge*0.299+Vert*0.587+Bleu*0.114

    (pas une moyenne: notre oeil ne voit pas les trois couleurs pareil...)

    Pour produire un gris neutre à l'écran, il faut fournir trois valeurs égales (ou à peu près égales) pour le rouge, le vert, et le bleu.

    Et dans les images Borland, un TColor est un entier non signé, dont les 8 bits de poids faible représentent le Rouge, les 8 suivants le Vert, et les 8 suivants le bleu (valeurs comprises entre 0 et 255).

    Donc, en partant d'une image, on aurait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int Rouge=Pixels[i][j]%255;
    int Vert=(Pixels[i][j]/256)%255;
    int Bleu=(Pixels[i][j]/(256*256))%255;
    le niveau de gris moyen serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int Gris=(int)(Rouge*0.299+Vert*0.587+Bleu*0.114+0.5);
    et pour faire un pixel de ce gris, on dirait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pixels[i][j]=Gris+256*(Gris+256*Gris);
    C'est pas joli joli, les couleurs chez Mr Borland...

    Francois
    Dernière modification par Invité ; 09/05/2009 à 21h58.

Discussions similaires

  1. Niveau de gris sur une image YCrCb
    Par DELAYMEN1 dans le forum OpenCV
    Réponses: 13
    Dernier message: 11/07/2010, 13h21
  2. objet en niveau de gris ds une image labelisée
    Par ImagingAllthe dans le forum Images
    Réponses: 4
    Dernier message: 23/10/2009, 15h29
  3. Réponses: 15
    Dernier message: 07/06/2009, 05h22
  4. Réponses: 6
    Dernier message: 30/11/2006, 11h08
  5. Niveau de gris d'une image
    Par chahinez dans le forum C++Builder
    Réponses: 13
    Dernier message: 12/06/2006, 21h17

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