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 :

Détection de contour PREWITT


Sujet :

Traitement d'images

  1. #1
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 960
    Points
    960
    Par défaut Détection de contour PREWITT
    Bonjour à tous.
    Je viens d’attaquer la programmation des filtres et j’ai un petit problème concernant le filtre PREWITT pour la détection de contours.
    Je vais vous dire comment j’ai procédé, dites moi SVP ou est ce que je me suis trompé (Ou peut être pas )
    Prenons un exemple : (celui du tut)



    Pour la détection de contour verticale, voici le noyau de convolution :




    Pour ne pas sortir de l’image j’ai commencé le traitement à partir du pixel [2][2](je sais j’aurai du faire la gestion des bords mais j’ai préféré faire simple pour un premier programme)

    Voici les voisinages du pixel [2][2] avant traitement :


    162 162 162
    163 161 162
    163 163 163

    La valeur du pixel X devra donc être -162+162-163+162-163+163
    Ce qui vaut -1 donc x prends Abs (-1)=1
    La valeur 1 étant inférieur à 255 je ne la divise pas par 3, ce qui veut dire que la nouvelle valeur du pixel [2][2] est 1,Est-ce bien cela ?



    Voici l'image du résultat du Tut

    Et voici l'image que réalise mon Application (Piece jointe),Elle est un peu différente de celle du Tut
    Me serais je trompé quelque part ?!
    Merci pour votre patience!

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par b_reda31 Voir le message
    La valeur 1 étant inférieur à 255 je ne la divise pas par 3, ce qui veut dire que la nouvelle valeur du pixel [2][2] est 1,Est-ce bien cela ?
    On divise TOUJOURS par le facteur de normalisation, quelque soit la valeur obtenue.

    Donc: valeur = 1/3 -> 0 (entier)

    Et voici l'image que réalise mon Application (Piece jointe),Elle est un peu différente de celle du Tut
    Me serais je trompé quelque part ?!
    Non, ca a l'air bon. C'est juste que dans le tutorial j'ai utilisé une echelle logarithmique pour qu'on puisse voir les petites variations de gradient:
    valeurlog = 255 * log(valeur+1) / log(255+1)

  3. #3
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 960
    Points
    960
    Par défaut
    Merci pour votre confirmation pseudocode

    pseudocode
    j'ai utilisé une echelle logarithmique pour qu'on puisse voir les petites variations de gradient:
    valeurlog = 255 * log(valeur+1) / log(255+1)
    Je n'ai pas trés bien saisi comment avez vous appliqué cette formule

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par b_reda31 Voir le message
    Je n'ai pas trés bien saisi comment avez vous appliqué cette formule
    C'est juste un changement d'echelle a la fin du calcul.

    1. convolution: valeur = noyau (x) voisinage --> -765...765
    2. normalisation: valeur = valeur/3 --> -255...255
    3. seuillage: valeur = abs(valeur) --> 0...255
    4. echelle: valeur = 255*log(valeur+1)/log(255+1) --> 0...255

    A noter que ce changement d'echelle ne sert a rien a part faire ressortir les petites variations.

  5. #5
    Futur Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    quelqu'un aurait un code source en delphi de ce filtre?

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

Discussions similaires

  1. opérateurs de détection des contours
    Par le boubog dans le forum Traitement d'images
    Réponses: 4
    Dernier message: 27/11/2007, 16h25
  2. [Débutante] Détection de contour
    Par diana82 dans le forum Images
    Réponses: 3
    Dernier message: 29/10/2007, 16h20
  3. Détection de contours sur une vidéo
    Par willem77 dans le forum OpenCV
    Réponses: 0
    Dernier message: 11/09/2007, 13h45
  4. [débutant]traitement image, détection de contour
    Par seerauber dans le forum Traitement d'images
    Réponses: 4
    Dernier message: 13/07/2007, 15h25
  5. Détection de contour
    Par biquet dans le forum Images
    Réponses: 11
    Dernier message: 19/01/2007, 17h50

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