bonjour, je suis à la recherche d'une technique de comparaison des images par leurs formes, si quelqu'un a une idée ou une implementation d'un descripteur de forme.Merci d'avance.
bonjour, je suis à la recherche d'une technique de comparaison des images par leurs formes, si quelqu'un a une idée ou une implementation d'un descripteur de forme.Merci d'avance.
Bonjour,
bon... tu extrais des formes de ton image et tu souhaites les caractériser.
Est ce que tu as une base de données à laquelle tu souhaites comparer tes formes ?
- Si oui, c'est des techniques de "Shape matching" (j'aime bien MSGPR).
- Si non, je suis un fan des indices de formes pour leur rapport simplicité/efficacité. Mais est ce que c'est des formes d'un type particulier ou quelconques ? Si c'est particulier, on peut trouver une méthode mieux adaptée, sinon toutes les méthodes peuvent être utiles. Elles se déclinent alors en deux familles : les méthode de description du contour (Fourier, chaîne de Freeman, description polaire, profils, etc.) ou description globales (indices de formes, histogrammes de projection & CPT, signature polaire, tous les moments, etc.).
Donne nous donc quelques précisions, voire mieux des images![]()
Bonjour voici le lien de la base :
http://www1.cs.columbia.edu/CAVE/sof...b/coil-100.php
Presque tous les systèmes de recherche d'images utilise cette base pour tester l'efficacité .
Bonjour,
Je ne suis pas un spécialiste des descripteurs de formes mais je connais un peu la base d'images de columbia et je peux confirmer que des techniques de shape matching qu'évoquait ToTo13 vont être efficaces.
Edit from ToTo13 : nouvelle discussion ouverte concernant ta question ici.
Dernière modification par ToTo13 ; 17/02/2009 à 23h53.
Bonjour,
J'aimerai bien savoir comment utiliser la technique MSGPR ( si toto13 peut m'aider à la comprendre) ou bien une autre technique plus simple pour comparer les formes des images de la base columbia. de toute façon
Bonsoir,
voilà le lien d'une version française de l'article. Pour les puristes, j'ai aussi la version IEEE
Dis moi où tu bloques, je verrai ce que je peux faire.
Bonjour toto13, pourriez vous me citer les notions de base avant de lire cet article. Par exemple
C'est quoi :
L'analyse multi-echelle.
fonctions paramétriques x(u) et y(u).
l'abscisse curviligne u.
périmètre du contour.
......
J'ai cherché sur google mais j'ai pas trouvé d'information, par exmple pour l'analyse multi-echelle j'ai trouvé son application comme Analyse multi-échelles de la sécurité routière. Application SIG au ... .
Est ce que vous connaissez des documents qui expliquent brevement ces notions avant d'éssayer de comprendre la technique MSGPR ? merci toto13 .
Bonjour,
Multi-échelle se traduit directement : variation de l'échelle (du zoom). Donc tu fais une analyse en fonction de plusieurs échelles différentes.
Fonction paramétrique : je pense que Zavonen te répondra mieux que moi sur le sujet. Là en gros tu souhaites décrire le contour par une fonction C(u) que tu décomposes en deux fonctions par rapport aux axes : C(u) = (x(u) , y(u)). Dans ce cas précis, cela te donne les positions des pixels du contour ordonné. Avec C(0) le premier pixel du contour, C(1) le suivant, etc.
Abscisse curviligne, ici, ici ou ici.
Périmètre du contour : je pense qu'il veulent parler de la longueur du contour.
bonjour toto13.
dans l'article que vous m'avez donné, j'ai pas bien compris les étapes suivantes.
Comment calculer le u et les deux fonction x(u) et y(u) du contour ci-dessus ?
Est ce qu'on peut calculer x(u) et y(u) par la connaissance des positions des pixels du contour ?
Comment calculer le périmètre du contour ?
Comment normaliser u entre [0,2*pi] ?
----->Un grand merci toto13.
Bonsoir,
d'après ce que je comprends de l'article :
- u est un paramètre, donc inutile de la calculer. Dans ce cas tu es dans un espace discret, donc u appartient à l'intervalle [0, Périmètre].
- oui, on calcule x(u) et y(u) en fonction des la position des pixels. x(u) est l'abscisse du u-ième point du contour.
- pour le périmètre, soit tu compte brutalement le nombre de pixel, soit tu affines en en faisant la somme des distances des pixels voisins du contour. Donc tu ajoutes à chaque fois 1 ou racine carrée de 2.
- pourquoi ne pas tout simplement faire un produit en croix.
Par exemple, supposons qu'on a l'image suivante :
les pixels du contour sont par exemple :
[30,50].......................[40,50]
..........................................
..........................................
..........................................
[30,60]........................[40,60]
pour les deux pixels [30,50], [34,50] on a x1(u)=30 et x2(u)=34 ( voir la figure ci-dessous)
Comment connaître leur positions dans l'axe des u ?
Bonjour,
non, ce n'est pas ça
Tu choisis un point du contour qui te sert d'origine, donc pour lequel u=0.
Si je prends ton exemple en choisissant (30,50) comme point d'origine, j'aurai f(0) = (x(0),y(0))=(30,50).
Si maintenant je tourne dans le sens trigo, on aura pour u allant de 0 à 10 : f(u) = (x(u),y(u)) = (30, y(0)-u) = (30, 50-u).
Dans la partie suivante, c'est le X qui varient et les y qui sont stables.
Tu ne fais que noter les coordonnées des points du contour ordonné.
Oui, j'ai compris ce cas particulier.
Maintenant si on veux généraliser pour n'importe quel forme de contour :
on extrait les points de contour, puis on les ordonne, par exemple on crée un tableau ordonné x[] qui contient les abscisse des pixels du contour, un autre tableau ordonné y[] qui contient les ordonnées du contour, ça c'est faisable.
Mais![]()
Comment on peut trouver une relation entre les x[] pour créer la fonction x(u) ?
de même comment on peut trouver une relation entre les x[] pour créer la fonction y(u) ?
vous voulez dire que les deux tableaux x[] et y[] sont ma fonction f(u) .
Si c'est oui, d'après l'article MSGPR, comment lisser les des deux fonctions par filtrage passe-bas gaussien d'écart-type σ .
Bonjour
oui, c'est bien ta fonction.
Pour le lissage, regarde les filtres 1D, il y a pas mal de discussion dans la forum.
C'est de toute façon un filtrage par convolution de dimension 1 pour lequel le masque est remplit par un noyau Gaussien.
Bonsoir toto13.
Concernant les filtres 1d, j'ai compris comment faire la convolution, mais :
Question 1: Comment créer le masque gaussien, est ce que par la formule :![]()
Question 2 : comment choisir la taille du masque ?
Question 3 : Concernant la normalisation de u, j'ai pas trouvé une idée comment normaliser le u dans [0,2*pi] d'ailleur je ne sais même pas pourquoi? Merci pour votre aide.
Bonjour,
- Q1 - La formule ne s'affiche pasPour créer un filtre Gaussien.
- Q2 - euh... sais pasJ'aurai tendance à dire qu'il faut poser la question à l'auteur ou sinon demander à quelqu'un qui comprend mieux l'anglais que nous
- Q3 - J'ai déjà répondu à cette question => Un produit en croix![]()
Ben alors... on ne sait plus faire un produit en croix
Tu as un intervalle de valeurs par pas de 1 entre [0, N], avec N le nombre de points de contour. Et tu veux que ces valeurs s'étalent sur [0,2Pi].
Donc pour tous les points p de ton intervalle : x = p * 2Pi / N (attention aux erreurs d'arrondi). Ainsi tu auras la valeur de p sur l'intervalle [0,2Pi].
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager