Comment déterminer un seuil

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
OusGH
Messages: 4
Enregistré le: 02 Juin 2014, 13:04

Comment déterminer un seuil

par OusGH » 02 Juin 2014, 13:10

Bonjour,

J'ai besoin de votre aide s'il vous plait. J'ai un projet où je dois récupérer grâce à la kinect des points situé sur le visage de différentes personnes et calculer des distances entre les différents points (par exemple la distance entre les 2 yeux). Ensuite pour chaque personne qui se met devant la kinect je dois pouvoir reconnaître la personne grâce aux distance. Pour ce faire je soustrait la distance dans ma base de donnée avec la distance de la personne: distance_baseDeDonnée(distanceEntreLes2Yeux)-distance_Personne(distanceEntreLes2Yeux) < epsilon, pour pouvoir dire que ce visage appartient à la personne qui est devant la kinect. Je voudrais savoir comment déterminer mon "epsilon". J'espère avoir été clair, merci pour vos réponse.



Avatar de l’utilisateur
WillyCagnes
Membre Transcendant
Messages: 3753
Enregistré le: 21 Sep 2013, 20:58

par WillyCagnes » 02 Juin 2014, 13:22


OusGH
Messages: 4
Enregistré le: 02 Juin 2014, 13:04

par OusGH » 02 Juin 2014, 13:36

WillyCagnes a écrit:bjr

as tu lu ce lien du forum?
http://www.maths-forum.com/coordonne-d-une-point-155934.php



Merci pour votre réponse. Oui je l'ai lu, mais moi je ne cherche pas à retrouver les coordonnées d'un point, j'ai une base de données de distances, et à chaque fois qu'une personne se présente devant la kinect, je calcule la distance entre les 2 yeux par exemple et je fais des opérations de soustraction entre les distances dans la base de données et la distance que je viens de calculer, si cette différence est inférieur à un seuil donné, je retourne la ligne correspondante dans la base de données. Est-ce qu'il y a une méthode pour déterminer la meilleur valeur de epsilon ou je dois tester à chaque fois une valeur.

Groucho
Membre Naturel
Messages: 67
Enregistré le: 14 Mai 2014, 14:19

par Groucho » 02 Juin 2014, 19:35

Bonjour,

Je ne sais rien de la kinect (je ne connaissais même pas ce mot), mais si je comprends bien ta question, il me semble que

epsilon =1/2 min{|d(A)-d(B)|; A et B sont des visages dans ta base}, et où d(X) est la distance entre les deux yeux dans ta base du visage X

Cela assure qu'il y a au plus un visage qui convient, et si tu prends un epsilon plus grand, ça risque de ne pas marcher.

Ceci dit, sérieusement, tu peux reconnaître un visage juste avec cette distance ? Ca m’épate.

OusGH
Messages: 4
Enregistré le: 02 Juin 2014, 13:04

par OusGH » 02 Juin 2014, 19:49

Groucho a écrit:Bonjour,

Je ne sais rien de la kinect (je ne connaissais même pas ce mot), mais si je comprends bien ta question, il me semble que

epsilon =1/2 min{|d(A)-d(B)|; A et B sont des visages dans ta base}, et où d(X) est la distance entre les deux yeux dans ta base du visage X

Cela assure qu'il y a au plus un visage qui convient, et si tu prends un epsilon plus grand, ça risque de ne pas marcher.

Ceci dit, sérieusement, tu peux reconnaître un visage juste avec cette distance ? Ca m’épate.


Je vous remercie pour votre réponse, j'utilise la kinect (capteur de microsoft utilise pour les projets de vision par ordinateur) pour récupérer différent point du visage. J'ai cité la distance entre les yeux pour ne pas compliquer le post. En réalité je récupère la distance entre les yeux, la distance entre les coins extérieurs des yeux, la longueur et la largeur du nez, la distance entre le nez et la bouche, la longueur de la mâchoire, ces distances combinées peuvent être discriminantes. J'ai juste une question, "epsilon = 1/2 min{|d(A)-d(B)|; A et B sont des visages dans ta base};" |d(A)-d(B)| devrait retourner une seule valeur, je cherche le minimum entre quoi et quoi ? merci.

Groucho
Membre Naturel
Messages: 67
Enregistré le: 14 Mai 2014, 14:19

par Groucho » 03 Juin 2014, 09:59

OusGH a écrit:Je vous remercie pour votre réponse, j'utilise la kinect (capteur de microsoft utilise pour les projets de vision par ordinateur) pour récupérer différent point du visage. J'ai cité la distance entre les yeux pour ne pas compliquer le post. En réalité je récupère la distance entre les yeux, la distance entre les coins extérieurs des yeux, la longueur et la largeur du nez, la distance entre le nez et la bouche, la longueur de la mâchoire, ces distances combinées peuvent être discriminantes. J'ai juste une question, "epsilon = 1/2 min{|d(A)-d(B)|; A et B sont des visages dans ta base};" |d(A)-d(B)| devrait retourner une seule valeur, je cherche le minimum entre quoi et quoi ? merci.


En notant d(A)=distance_baseDeDonnée(distanceEntreLes2Yeux) pour chaque visage A, vous prenez toutes les valeurs absolues de d(A)-d(B) pour tous les couples de visages A et B, et vous prenez le minimum des valeurs obtenues.

Mais, en fait, je ne pense pas que ce soit la solution (j'avais mal compris le problème pratique), car vous devez surement aussi prendre en compte l'imprécision de vos mesures, parce que le minimum trouvé risque d'être très petit (peut être même égal à 0), en tout cas plus petit que l'imprécision de vos mesures, et si c'est le cas, il est possible qu'aucun visage ne passe le test.

On sort du domaine mathématique, mais il vaut peut être mieux un test qui laisse passer plusieurs visages (dont le bon, évidemment). Comme vous multipliez les tests, il n'en restera qu'un seul au bout du compte (du moins, il faut l'espérer, il peut y avoir des jumeaux indiscernables dans vos clients). Si c'est votre choix, il faut prendre
epsilon=2e
où e est la marge d'erreur dans vos mesures (le facteur 2 vient du fait qu'il y a 2 mesures concernées, celle de la base de données, et celle effectuée pour le test). Là, vous êtes sûr que le bon visage sera sélectionné. Les autres résultats correspondront à des visages ayant des distances entre les yeux proches.

OusGH
Messages: 4
Enregistré le: 02 Juin 2014, 13:04

par OusGH » 03 Juin 2014, 10:58

Groucho a écrit:En notant d(A)=distance_baseDeDonnée(distanceEntreLes2Yeux) pour chaque visage A, vous prenez toutes les valeurs absolues de d(A)-d(B) pour tous les couples de visages A et B, et vous prenez le minimum des valeurs obtenues.

Mais, en fait, je ne pense pas que ce soit la solution (j'avais mal compris le problème pratique), car vous devez surement aussi prendre en compte l'imprécision de vos mesures, parce que le minimum trouvé risque d'être très petit (peut être même égal à 0), en tout cas plus petit que l'imprécision de vos mesures, et si c'est le cas, il est possible qu'aucun visage ne passe le test.

On sort du domaine mathématique, mais il vaut peut être mieux un test qui laisse passer plusieurs visages (dont le bon, évidemment). Comme vous multipliez les tests, il n'en restera qu'un seul au bout du compte (du moins, il faut l'espérer, il peut y avoir des jumeaux indiscernables dans vos clients). Si c'est votre choix, il faut prendre
epsilon=2e
où e est la marge d'erreur dans vos mesures (le facteur 2 vient du fait qu'il y a 2 mesures concernées, celle de la base de données, et celle effectuée pour le test). Là, vous êtes sûr que le bon visage sera sélectionné. Les autres résultats correspondront à des visages ayant des distances entre les yeux proches.


Je vous remercie pour votre réponse complète et instructive. Ce que je fais est que je calcule pour chaque client qui passe devant la caméra de la kinect, je récupère des points sur son visage et je calcule des distances que je compare avec ma base de données. Les distances que je calcule directement à travers la kinect changent après un certain laps de temps, je pense que c'est dû à l'imprécision (j'utilise une distance euclidienne pour le calcul). Est-ce que vous pensez que je dois prendre la moyenne des distances récupérées pour chaque mesure concernée ?? Merci.

Groucho
Membre Naturel
Messages: 67
Enregistré le: 14 Mai 2014, 14:19

par Groucho » 03 Juin 2014, 11:40

OusGH a écrit:Je vous remercie pour votre réponse complète et instructive. Ce que je fais est que je calcule pour chaque client qui passe devant la caméra de la kinect, je récupère des points sur son visage et je calcule des distances que je compare avec ma base de données. Les distances que je calcule directement à travers la kinect changent après un certain laps de temps, je pense que c'est dû à l'imprécision (j'utilise une distance euclidienne pour le calcul). Est-ce que vous pensez que je dois prendre la moyenne des distances récupérées pour chaque mesure concernée ?? Merci.


Je ne connais pas grand chose à ces trucs, mais ce que je ferais, c'est effectivement prendre la moyenne. La différence entre cette moyenne et les mesures (exactement, la plus grande différence constatée) donnera une idée de l’imprécision e.

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 39 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite