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 :

[image processing] gradient


Sujet :

Traitement d'images

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut [image processing] gradient
    salut,
    j'aimerais calculé le gradient d'une image. (difference entre les pixels)

    En fait je sais pas exactement comment faire ca mais je sais que le traitement est simple. auriez vous des reference a me proposer ?

    merci d'avance...

    PS: est-ce adapté dans le cadre d'un algo qui doit s'executer rapidement ??
    (<0.2 sec pour 640x480).

    pasque inutile de l'implementer dans le cas contraire... cependant la reponse m'interesse toujours !
    merci

  2. #2
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    Bonjour,
    le gradient ne se résume pas seulement à une différence entre pixels.
    En fait, c'est une matrice de convolution qu'il faut utiliser (tout du moins, pour une première approche).
    Un exemple simple :
    http://www.tsi.enst.fr/tsi/enseignement/ressources/mti/gradient_couleur/

    Si tu as Matlab (cher) ou Scilab (gratuit !) tu peux faire des expérimentations, pour t'échauffer

    Edit: Je n'avais pas vu le PS, quel est le but de ce calcul ? Extraire les contours d'une image couleur ?

  3. #3
    Membre chevronné
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Par défaut
    Salut !

    [EDIT] Me suis fait griller par la fraicheur...

    Pour le gradient, deux solutions :
    - calcul par filtrage à support fini : exemples ici (d'ailleurs Google est ton ami : "gradient image")... En fait implicitement, c'est l'approximation de la dérivée d'une gaussienne de variance 1.
    - calcul par filtrage à support non borné : on filtre par la première dérivée d'une gaussienne avec la variance que tu veux (en fonction de ce que tu recherches : plus la variance est grande, plus on sélectionne les contours fortement marqués) : par exemple ici... Pour ce qui est de la rapidité, c'est long... Mais j'ai des algos de calcul rapide avec un support à filtrage non borné, très efficace...


    A+

  4. #4
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut
    mon but est de definir une zone ciblant un oeil sur une image.

    Avec la projection horizontal du gradient d'une image je pense pouvoir trouver un pic qui indique la ligne ou se trouve les yeux (car elle varie plus que le reste du visage).

  5. #5
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut
    super ton lien progman : pas trop matheux, simple et efficace...

    Que pensez vous de du gradient pour mon application ?

  6. #6
    Membre chevronné
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Par défaut
    Citation Envoyé par ZaaN
    mon but est de definir une zone ciblant un oeil sur une image.

    Avec la projection horizontal du gradient d'une image je pense pouvoir trouver un pic qui indique la ligne ou se trouve les yeux (car elle varie plus que le reste du visage).
    Pour ça il faut que ton visage soit bien "droit" car sinon ça n'est pas une ligne horizontale mais oblique qu'il faut regarder...

    Je te conseille plus la chose suivante : faire une détection de contour préalable, et le gradient seul c'est vraiment caca... Mieux vaut utiliser Prewitt, canny etc...
    Ensuite, faire une détection des formes elliptiques via la tranformée de Hough... En théorie il devrait ne te rester à peu près plus que le visage global + yeux + bouche peut-être + autres trucs... Ensuite, tu cheches par exemple les deux formes elliptiques qui sont à la fois rapprochées et dans la même direction...

    Une dernière remarque : le traitement d'images, c'est matheux, donc faut pas y être allergique sinon ça va te poser des problèmes.

    A+

  7. #7
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    Pour ce qui est de la détection des yeux dans le visage, ça dépend comment est ce visage...
    C'est issu d'une webcam ?
    Je rejoinds mathieu_t pour ce qui est de la transformée de Hough, il en existe d'ailleurs des implémentations rapides.
    Google est ton ami !
    Ne pas voir peur de l'anglais, et pas peur des maths non plus, sinon... tu n'auras aucun résultat.

  8. #8
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut
    j'ai deja tenté la transformée de Hough + Canny pour la detection d'ellipse mais le resultat était trop couteux.

    merci quand meme pour les propositions...

    oui mon visage doit etre bien horizontal.
    D'ailleur 97% du temps passé derriere ton ecran tu garde l'axe des yeux horizontal, ca devrait aller...
    Je vous dirais si avec juste le gradietn j'arrive a des resulats potables, mais j'ai bon espoir.

    j'ai plus peur des math depuis longtemps, suis pas allergique !

    Oui c'est issu d'une webcam.

  9. #9
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    Le truc, c'est que c'est aussi des sujets de thèse, donc logique que ce ne soit pas simple !
    Pour les webcams, les constructeurs font leur détection au niveau hardware, car c'est nettement plus rapide !
    Pour la transformée de Hough, je te conseille ça :
    www.cmis.csiro.au/Hugues.Talbot/dicta2003/cdrom/pdf/0879.pdf

    Et si tu as matlab, ou si tu veux un algo pour te donner une idée d'implémentation, je te conseille de jeter un oeil là :
    http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=6345

    Un zip est téléchargeable, contenant une implémentation matlab.

  10. #10
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Juste un gradient, c'est moche, je plussoie mathieu_t.

  11. #11
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut fin
    Pour finir :
    j'utilise un filtrage gradient avec un masque de Sobel.

    Ca donne les resultats escomptés !

    Comme le temps de traitement étais assez long j'ai réussi a limiter la zone de filtrage et tout va bien.

    merci a tous

  12. #12
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Mouais, pour un sujet d'étude, c'est bien, ne fais simplement jamais ça en entreprise, c'est vraiment pas performant, le Sobel, par ex.

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 453
    Par défaut
    Bonjour,

    Je cherche à détecter les yeux dans mes images et j'utilise prewitt ou canny. J'essaye de suivre vos conseils et d'utiliser Hough transform. Il y a une fonction hough dans matlab. Mais je ne comprends pas comment l'utiliser. Une fois calculer comment utiliser le résultat H pour trouver les yeux dans l'image?

    Merci

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

Discussions similaires

  1. [Blog] Image Processing par Steve Eddins
    Par Jerome Briot dans le forum Images
    Réponses: 0
    Dernier message: 30/09/2007, 21h00
  2. Identification d'objet sans 'Image processing toolbox'?
    Par vincent33 dans le forum Images
    Réponses: 1
    Dernier message: 21/09/2007, 15h54
  3. Morphological Image Processing
    Par ImagingAllthe dans le forum Images
    Réponses: 0
    Dernier message: 16/08/2007, 14h46
  4. Réponses: 10
    Dernier message: 01/03/2007, 12h39
  5. Cercle pour image processing
    Par totoc1001 dans le forum Images
    Réponses: 10
    Dernier message: 18/12/2006, 10h20

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