J'aide une clinique vétérinaire à mesurer la pression sous la patte d'un chien. J'utilise Python pour l'analyse de mes données et je suis maintenant coincé en essayant de diviser les pattes en sous-régions (anatomiques).
J'ai fait un tableau 2D de chaque patte, qui consiste en les valeurs maximales pour chaque capteur qui a été chargé par la patte au fil du temps. Voici un exemple d'une patte, où j'ai utilisé Excel pour dessiner les zones que je veux "détecter". Il s'agit de cases 2 par 2 autour du capteur avec des maxima locaux, qui ensemble ont la plus grande somme.
J'ai donc fait quelques expériences et j'ai décidé de chercher simplement les maximums de chaque colonne et ligne (je ne peux pas regarder dans une seule direction à cause de la forme de la patte). Cela semble " détecter " assez bien l'emplacement des orteils séparés, mais cela marque aussi les capteurs voisins.
Quelle serait donc la meilleure façon d'indiquer à Python quels sont les maximums que je souhaite obtenir ?
Remarque : les carrés 2x2 ne peuvent pas se chevaucher, car ils doivent être des orteils séparés !
J'ai également pris 2x2 par commodité, toute solution plus avancée est la bienvenue, mais je suis simplement un scientifique du mouvement humain, donc je ne suis ni un vrai programmeur ni un mathématicien, alors s'il vous plaît, restez "simple".
Voici un qui peut être chargé avec np.loadtxt
Résultats
J'ai donc essayé la solution de @jextee (voir les résultats ci-dessous). Comme vous pouvez le voir, ça marche très bien sur les pattes avant, mais ça marche moins bien pour les pattes arrière.
Plus précisément, il ne peut pas reconnaître le petit pic qui constitue le quatrième orteil. Ceci est évidemment inhérent au fait que la boucle regarde de haut en bas vers la valeur la plus basse, sans tenir compte de l'endroit où elle se trouve.
Quelqu'un saurait-il comment modifier l'algorithme de @jextee pour qu'il soit capable de trouver le quatrième orteil ?
Comme je n'ai pas encore traité d'autres essais, je ne peux pas fournir d'autres échantillons. Mais les données que j'ai données avant étaient les moyennes de chaque patte. Ce fichier est un tableau avec les données maximales de 9 pattes dans l'ordre où elles sont entrées en contact avec la plaque.
Cette image montre comment ils ont été spatialement répartis sur la plaque.
Mise à jour :
J'ai créé un blog pour toute personne intéressée y J'ai créé un OneDrive avec toutes les mesures brutes. Donc, à tous ceux qui demandent plus de données : plus de pouvoir pour vous !
Nouvelle mise à jour :
Donc, après l'aide que j'ai reçue pour mes questions concernant détection des pattes y triage des pattes J'ai enfin pu vérifier la détection des orteils pour chaque patte ! Il s'avère que ça ne fonctionne pas si bien que ça, sauf pour les pattes de la taille de celle de mon exemple. Bien sûr, avec le recul, c'est ma propre faute pour avoir choisi le 2x2 de façon si arbitraire.
Voici un bel exemple de ce qui ne va pas : un ongle est reconnu comme un orteil et le " talon " est si large qu'il est reconnu deux fois !
La patte est trop grande, donc en prenant une taille 2x2 sans chevauchement, certains orteils sont détectés deux fois. Dans l'autre sens, chez les petits chiens, il arrive souvent que le cinquième orteil ne soit pas détecté, ce que je soupçonne d'être dû au fait que la zone 2x2 est trop grande.
Après j'essaie la solution actuelle sur toutes mes mesures Je suis arrivé à la conclusion stupéfiante que pour presque tous mes petits chiens, il n'a pas trouvé de 5e orteil et que dans plus de 50 % des impacts pour les grands chiens, il en trouverait davantage !
Il est donc clair que je dois le changer. J'ai pensé qu'il fallait changer la taille de la neighborhood
à quelque chose de plus petit pour les petits chiens et de plus grand pour les grands chiens. Mais generate_binary_structure
ne me laissait pas changer la taille du tableau.
Par conséquent, j'espère que quelqu'un d'autre a une meilleure suggestion pour situer les orteils, peut-être en faisant en sorte que la surface des orteils soit proportionnelle à la taille de la patte ?
1 votes
J'en déduis que les virgules sont des décimales et non des séparateurs de valeurs ?
1 votes
Oui, ce sont des virgules. Et @Christian, j'essaie de le coller dans un fichier facile à lire, mais même cela échoue :(
0 votes
Si quelqu'un a besoin de plus d'informations, J'ai ouvert un salon de discussion pour ça
0 votes
Je remarque juste que l'image du bas est en miroir, par rapport à l'exemple d'Excel. Stupide orientation !
0 votes
@Ivo : Quel est le but de cette analyse ? Vous dites que vous voulez identifier les sous-régions anatomiques. Est-ce pour repérer une répartition anormale de la charge ? Le positionnement relatif des coussinets ?
5 votes
Comme je fais une étude de faisabilité, tout est permis. Je cherche donc autant de façons de définir la pression, y compris les sous-régions. Je dois également être capable de distinguer le côté "gros orteil" du côté "petit orteil", afin d'estimer l'orientation. Mais comme cela n'a jamais été fait auparavant, on ne sait pas ce que nous pourrions trouver :-)
0 votes
@Daniyar : Les images sont juste des imshow() d'un tableau (sauf la première, qui est issue d'Excel). @Ron : pour l'instant, je n'ai pas encore traité d'autres mesures, mais cette mesure a en fait 9 contacts complets. Je vais les télécharger dans une seconde
3 votes
@Ron : l'un des objectifs de cette étude est de voir pour quelle taille/poids de chiens le système est adapté, donc oui, même si ce chien faisait environ 20 kg. J'en ai certains qui sont considérablement plus petits (et plus grands) et je m'attends à ne pas pouvoir faire de même pour les vrais petits.
0 votes
Duplicata partiel : stackoverflow.com/questions/1713335/
0 votes
Bonne question. Pourquoi les données liées sont-elles un tableau np 3-D au lieu de 2-D ?
3 votes
@frank les pattes sont mesurées dans le temps, d'où la 3ème dimension. Cependant, elles ne bougent pas de leur emplacement (relativement parlant) donc je suis surtout intéressé par l'emplacement des orteils en 2D. L'aspect 3D vient gratuitement après cela
1 votes
Pour moi, ce n'est pas clair si la Nouvelle mise à jour est déjà couverte dans les réponses ci-dessous !
0 votes
Veuillez préciser si ce problème a été suffisamment résolu ou non. Vous avez mentionné "la solution de Jextee", où est-elle ? Quelqu'un a changé son nom ?