Discussions au sujet de NI LabVIEW

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

Manipulation tableau

Bonjour a tous,

J`ai deja poste ma question dans un topic sur la partie anglaise, mais toujours pas de reponse..... Je me tourne donc vers vous ayant deja recu une aide precieuse ici 🙂 ( c`est pas bien pour mon anglais, mais tant pis 🙂 )....

Voila en gros mon probleme....
Je realise un tracking de mouches avec LV.... Toutes les coordonnees de la mouche a chaque frame (enregistrement a du 20 FPS), me sont renvoyees dans un tableau excel.....
Le probleme est que, de temps en temps, la camera perd ma mouche ce qui renvoi des 0 dans le tableau. Ou parfois confond avec une ombre ce qui renvoi un point bien trop eloigne de celui de la mouche.

J`ai commence un sous-VI qui me permet de remplacer les 0 ou les points trop eloignes par la moyenne du point avant et apres.

Jusque la, je suis content ca marche parfaitement.....

Le probleme qui survient c`est quand j`ai des zeros ou des points trop eloignes pour plusieurs Frames d`affilees. Exemple:
1

2

3

0

0

0

7

8

9

 

J`aimerais dire a mon software, tu fais la moyenne du point avant et apres, mais attention si le points avant ou apres est mauvais, tu va une case apres, si il est egalement mauvais, tu vas encore une case apres....
J`avais trouve avec une boucle If pour utiliser le point apres, mais du coups je suis limite. Je decide jusqu`ou le programme peut aller, et je preferai que le programme trouve tout seul jusqu`ou il doit aller.

Je vous joins le Software que j`ai a l`heure actuelle.

J`espere que mon probleme est facile pour vous ^^

 

Merci

 

Maxime

0 Compliments
Message 1 sur 15
4 762 Visites

(j`ai parfois un peu l`impression de flooder sur le Forum ...........)

Mais vous ecrire me fait le plus grand bien, a chaque fois apres j`ai des eclairs de genie!!!!

Du cous j`ai trouve..... probablement pas la plus simple des solutions ni le code le plus robuste. Mais il fonctionne.

je le joins si quelqu`un avait un jours le meme probleme

0 Compliments
Message 2 sur 15
4 757 Visites

Je suis pas fan de me repondre............ ni de monologuer ^^ Mais j`ai pas trouver pour editer un post......

 

 

Enfin oblige de reposter encore............. Le software que j`ai ajoute hier est pas bon...... Y`avait des erreurs, je m`en suis rendu compte apres coups..........

D`ailleurs dans celui-ci y`a toujours un probleme....... Si la derniere case de mon tableau est un 0 ou alors une valeurs trop eloignees de celle d`avant , il va regarder la suivante pour faire une moyenne.....
Le probleme, etant a la derniere case de mon tableau, celles qui suivent sont des 0 ou NaN.

Du coups il retombe jamais sur ses pattes et tourne en rond.....

Comment eviter cela?

C`est toujours jouable le tracking est relativement bon, du coups faut du vraiment pas de bol pour que ce cas arrive, mais bon je me dois de trouver uen solution a ca............

Si quelqu`un sait, je le re;ercie d`avance

ps: Et encore desole pour le Flood..... ca me gene un peu....

0 Compliments
Message 3 sur 15
4 727 Visites

Je soupçonne ici un problème de maltraitance animale  Smiley tirant la langue

 

C'est un problème complexe que tu poses ici.

 

Ta caméra est en acquisition continue sur la position d'une mouche ...

mais ...

de temps en temps la caméra perd la mouche !

 

dans ce cas,

soit la caméra se dé-lock de toutes cibles (elle est "perdue") et retourne des "0",

soit elle re-lock sur une fausse cible ... une ombre ... n'importe quoi, mais pas la "bonne mouche".

 

après un "certain temps" ... la caméra se reverouille sur la "bonne cible", la mouche.

 

Le problème revient à modéliser le comportement "normal" qu'une mouche peut avoir.

 

La position de mon point "A" est-elle cohérente avec la position du point précédent "A-1" ?  ...

La trajectoire "(A-1)>(A)" est-elle compatible avec le "modèle de vol" d'une mouche ?

 

Le problème rencontré est étroitement lié à ta fréquence d'acquisition.

Plus ta fréquence sera élevée, moins tu auras de faux échos ou fausses cibles.

Si j'ai bien compris tu fais une acquisition toutes les 50ms.

 

Tu parles de "point trop éloignés" ... c'est quoi un "point trop éloigné ?" .... quelle distance maximum peut parcourrir une mouche en 50ms ?

A mon sens, cet éloignement maximum admissible est a définir.

 

avis perso ... c'est dans ce sens que j'essayerais d'avancer, :

 

à chaque fois qu'un point est trop éloigné du précédent (à définir), ou est égal à "0" ... je considère que ma cible est "perdue".

Je  dois recommencer à "chercher" la mouche ... en me basant sur le mouvement.

Je dois retrouver une cible dont la succession des points de capture est compatible avec "le modèle de vol" (et notamment l'écart maximum entre deux points)

 

A mon sens, ce n'est pas un problème à résoudre sur un "tableau de points",

mais bien "en temps réel", point par point.

Si tu travailles sur un tableau de points ... dès que j'ai un écart incohérent, Je considère que la cible est perdue.

Dans ce cas, je scanne le tableau à la recherche d'une "nouvelle" suite de point ayant des écarts cohérents.

Je pense qu'une suite de 3 points cohérents serait un minimum pour estimer avoir une "re-capture"

Si tu as des "dé-lock" trop fréquent, alors c'est que ton acquisition est trop lente.

 

C'est un problème extrêmement complexe de cohérence de trajectoire ...c'est un vrai problème.

 

PS:

 

et si "plus loin", tu as une seconde mouche qui provoque une ombre dont la trajectoire est totalement cohérente avec "le modèle de vol standard" ?

Comment faire la différence entre "mouche" et "ombre de mouche" ?  Smiley tirant la langue

 

 

 

 

 

 

 

Message 4 sur 15
4 719 Visites

A propos de la distance qu`une mouche peut parcourir en 50ms, je n`en sais trop rien.... 

Mais ouai je devrais faire une recherche sur ca, reprendre les valeurs renvoyees et analyser pour trouver le maximum.
Mais grosso modo un point parasite, ressemblait a ca:

Untitled.png

 

Donc j`ai de la marge.

 


Je n`ai peut-etre pas precise, mais la mouche ne vole pas. Elle marche dans une boite qui ressemble a un Y (il y`a ce type d`experience pour les souris et rats, appelle Y-Maze).


 

Et puis pour ce qui est des moments ou je perd la mouche (quoique tres faible au final, peut-etre dix a trente frames sur  une video de 3 minute (20FPS)), Ca se produit, grosso modo, quand ma mouche se trouve dans un coin... Du coups, la solution trouve, me semble pas trop mauvaise, enfin en tout cas, ca semble prometeur.
Des qu`un zero apparait (ou un point parasite), le programme prend le point juste avant le 0 qui etait bon, et prend le point apres le 0 qui est bon en comparaison avec celui d`avant. Si y`a plusieurs zero, il cherche apres un point coherent avec celui juste avant le premier 0 obtenu. et en fait une moyenne. et ainsi de suite.

Pas sur que c`est clair ^^ mais ca fonctionne.....

Maintenant oui, comme dit precedemment, le probleme reste si j`ai un 0 juste a la derniere frame de la video. J`ai un zero au dernier chiffre de mon tableau. du coups mon programme veut faire la moyenne. Prend celui avant qui est bon mais pour le point apres il ne trouve que des 0 ou NaN (je ne sais pas ce qu`il y`a apres les dimensions de mon tableau par default).....
Si c`etait des NaN  ca serait bien, mais je suppose que c`est des 0.

J`ai joins mon software dans mon precedent post...... Mais j`avoue que la solution maintenant ne me semble pas evidente.

 

ps: j`essayerai de jouer avec la frequence d`enregistrement voir si ca ameliore le tracking ou non.

 

ps2: pour tes questions de fin, Je n`ai qu`une mouche par Y-maze, donc je ne rencontrerai pas ce genre de probleme 🙂

Enfin ton interet pour le sujetme fait vraiment plaisir, merci

Message 5 sur 15
4 716 Visites

Le (ou les) "0" en fin de tableau ... je les supprimerais.

 

ceci dit ...

 

sans avoir regardé le bon ou le mauvais de ton code ... question "propreté", c'est pas réellement le "top".

 

donc ... j'ai fait rapidement un peu le ménage (code identique, mais " qui l'fait " un peu plus).

 

C'est du langage graphique ... ça "doit" être graphiquement (visuellement) propre.

 

ci-joint en LV2011.

Message 6 sur 15
4 708 Visites

Ooo merci, j'avoue que le mien était un peu "Brouillon" ^^

Sinon pour le dernier 0, je ne peux pas le supprimer.... Sinon parfois je vais avoir des matrices de dimensions n et parfois n-1, ou n-x si y'a plusieurs 0 a la fin. Donc ca va vraiment me poser probleme.

Mais du coups j'ai pense à la chose suivante:

Y'a jamais plus de 10 mauvais nombre..... pour être vraiment large, disons 20.....

Du coups, dans le cas ou j'aurai un 0 au dernier, je vais lui dire : "compare avec les 20 suivants, et si tu n'as toujours aucun bon numero apres, te tracasse pas trop.... prend le dernier bon chiffre que tu avais et mets a la place du dernier 0".

Pas difficile a coder ça. Donc ca devrait le faire. c'est pas parfait parfait, mais ça le fera. C'est suffisant.

(Enfin c'est ce que je pense :D, j'essayerai demain au boulot, je verrai ^^)

Et franchement merci. Si j'arrive a finir mon programme avant l'heure je passerai le reste du temps pour l'esthetique... J'avoue qu'un beau code, c'est bien plus agreable.

Message 7 sur 15
4 704 Visites

Yop,

Voila, c`est regle, c`etait tout simple ^^, j`ai juste du rajouter un cable a l`arrache dans ton code, je fous le bordel, mais c`est pas grand chose 🙂

C`est fou comme au final m`a fallu un max de temps pour faire un programme tout simple........

Mais bon je devrais le refaire, ca irait beaucoup plus vite. Mais je suis content je comprend bien mieux les icones de manipulation de matrice. donc c`est deja un bon point...

Je me suis juste rendu compte d`un petit souci. Si la premiere frame est un zero, le programme mettra 0 pour toutes les autres frames......... 😞
Mais bon, c`est moins genant. Au pire c`est comme si y`avait pas de mouche dans mon labyrinthe.... et on s`arrete la.

C`est moins embetant qu`un programme qui boucle a l`infini.

En tout cas merci pour ton aide precieuse!!!

Je pense que niveau LabVIEW, j`en ai presque finit. 
Me reste plus qu`a integrer un code MatLab et puis generer un fichier Excel correct et lisible. (si je rencontre encore des problemes je reviendrai vers vous ^^)

0 Compliments
Message 8 sur 15
4 688 Visites

salut à vous!! une histoire de mouche! j'ai trouvé le post super interessant! vraiment (même pas une blague). Je ne savais pas qu'il y avait des expériences avec des mouches qui marchent dans des boites en forme de Y.

Il y a la bonne réponse, alors c'est bien.

A+ et bonne mouche ou bon vol...

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

0 Compliments
Message 9 sur 15
4 685 Visites

@Luc : " Je ne savais pas qu'il y avait des expériences avec des mouches qui marchent dans des boites en forme de Y. "

 

 

Luc ... bon dieu .... faut sortir un peu !    Smiley clignant de l'œil

 

 

(je taquine ... moi, idem, je ne savais pas)

0 Compliments
Message 10 sur 15
4 678 Visites