Wednesday, 18 January 2017

Python Moyenne Mobile Image

Nous avons déjà présenté comment créer des moyennes mobiles en utilisant python. Ce tutoriel sera une suite de ce sujet. Une moyenne mobile dans le contexte de la statistique, également appelée moyenne de roulement, est un type de réponse impulsionnelle finie. Dans notre tutoriel précédent, nous avons tracé les valeurs des matrices x et y: Let8217s tracent x contre la moyenne mobile de y que nous appellerons yMA: Tout d'abord, let8217s égaliser la longueur des deux arrays: Et de le montrer dans le contexte: Graph: Pour aider à comprendre cela, let8217s tracer deux relations différentes: x vs y et x vs MAy: La moyenne mobile est ici le parcours vert qui commence à 3: Share this: Like this: Navigation de poste Laisser un commentaire Annuler la réponse Très utile I Voudrais lire la dernière partie sur les grands ensembles de données Espérons qu'il viendra bientôt8230 d bloggers comme ceci: Disons que j'ai une liste: Je veux créer une fonction qui calcule la moyenne mobile de n-jour. Donc si n était 5, je voudrais que mon code pour calculer le premier 1-5, l'ajouter et de trouver la moyenne, ce qui serait de 3,0, puis passer à 2-6, calculer la moyenne, ce qui serait 4,0, puis 3 -7, 4-8, 5-9, 6-10. Je ne veux pas calculer les premiers n-1 jours, donc à partir du jour nth, itll compter les jours précédents. Cela semble imprimer ce que je veux: Cependant, je ne sais pas comment calculer les nombres à l'intérieur de ces listes. Alors que j'aime la réponse Martijns sur ce, comme George, je me demandais si ce ne serait pas plus rapide en utilisant une somme courante au lieu d'appliquer la somme () maintes et maintes fois sur la plupart des mêmes numéros . L'idée d'avoir des valeurs None pendant la phase de montée en puissance est également intéressante. En fait, il peut y avoir beaucoup de scénarios différents, on pourrait concevoir pour les moyennes mobiles. Nous divisons le calcul des moyennes en trois phases: Ramp Up: Démarrage des itérations où l'itération actuelle compte lt taille de la fenêtre Progression régulière: Nous avons exactement la taille de la fenêtre nombre d'éléments disponibles pour calculer une moyenne normale: sum (xiterationcounter-windowsize: iterationcounter) Ramp Down: A la fin des données d 'entrée, nous pourrions retourner un autre nombre de fenêtres - 1 moyenne. Taille des fenêtres arbitraires 1 Paramètres pour commuter la production de valeurs pendant les phases pour les fonctions Ramp UpDown Callback pour ces phases afin de contrôler comment les valeurs sont produites. Cela peut être utilisé pour fournir constamment un défaut (par exemple Aucun) ou pour fournir des moyennes partielles Il semble être un peu plus rapide que la version Martijns - qui est beaucoup plus élégant, cependant. Heres le code d'essai: La question originale peut maintenant être résolue avec cette fonction call: Répondue févr. 18 13 à 18h15 Utilisez les fonctions somme et carte. La fonction de la carte dans Python 3 est fondamentalement une version paresseuse de ceci: Im sûr que vous pouvez deviner ce que la fonction de somme fait. Une approche qui évite recomputer des sommes intermédiaires .. make that runs (int (v)). puis. Repr (runsumlistk - runsumlistk-5) 5) si vous fourrez de porter autour des nombres une chaîne .. Alt sans le global: assurez-vous de faire des maths flottants même si vous les valeurs d'entrée sont des nombres entiers répondu Sum algorithme est plus rapide. J'ai posté une réponse pour prouver votre point. Il n'y a tout simplement pas besoin d'une variable globale ici. Ndash cfi Feb 18 13 at 18:16 droit que vous êtes, j'ai essayé trop dur à aviod un explicite pour la boucle. Ndash agentp Feb 19 13 at 18:37 Il ya une autre solution d'extension d'une recette itertools par paire (). Vous pouvez étendre cela à nwise (). Qui vous donne la fenêtre coulissante (et fonctionne si l'iterable est un générateur): Bien qu'un coût d'installation relativement élevé pour les iterables courtes s ce coût réduit en impact plus longtemps l'ensemble de données. Cela utilise sum () mais le code est raisonnablement élégant: a répondu Nov 26 16 à 14: 59Hi, cela va être un article très simple, mais vous le trouverez très utile. Il s'agit d'extraction de fond d'une vidéo. Supposons que vous êtes donné vidéo de la quantité de métrages de la circulation, peut-être quelque chose comme ça. Circulation en Inde. Et on vous demande de trouver un fond approximatif. Ou quoi que ce soit comme ça. L'extraction d'arrière-plan est importante dans le suivi des objets. Si vous avez déjà une image du fond nu, alors il est simple. Mais dans de nombreux cas, vous n'aurez pas une telle image et ainsi, vous devrez en créer un. C'est là que Running Average est pratique. (J'ai pensé à cela quand un gars a posé une question dans SOF. Lien) La fonction que nous utilisons ici pour trouver Running Average est cv2.accumulateWeighted (). Par exemple, si nous regardons une vidéo, nous continuons à alimenter chaque image pour cette fonction, et la fonction continue à trouver les moyennes de tous les cadres alimentés en fonction de la relation ci-dessous: src n'est rien d'autre que notre image source. Il peut être en niveaux de gris ou en couleur et 8 bits ou 32 bits en virgule flottante. Dst est l'image de sortie ou d'accumulateur avec les mêmes canaux que celle de l'image source, et elle est soit 32 bits soit 64 bits en virgule flottante. En outre, nous devrions le déclarer d'abord à une valeur qui sera prise comme valeur initiale. Alpha est le poids de l'image d'entrée. Selon Docs, alpha régule la vitesse de mise à jour (la rapidité de l'accumulateur 8220forgets8221 sur les images antérieures). En mots simples, si alpha est une valeur plus élevée, l'image moyenne essaie d'attraper même des changements très rapides et courts dans les données. Si elle est inférieure, la moyenne devient lent et il ne sera pas envisager de changements rapides dans les images d'entrée. Je vais l'expliquer un peu avec l'aide d'images à la fin de l'article. Dans le code ci-dessus, j'ai mis deux moyennes, une avec une valeur alpha plus élevée et une autre avec une valeur alpha inférieure afin que vous puissiez comprendre l'effet de l'alpha. Au début, les deux sont définis sur le cadre initial de la capture. Et en boucle, ils sont mis à jour. Vous pouvez voir quelques résultats dans le lien SOF que j'ai déjà fourni. (Je fournis ces résultats ici, vous pouvez vérifier le code et la valeur alpha là): J'ai utilisé ma webcam et sauvegardé le cadre d'origine et la moyenne courante à un instant particulier. C'est un cadre d'une vidéo de trafic typique prise par une caméra stationnaire. Comme vous pouvez le voir, une voiture va sur la route, et la personne essaie de traverser la route à un instant particulier de temps. Mais voyez la moyenne courante à ce moment-là. Il n'y a pas de personne et de voiture dans cette image (en fait il est là, regardez de près, alors vous le verrez, et la personne est plus claire que la voiture, car la voiture se déplace très vite et à travers l'image, elle n'a pas beaucoup Effet en moyenne, mais la personne est là depuis longtemps, puisqu'il est lent et en mouvement à travers la route.) Maintenant, nous devons voir l'effet de l'alpha sur ces images.


No comments:

Post a Comment