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.
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

  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
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

  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 ;
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

  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