Bonsoir, je debute un programme visant a distinguer des types dans une image, genre une photo d'un dessin. Quel genre de segmentation puis-je appliquer? sur quels criteres se baser?
J'aurais besoins de quelques idées svp! merci
Bonsoir, je debute un programme visant a distinguer des types dans une image, genre une photo d'un dessin. Quel genre de segmentation puis-je appliquer? sur quels criteres se baser?
J'aurais besoins de quelques idées svp! merci
L'année derniére quelqu'un avait (si je me rappel bien) posté un topic sur le meme sujet: diférence entre photo dessin etc...
Parcontre je n'arrive pas à le retrouver.
Merci d'avoir cherché ronan, moi aussi j'ai fait une petite recherche mais pas grand chose d'interessant!
Quelqu'un a deja entendu parler de la methode K-means?
Oui...Quelqu'un a deja entendu parler de la methode K-means?
Par contre je vois pas bien ce que la segmentation vient faire là... Je pense que la reconnaissance photo/dessin ça doit se baser sur des apporches statistques... Quand tu dis dessin, c'est un croquis (que les contours) ou alors une image qui se rapproche d'une photo (avec des couleurs et tout)...
Tu peux être plus précis sur les dessins ??
Je veux pouvoir séparer le dessin de la photo (tous deux contenus dans l'image). Un dessin peut etre un croquis ou contenant des couleurs.
Ok...
Effectivement les K-means c'est peut-être pas mal pour segmenter : en fait ça consiste à se placer dans un espace de paramètres où chaque pixel est représenté dans cet espace.
Par exemple on peut considérer un espace de paramètres à deux dimensions du genre en x l'intensité du pixel, en y la variance autour de ce pixel (calculée dans un cercle de rayon 3 disons).
ça va créer des amas de points, chaque amas correspondant à une classe...
Le k-means consiste à détecter K amas de façon récursive (K/2 itérations je crois):
1 - on calcule le barycentre des points dans l'espace des paramètres
2 - on sépare en 2 l'espace des paramètres : on remplace l'ancien centroïde par deux centroïdes quasi à côté de l'ancien centroïde, mais répartis chacun d'un côté et de l'autre de la séparation
3- on fait converger chaque centroïde vers sa vraie valeur (recalcul des barycentres)
4- on sépare à nouveau chaque centroïde en 2 centroïdes de part et d'autre de la séparation nouvellement créée, et on recommence....
Voilà les grandes lignes... A la fin tu as K centroïdes séparés par K régions (dans ton espace de paramètres) : chaque région est une classe, donc chaque pixel d'une région de l'espace de paramètres est affecté à l'une des K classes.
Bon là je t'ai donné un exemple d'espace de paramètres, mais c'est à toi de définir les paramètres pertinents qui caractérisent le mieux ce que tu cherches, et ça peut être un espace à n dimensions...
Pour ce qui est du choix des paramètres, je sais pas trop... certainement l'intensité et la variance, mais peut-être aussi d'autres choses... Le problème c'est que les K-moyennes seuls, ça prend mal en compte tout ce qui est "approche région" et qui pourrait t'apporter des trucs... Par exemple on peut associer dans les K-moyennes les champs de Markov, il paraît que c'est rudement efficace (tout le monde utilise ça aujourd'hui). Les champs de Markov prennent en compte l'information spatiale des pixels (cad ce qu'il y a autour du pixel). Par contre je ne connais pas la façon de procéder, je sais juste que ça existe...
Je sais pas si j'ai été très clair...
A+
Merci, mais ca ma l'air un peu compliqué donc peux pas te dire si c'est clair ou pas !
Je vais essayer de tester deja ce que ca donne et voir ce que je trouve sur les champs de Markov!
Tu penses que ca me donneras ce que je veux cad des classes bien separees (dessin et photo)? sinon penses-tu que ce soit une bonne méthode?
merci encore!
Disons que c'est une bonne méthode si tu te places dans le bon espace de paramètres... C'est une méthode généralement utilisée en imagerie multimodale (ex:IRM où on a plusieurs images correspondant à plusieurs modes d'acquisition), mais qui peut s'appliquer à ton cas...
Après le tout c'est de trouver l'espace de paramètres pertinents, et là faut vraiment réfléchir dessus... J'ai pas vraiment d'idée comme ça, faudrait voir les images, et puis moi y en a que en DEA, vaudrait peur être mieux que tu demandes à un chercheur pcq là c'est assez pointu...
A+
Je pense que la frontière entre photo et dessin est très difficile à déterminer.
Pour certain type de dessin tu peux peut etre te baser sur la présence de contours noirs, la présence de zone de couleur uniforme (en considérant qu'il n'y ait pas d'ombrage...). Sinon, bah,..., bon courage !
Pour les contours noirs par exemple, tu peux détecter les contours de l'image (filtre de canny par exemple) et vérifier que chaque point de contour correspond à un pixel noir (ce qui n'est normalement pas le cas pour une photo)
Une idée comme ça...
Question : :
S'il s'agit de la photo d'un dessin ?
Ou du dessin fait à partir d'une photo ??
Pour repondre a ta question ce n'est pas de la photo d'un dessin ni d'un dessin fait a partir d'une photo, mais d'un dessin par exemple fait sur un ordinateur (ex: dessin d'un bonhomme sur paint).Envoyé par ToonJ
Les photos contiennent bcp plus de petits details que les dessins donc bcp plus de hautes frequences. J'ai bidouiller un peu les transformees (DCT) mais je sais pas comment l'appliquer a mon probleme avec la classification k-means.
J'ai cherché sur le net mais y'a bcp de maths!
En quoi consiste l'algo de Markov? quelqu'un sait ou je peux trouver l'algo?
ça les maths avec markov tu peux pas y échapper..
C'est pas un algo, c'est tout un domaine des mathématiques du traitement du signal....
ça se base sur le calcul de probabiltés à priori, etc...
Je saurais pas vraiment en parler plus en détails car je suis vraiment pas expert là-dedans, mais à mon avis tu auras pas le choix si tu veux vraiment une segmentation efficace...
Mais qui te demande de faire ça ? C'est pour toi, ou un stage, projet ?
Quel niveau ?
Car à mon avis c'est vraiment pointu, limite sujet de recherche... Enfin bon c'est à prendre avec des pincettes ce que je dis car je ne connais pas toutes les méthodes de traitement d'images, et peut être que c'est un sujet qui a déjà été traité...
Sinon tu peux tenter un truc du genre "chercher les grandes régions homogènes" (filtrages de bases tels que passe-bas etc...), mais ça donnera pas des trucs géniaux...
[EDIT]Qui t'a parlé des K-means ? C'est peut être à cette personne qu'il faut poser la question, elle a sûrement une idée derrière la tête...
[EDIT2]En ce qui concerne les DCT, c'est peut être une meilleure voie... Tu pourrais rechercher les zones homogènes avec les DCT, mais il manque une étape pour savoir quelles sont les régions homogènes qui correspondent au dessin... Vraiment pas simple ce problème...
Hum, utiliser les modèles de Markov pour ton problème me paraît bizarre, mais pourquoi pas . En général, c'est plus utiliser pour la reconnaissance de la parole. De plus, c'est une méthode assez complexe à programmer (notamment des problèmes de virgule flottante assez pénibles), mais cela dit une version light est envisageable assez rapidement.
Si tu veux de diriger vers cette voie, il existe HTK sous linux qui te permet de créer des modèles pour des mots (alors pourquoi pas des images) et qui fait tout le traitement pour toi. Avant de te lancer là-dedans, peut-être faudrait-il que tu testes des choses avec HTK avant, genre lui faire "écouter des images" par exemple.
Par contre, pourquoi ne pas faire une "moyenne" des fréquences représentant d'une part les photos, d'autre part les dessins (apprentissage).
Tu as ainsi 2 classes.
Et ensuite, calculer la transformée de l'échantillon à analyser, et utiliser pour la reconnaissance soit les k plus proches voisins comme explicités ci-dessus, soit le maximum de vraisemblance avec une distance de mahalanobis ?
Cela dit, difficile de faire la différence entre une photo et un dessin représentant fidèlement la photo par exemple.
Peut-être existe-t-il des spécificités de "grain" sur une photo que tu peux extraire et qui sont absentes des dessins
A suivre
Sur un dessin il doit y avoir beaucoup de contours. Essaye des gradients, des Laplaciens et tout le toutim.
Bah non justement, il y en a apparemment moins que sur une photo.Sur un dessin il doit y avoir beaucoup de contours. Essaye des gradients, des Laplaciens et tout le toutim.
Un gradient, ça donne les contours, et... ??
Bon on pourrait chercher justement les zones à faible fréquence, mais il y en a aussi sur les photos donc... pas robuste tout ça!
Sinon pour ce qui est de Markov et apprentissage, à mon avis c'est vraiment la meilleure approche... (Markov est aussi très utilisé en imagerie ).
Tu peux nous donner des exemples représentatifs des photos et dessins que tu comptes traiter (les plus pénibles à traiter selon toi, si possible).
++
Partager