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

Algorithmes et structures de données Discussion :

Débruitage d'images


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2002
    Messages : 66
    Points : 40
    Points
    40
    Par défaut Débruitage d'images
    bonjour,

    avant de traiter mon image, j'aimerais la débruiter. Comme il s'agit d'une image noir/blanc je peux me contenter de remplacer chaque pixel par la moyenne de ses voisins non ? Et pour éviter que cet algo produise un flou dans les bords, j'ai lu qu'on pouvait éviter cela en prenant que certains pixels. J'aimerais en savoir un peu plus sur cette manière de faire...

    Ensuite après coup, je veux appliquer Kanny pour détecter les contours. J'aurais également voulu savoir si après Kanny, il était possible de savoir quels pixels sont "entourés" par Kanny... pour localiser un objet quelconque par exemple.

    Merci d'avance.

  2. #2
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Bonjour,

    Je peux donner une idée par rapport à ton idée d'algorithme de débruitage en se basant sur les moyennes des pixels voisins.

    Je pense que cette méthode peut donner des bons résultats, mais parfois erronés si le pixel se trouve "en bordure de zone".

    Une idée pour bien faire me vient en tête : il faut prendre les pixels voisins 3 par 3 de manière consécutive, faire la moyenne de ces "segments", et ensuite detecter "l'appartenance" du pixel en question à une des "zones" environnantes.

    Par exemple, en numérotant de gauche à droite et de haut en bas les pixels, avec ce schéma :

    1 2 3
    4 5 6 sachant que 5 est le pixel en cours de traitement
    7 8 9

    calculer les moyennes suivantes des ensembles de 3 pixels suivants :
    123
    236
    369
    698
    987
    874
    741
    412

    Ensuite, chacun de ces ensembles permet de detecter à mon avis "l'orientation" de la zone, et donc de savoir si le pixel 5 appartient à une zone ou à une autre, si par exemple les zones 123 236 et 412 ont une moyenne très proche en comparaison à 698 987 741.

    Juste une idée..... Après désolé je ne connais pas Kanny.
    K

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2002
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    Ah oui bonne idée, jvais essayer de mettre ca en oeuvre. Merci beaucoup

  4. #4
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    C'était une idée, je ne pense pas que ce soit la meilleure solution de traiter le problème, ou même que ce soit une solution valable (!)..
    Je ne suis pas un expert des algorithmes de traitement d'images, peut-être quelqu'un qui s'y connait plus pourra te donner une solution d'algorithme globalement utilisée pour ce genre de traitements..

    Bon courage en tout cas As-tu lu des ouvrages sur le sujet? Qu'en disent-ils ?
    K

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 135
    Points : 62
    Points
    62
    Par défaut
    Salut,

    pour réduire le bruit dans une image tu a le choix entre plusieurs méthodes, moi j'en utilise deux qui marche assez bien en général.

    il faut convoluer ton image d'origine (en niveau de gris) avec un noyau de convolution qui est en fait une matrice 3x3 (ou 5x5 ou 7x7 à toi de voir en fonction des résultats que tu veux obtenir), on appel plus généralement cette matrice un filtre..

    Donc les deux méthodes dont je te parle plus haut sont en fait deux filtres différents.

    Donc soit tu utilises un filtre appelé gaussien, soit un filtre moyen,

    Fitre Gaussien:
    1/16 2/16 1/16
    2/16 4/16 2/16
    1/16 2/16 1/16
    Filtre moyen:
    1/9 1/9 1/9
    1/9 1/9 1/9
    1/9 1/9 1/9
    Il faut donc que tu parcours ton image avec ton filtre et que tu multiplies chaques pixels de ton image avec les pixels correspondant de ta matrice (filtre), tu les sommes, et tu changes la valeur du pixel de ton image qui correspond à celui qui est multiplié par le pixel centrale de ta matrice, par cette somme.

    Pour les bords, il faut que tu rajoutes 1 ligne de pixel (si ton filtre à une taille 3x3) autour de ton image en recopiant tous simplement les bords avant de passer ton filtre. Quand le traitement est terminé, tu enlève simplement les lignes rajouté pour retrouver la meme taille que ton image d'origine.

    Par contre si ton bruit est de type poivre et sel, je te conseil d'abord de pré-filtré avec un filtre d'ordre qui consiste en fait à ordonner en ordre croissant les valeurs des pixels de la fenetre englobant le pixel en cours(fenetre 3x3) (que tu passeras sur toute ton image) et de prendre la valeur median sur les neufs (celle du milieu) et de la remplacer toujour au centre de ta fenetre (ou matrice 3x3) dans ton image.

    Voilà, c'est assez dur de tout synthétiser en quelques lignes... J'espère que ça t'aidera.

    @+[/code]

  6. #6
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Salut Rafoo,

    Que penses-tu de la méthode que j'ai décrite : faisable, pas faisable ?
    La méthode qui consiste à appliquer un filtre reste proche de la méthode de départ, c'est à dire calculer une moyenne globale, ne tenant pas vraiment compte de "l'orientation" du motif, qu'en penses-tu ?
    K

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 135
    Points : 62
    Points
    62
    Par défaut
    Quand on parle de réduire le bruitage d'une image, l'orientation du motif ne rentre pas en compte... j'ai pas trop compris pourquoi tu parlais d'orentation du motif.

    L'orientation d'un objet dans ton image serait utile quand tu veux détecter les contours (exemple filtrage passe-haut avec "Canny, Prewitt, Sobel etc...")

    Mais bon, peut être avec plus de précision, et un peu de bidouillage, ta méthode pourrai marcher.. mais à mon avis au final, tu auras le même résultat que les méthodes usuel qui sont données par les matheux.

    En tout cas au moins tu as essayé même si c pas ton domaine de prédilection
    @+

  8. #8
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    En fait la detection d'orientation me parraissait importante, car elle permet de detecter des zones, et donc permet de prendre une couleur logique par rapport à la position du pixel dans son environnement, mais ce n'est peut-être pas adapté à une photo, plutot à une image de type cartoon.. C'était une solution que j'ai vu, pour un pixel noir de bruit, situé en bordure de zone, dans une zone claire, avec la méthode des moyennes, ce pixel serait encore visible, car il serait la moyenne de la zone contour ( imaginons du noir ) et de la zone claire ( au pire du blanc ) donc ça donnerait un gris, le bruit n'aurait pas disparu.

    Merci en tout cas, tu as bien compris que ce n'était pas mon domaine mais je trouve ça vraiment interessant !

    J'ai imaginé une méthode proche de la méthode manuelle : on regarde une zone, si dans cette zone on voit un point "parasite", on le recolorie de la meme couleur que la zone à laquelle il appartient
    K

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2002
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    Je vais appliquer un filtre comme tu as expliqué Rafoo. Ca devrait largement suffir...

    merci pour vos réponses.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2002
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    Juste encore une question Rafoo...

    Je vais illustrer ta méthode par un exemple et si tu pouvais me dire si c'est correct, ce serait sympa.

    Matrice "image" contenant les valeurs des pixels:
    100 110 90
    20 250 126
    60 80 120
    250 est donc le pixel actuellement traité.
    Je multiplie chaque pixel de l'image avec les pixels correspondants du filtre. Je prends ici le filtre Gaussien que tu as donné.
    Ce qui me donne:
    6.25 13.75 5.63
    2.5 62.5 15.75
    3.75 10 7.5
    En additionnant les éléments de cette matrice résultante, j'obtiens 127.63
    C'est donc cette valeur qui remplacera le pixel actuellement traité.

    Mon image deviendra donc ceci après ce traitement:
    100 110 90
    20 127.63 126
    60 80 120
    Et bien je fais ça pour chaque pixel de l'image.

    C'est bien juste Rafoo ?

  11. #11
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Je ne m'appelle pas Rafoo !
    (blague)

    Mais je peux te confirmer que c'est bien ce qu'il faut faire
    K

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2002
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    Ok merci KiLVaiDeN (un peu compliqué à écrire...lol), c'est cool alors, le terme "convolution" me faisait un peu peur

  13. #13
    Membre actif Avatar de Biosox
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 298
    Points : 203
    Points
    203
    Par défaut
    j'ajoute juste que lorsque tu "convolues" une image avec un filtre, il faut d'abord inverser le filtre dans les deux sens:

    si tu convolues ta matrice avec le filtre:
    1 2 3
    4 5 6
    7 8 9
    il faudra faire l'opération que tu décris plus haut avec la matrice:
    9 8 7
    6 5 4
    3 2 1
    dans ton cas, comme dans la plupart des filtres, le filtre est totalement symétrique, donc ça ne change rien. Mais je te précise juste ça au cas ou, puisque le terme "convoluer" te faisait peur.

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 135
    Points : 62
    Points
    62
    Par défaut
    Comme KiLVaiDeN la dit, tu as tout compris malgré mes explications barbare!!! Cool. J'espère que ça suffira à réduire le bruit dans ton image. Si tu as d'autres questions n'hésite pas.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2002
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    ah ok Biosox, merci car j'y aurais pas fait attention...

  16. #16
    Membre confirmé
    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
    Points : 451
    Points
    451
    Par défaut
    Citation Envoyé par Rafoo
    Quand on parle de réduire le bruitage d'une image, l'orientation du motif ne rentre pas en compte... j'ai pas trop compris pourquoi tu parlais d'orentation du motif.

    L'orientation d'un objet dans ton image serait utile quand tu veux détecter les contours (exemple filtrage passe-haut avec "Canny, Prewitt, Sobel etc...")
    @+
    ça n'est pas totalement vrai... Les filtrages anisotropes sont justement destinés à réduire le bruit tout en conservant au max les contours (ce qui est inévitable avec un filtrage isotrope)... Ainsi on lisse principalement dans la direction perpendiculaire au gradient de l'intensité...

    Mais bon ça n'est pas sur le motif, c'est plutôt sur les contours...

    A+
    "Cultiver les sciences et ne pas aimer les hommes, c'est allumer un flambeau et fermer les yeux." Proverbe chinois

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

Discussions similaires

  1. Débruitage d'image Scilab
    Par benji54000 dans le forum Scilab
    Réponses: 0
    Dernier message: 26/02/2014, 09h35
  2. [Débutant] probleme sur le débruitage d'image
    Par kryss01s dans le forum Images
    Réponses: 4
    Dernier message: 17/03/2011, 15h42
  3. Débruitage d'images par l'algorithme Mean Shift
    Par pseudocode dans le forum Traitement d'images
    Réponses: 0
    Dernier message: 11/12/2008, 14h10
  4. Débruitage d'images
    Par millie dans le forum Traitement d'images
    Réponses: 0
    Dernier message: 08/12/2008, 22h03
  5. Erreur dans cours Débruitage d'image ?
    Par velkouby dans le forum Traitement d'images
    Réponses: 13
    Dernier message: 01/02/2008, 19h53

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