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

 Delphi Discussion :

récupérer les couleurs d'un pixel d'une image


Sujet :

Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 130
    Points : 46
    Points
    46
    Par défaut récupérer les couleurs d'un pixel d'une image
    Je voudrais créer un programme de reconnaissance (approximative) d'image en utilisant les histogrammes de couleurs.
    Pour cela, il faudrait que je puisse récupérer l'intensité Red Green et Blue de chaque pixel, d'en faire une moyenne (histogramme en niveaux de gris) et de répartir le tout dans un tableau dans lequel seront indiqués pour chaque "couleur" le nombre de pixels correspondants.
    Il suffira ensuite à partir d'une base de données d'histogrammes (un avion, un champs de lavande, un enfant...) de mesurer les écarts entre l'histogramme de l'image mystérieuse et chacun des histos de la base. Le mininimum pourra se traduire par "l'image mystérieuse ressemble à un avion".

    Ma question technique (ou syntaxique) est la suivante.
    Comment récupérer les niveaux R,G,B d'un pixel (x,y)?

  2. #2
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut


    Intéressant ton projet, mais est-ce simplement une idée, ou bien ça sent terriblement le captcha ?

    si oui c'est pôô gagné !

    Je me souviens ici d'un tread concernant la reconnaissance visuelle à distance d'une plaque minéralogique automobile

    Bon courage.

  3. #3
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour,

    Comment récupérer les niveaux R,G,B d'un pixel (x,y)?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var R,G,B : Byte; CouleurPixel : tColor;
     
    ... whith MonBitMap.Canvas do begin
                CouleurPixel:=Pixels[x,y];
                R:=getRValue(CouleurPixel); 
                G:=getGValue(CouleurPixel); 
                B:=getBValue(CouleurPixel);
        end;
    ... mais ceci suppose qu'il s'agisse de petites images car Pixels[x,y] est relativement lent.

    Pour des images de taille plus grande il est préférable d'utiliser ScanLines qui est plus rapide.

    Il suffira ensuite à partir d'une base de données d'histogrammes (un avion, un champs de lavande, un enfant...) de mesurer les écarts entre l'histogramme de l'image mystérieuse et chacun des histos de la base. Le mininimum pourra se traduire par "l'image mystérieuse ressemble à un avion".
    ... Faut être très optimiste en disant "il suffira" car reconnaître une image en se basant uniquement sur l'histogramme c'est un peu léger : l'histogramme d'un pull-over rayé de lavande et de vert est kif-kif à celui d'un champ de lavande sans être un champ de lavande.

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 130
    Points : 46
    Points
    46
    Par défaut
    Merci pour la réponse.
    Bien sûr, l'histogramme ne remplacera pas toute la finesse de la vision humaine, donc je ne m'attends pas à des miracles. Cependant, il peut être intéressant que l'algorithme trouve des liens entre différentes images, même s'il y a des erreurs. Au fond, il n'est pas rare qu'un petit enfant confonde deux objets!
    J'avais aussi pensé à établir un histogramme vectoriel en utilisant la reconnaissance des contours, mais cela est techniquement bien trop difficile à mon niveau. On pourrait dans ce cas comparer des formes et non pas des couleurs. Et puis rien n'empêcherait par la suite de croiser histogrammes vectoriels et de couleurs...

  5. #5
    Membre éprouvé
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Points : 963
    Points
    963
    Par défaut
    je ne sais pas si j'ai bien pigé
    Lien 1
    Lien 2

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 420
    Points : 1 325
    Points
    1 325
    Par défaut
    Bonjour à toutes et à tous,

    @ Montor, très intéressant le lien n° 2.

    @+,

    Cincap

  7. #7
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Citation Envoyé par cincap Voir le message
    Bonjour à toutes et à tous,

    @ Montor, très intéressant le lien n° 2.

    @+,

    Cincap
    Bonjour,

    En effet, mais dommage, trois fois dommage que ce site culte http://www.efg2.com parte à la dérive...

    Faudrait l'archiver !

  8. #8
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour,

    Vu la première copie d'écran du Lien 2 cité par Montor on constate l'efficacité de l'amélioration obtenue avec cette méthode pour le contraste de l'image en niveaux de gris.
    L'amélioration du contraste pourrait donc constituer une première étape avant d'effectuer une détection de contours réalisée par exemple avec un filtre de Sobel ce qui est également réalisable.
    Resterait plus qu'à trouver comment, en partant d'un bitMap de contours bien contrastés, on peut en déduire que le contour est celui d'un avion, d'un bateau, etc.


    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 130
    Points : 46
    Points
    46
    Par défaut
    Gilbert Geyer : un histogramme vectoriel? Au fond, si je pose une guitare exactement sur le côté, j'ai plus de mal à la reconnaître que si elle est de face. De la même façon, si je vois un requin guitare, sa forme me fera penser à une guitare, même s'il ne me viendrait pas à l'idée de prendre ses ailerons pour un grattoir... Le contexte aide aussi à reconnaître. Un avion sur un fond bleu (le ciel) se reconnaîtra plus rapidement qu'un avion sur un fond vert. Et si on rajoute le bruit des réacteurs (ou des hélices), ça va encore plus vite...
    Comme si chaque information supplémentaire venait renforcer une hypothèse.

  10. #10
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 453
    Points
    1 453
    Par défaut
    Citation Envoyé par Gilbert Geyer Voir le message
    L'amélioration du contraste pourrait donc constituer une première étape avant d'effectuer une détection de contours
    Non, celà améliore la perception à l'oeil mais n'ajoute aucune information mathematique
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  11. #11
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour,

    Sys1 :
    Comme si chaque information supplémentaire venait renforcer une hypothèse
    ... en effet toute information supplémentaire permet de renforcer ou d'écarter une hypothèse.

    Nebulix:
    Non, celà [L'amélioration du contraste ] améliore la perception à l'oeil mais n'ajoute aucune information mathematique
    ... En fait l'amélioration du contraste facilite la détection des contours vu que le détection des contours est basée sur la détection des variations brusques des intensités entre les pixels voisins ...
    ... Essaye donc de faire une détection de contours sur la photo de gauche de la première copie d'écran du Lien 2 cité par Montor et tu ne détecteras pas grand chose ... par contre on peut détecter les contours sur la photo de droite où le contraste a été amélioré par la technique de l'étirement de l'histogramme qui équivaut dans le cas de ces photos à multiplier par un facteur égal à 165/49 = 3,367 toutes les intensités de la photo de gauche. (J'ai effectué le test par curiosité).

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  12. #12
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 453
    Points
    1 453
    Par défaut
    Citation Envoyé par Gilbert Geyer Voir le message
    Bonjour,


    ..
    ... En fait l'amélioration du contraste facilite la détection des contours vu que le détection des contours est basée sur la détection des variations brusques des intensités entre les pixels voisins ...
    ... Essaye donc de faire une détection de contours sur la photo de gauche de la première copie d'écran du Lien 2 cité par Montor et tu ne détecteras pas grand chose ... par contre on peut détecter les contours sur la photo de droite où le contraste a été amélioré par la technique de l'étirement de l'histogramme qui équivaut dans le cas de ces photos à multiplier par un facteur égal à 165/49 = 3,367 toutes les intensités de la photo de gauche. (J'ai effectué le test par curiosité).

    A+.
    Les variations brusques de droite ne sont que celles de gauche multipliées par 3.367
    Il n'y a aucune information nouvelle
    Heureusement d'ailleurs
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  13. #13
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928

Discussions similaires

  1. Récupérer le code couleur de chaque pixel d'une image
    Par darkwall_37 dans le forum Débuter
    Réponses: 4
    Dernier message: 18/05/2010, 23h14
  2. Réponses: 1
    Dernier message: 08/05/2009, 20h37
  3. Récupérer les coordonnées d'un pixel dans une image
    Par amine52002 dans le forum Langage
    Réponses: 1
    Dernier message: 30/06/2008, 14h52
  4. Valeur de la couleur d'un pixel d'une image
    Par PiPo123 dans le forum Windows
    Réponses: 4
    Dernier message: 10/03/2007, 21h42
  5. Réponses: 1
    Dernier message: 26/03/2005, 12h31

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