Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1435 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  Algorithme de Canny

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Algorithme de Canny

n°1406518
skip78
Posté le 13-07-2006 à 16:34:14  profilanswer
 

Salut à tous.
 
Je souhaiterais comprendre le principe de l'algorithme de canny, sachant que j'ai vu l'article wikipedia et que, pour l'instant, je ne sais pas ce qu'est un filtre matriciel donc ca ne me parle absolument pas  :ouch:  
 
 Donc si quelqu'un s'y connait, ne serais ce qu'en filtres, je veut bien une explication succinte :)  
 
Merci, Skip

Message cité 1 fois
Message édité par skip78 le 13-07-2006 à 16:35:41
mood
Publicité
Posté le 13-07-2006 à 16:34:14  profilanswer
 

n°1406924
pfuitt
Posté le 14-07-2006 à 14:28:58  profilanswer
 

skip78 a écrit :

Salut à tous.
 
Je souhaiterais comprendre le principe de l'algorithme de canny, sachant que j'ai vu l'article wikipedia et que, pour l'instant, je ne sais pas ce qu'est un filtre matriciel donc ca ne me parle absolument pas  :ouch:  
 
 Donc si quelqu'un s'y connait, ne serais ce qu'en filtres, je veut bien une explication succinte :)  
 
Merci, Skip


 salut,
 
le filtrage matriciel est basée sur la convolution de ton image (une matrice L*H) par une autre matrice correspondant à ton filtre... voilà pour la definition.
si cela ne t'avance pas, le pixel de destination de coordonnées (x,y) apres filtrage vaut
dest

Code :
  1. float dest = 0.0f;
  2. for(int j = 0 ; j < h ; j++)
  3. {
  4.     for(int i = 0 ; i < l ; i++)
  5.         dest += s(x- l/2 - i, y - h/2 - j) * c(i, j);
  6. }


et il faut faire cela pour tous les pixels de ton image
 
où s(x,y) est la valeur de ton pixel aux coordonnées x, y dans l'image source de dimension l,h
et c(x,y) les coef de ton filtre de dimension n, m
 
et si c toujours pas clair... google est ton ami... filtrage image sobel... :)
 
le seul truc important est de faire attention aux dépassements (genre tu veux faire tenir tout cela dans un BYTE... ou autre) et bien sur aux effets de bords mais bon ca c'est evident
 
et si tu es TRES feignant, installe opencv :)
 
 
@pluche

n°1407860
skip78
Posté le 17-07-2006 à 10:13:16  profilanswer
 

Merci pour tes explications :)
J'ai effectivement compris le principe de conveolution maintenant. Mais le problème est que les filtres que je trouve fonctionnent à partir de la luminosité des pixels et non pas de leur valeur (couleur)  
 
 Comment faire ? :p

n°1407879
Moktar1er
No one replies...
Posté le 17-07-2006 à 10:40:05  profilanswer
 

Avant de te lancer dans le traitement de l'image il te manque des bases manifestement...
Je te conseille de te renseigner sur les espaces colorimètriques, leur signification (le rôle de chaque couche) etc.
De même sur ce que c'est qu'une convolution (approche temporelle et approche fréquentielle). Juste faire faire bête une multiplication de matrice c'est bien, mais comprendre d'où ça vient et pourquoi on le fait c'est mieux.

n°1407990
skip78
Posté le 17-07-2006 à 12:07:38  profilanswer
 

bah j'aimerais bien mais bon j'ai vraiment pas le temps :S En fait j'ai créé un logiciel en me basant sur le principe que j'avais une image exploitable au départ, et il s'est avéré recemment que ca n'était pas le cas et que j'avais besoin de faire un traitement d'image préalable. Or il me reste moins d'une semaine pour boucler le tout donc bon je t'avouerai que lire des piles de docs sur le traitement d'image (ce que je fais deja depuis ce matin cela étant dit ;)) bah c'est tendu :(
 
 Bilan si quelqu'un sait comment travailler directement sur la luminosité (je devellope sous Allegro en c) ou si il faut absolument passer par une conversion en nuances de gris, (toi par exemple ? :p) merci :)

n°1407998
Moktar1er
No one replies...
Posté le 17-07-2006 à 12:14:28  profilanswer
 

Déjà tu bosses sur quoi? Couleur ou niveaux de gris?
Si c'est de la couleur c'est en quoi? RGB? YC1C2? etc.?
Si tu es en RGB tu peux bêtement prendre la moyenne des 3 couches pour avoir la luminosité... Ca ne sera pas strictement exact, mais c'est une bonne et rapide approximation.
Parfois il vaut mieux laisser un projet inachevé avec toute la doc. qui va bien pour que quelqu'un le finisse facilement derrière, que de chercher à finir salement à tout prix un truc qui sera bancal et non maintenable.
 
Edit: D'ailleurs, l'idée du Canny est bonne mais j'ai peur qu'il soit encore un poil trop sensible au bruit et que tu doives encore te taper une étape de débruitage avant celle là. Je te conseillerai plutôt de partir sur un Deriche voire même d'utiliser les opérateurs de Shen qui sont beaucoup plus robustes au bruit (surtout Shen en fait).


Message édité par Moktar1er le 17-07-2006 à 12:23:03
n°1408656
skip78
Posté le 18-07-2006 à 15:37:16  profilanswer
 

Salut à toi :)
Bah je vais voir ce que je trouves avec Deriche mais bon je pense que Canny devrait suffire. Cela etant dit je n'arrive pas à l'appliquer c'est une cata ! J'ai reussi à transformer mon image en nuances de gris grace à un filtre classique, mais ca me donne des valeurs en 24 bits. Et il me semble que si j'arrivais à les avoir sur 8 bits ca me donnerait la luminosité :) Mais j'ai beau chercher, je ne sais absolument pas comment faire. Pourtant ca me semblait basique mais en fait aucune fonction ne me semble correspondre :(
 
Bon et je vais essayer la moyenne des 3 mais c'est vraiment à l'arrache quand même ;)

n°1408747
boulax
Inserer phrase hype en anglais
Posté le 18-07-2006 à 17:37:27  profilanswer
 

Renseigne toi sur l'espace TSL (Teinte, saturation, luminance), ça te permet de travailler uniquement sur la notion de luminosité, sans te soucier de la couleur.


---------------
Posté depuis des chiottes, sales. Me gusta.
n°1411455
pfuitt
Posté le 22-07-2006 à 15:37:21  profilanswer
 

si il galere en rgb, je sai spas si le tsl est vraiment une bonne idée... dans un premier temps convertis ton image de trois canaux vers un (une brave moyenne doit etre suffisante, sinon recupere les coef de la matrice de bayer) et effectue ton traitement


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  Algorithme de Canny

 

Sujets relatifs
Cherche algorithme pour dessiner des graphsbesoin d'aide algorithme de ransac
algorithme convolution player.Compléxité d'un algorithme
traduire sous forme d'algorithme objet IAlgorithme de permutation de 2 éléments d'une liste simplement chaînée
algorithme de quine mc clusckyalgorithme pour derouler les donnees d'un arbre en java
Recherche opérationnelle : quel algorithme ?Algorithme de tomas en C
Plus de sujets relatifs à : Algorithme de Canny


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR