Monday 22 May 2017

Python Moving Average Image


Lets sagen, ich habe eine Liste: Ich möchte eine Funktion, die die bewegte n-Tage-Durchschnitt berechnet zu erstellen. Also, wenn n 5 war, würde ich wollen, dass mein Code die ersten 1-5 zu berechnen, fügen Sie es und finden Sie den Durchschnitt, was wäre 3.0, dann auf 2-6 gehen, berechnen Sie den Durchschnitt, die 4,0 werden würde, dann 3 -7, 4-8, 5-9, 6-10. Ich möchte nicht die ersten n-1 Tage zu berechnen, so ab dem n-Tag, es zählen die letzten Tage. Dies scheint zu drucken, was ich will: Aber ich weiß nicht, wie die Zahlen in diesen Listen zu berechnen. Irgendwelche Ideen gefragt Martijns Antwort auf diesem, wie george, Ich frage mich, ob dies nicht schneller wäre, indem eine laufende Summierung anstelle der Anwendung der Summe () immer und immer wieder auf die meisten die gleichen Zahlen . Auch die Idee, während der Hochlaufphase keine Werte als Vorgabe zu haben, ist interessant. In der Tat kann es viele verschiedene Szenarien, die man für bewegte Durchschnitte konzipieren kann. Wir können die Berechnung der Mittelwerte in drei Phasen aufteilen: Ramp Up: Starten von Iterationen, bei denen die aktuelle Iteration lt-Fenstergröße anzeigt Steady Progress: Wir haben genau die Fenstergröße Anzahl der verfügbaren Elemente, um einen normalen Durchschnitt zu berechnen: sum (xiterationcounter-windowsize: iterationcounter) windowsize Ramp Down: Am Ende der Eingabedaten könnten wir wieder eine andere Fenstergröße - 1 durchschnittliche Anzahl - zurückgeben. Heres eine Funktion, die Arbitrary iterables akzeptiert (Generatoren sind fein) als Eingabe für Daten Beliebige Fenstergrößen 1 Parameter zum Einschalten der Produktion von Werten während der Phasen für Ramp UpDown Callback-Funktionen für jene Phasen, um zu steuern, wie Werte erzeugt werden. Dies kann verwendet werden, um ständig eine Vorgabe (z. B. keine) vorzusehen oder Teildurchschnitte bereitzustellen. Es scheint ein bisschen schneller als Martijns-Version zu sein, was jedoch viel eleganter ist. Heres der Test-Code: Die ursprüngliche Frage kann nun mit dieser Funktion Aufruf gelöst werden: beantwortet Feb 18 13 at 18:15 Verwenden Sie die Summe und Karte Funktionen. Die Map-Funktion in Python 3 ist im Grunde eine faulen Version von diesem: Im sicher können Sie erraten, was die Summe-Funktion. Antwort # 2 am: April 23, 2011, 07:10:27 pm »Ein Ansatz, der vermeidet Zwischensummen Zwischensummen .. make, die läuft (int (v)). dann. (5) Wenn Sie Ameisen tragen um Zahlen ein Strings .. Alt ohne die globale: sicher sein, schwimmende Mathematik zu tun, auch wenn Sie Werte eingegeben werden ganze Zahlen beantwortet Summenalgorithmus schneller ist. Ich habe eine Antwort, die Ihren Standpunkt. Es gibt einfach keine Notwendigkeit für eine globale Variable hier. Ich habe versucht zu schwer zu aviod eine explizite for-Schleife. Ndash agentp Es gibt eine andere Lösung, die ein itertools Rezept paarweise () erweitert. Sie können dies auf nwise () erweitern. Die Ihnen das Schiebefenster (und arbeitet, wenn das iterable ist ein Generator): Während eine relativ hohe Setup-Kosten für kurze iterable s diese Kosten verringert in Auswirkungen, je länger der Datensatz. Dies nutzt Summe (), aber der Code ist einigermaßen elegant: beantwortet 26 November, um 14: 59Hi, wird dies ein sehr einfacher Artikel, aber Sie werden es sehr hilfreich finden. Es geht um Hintergrund-Extraktion aus einem Video. Angenommen, Sie sind Video von Footage von Verkehr gegeben, kann eine Sache wie diese sein. Verkehr in Indien. Und Sie werden gebeten, einen ungefähren Hintergrund zu finden. Oder so etwas. Hintergrund-Extraktion kommt wichtig in der Objektverfolgung. Wenn Sie bereits ein Bild von der nackten Hintergrund, dann ist es einfach. Aber in vielen Fällen haben Sie nicht ein solches Bild und so, müssen Sie eine zu erstellen. Das ist, wo Running Average kommt praktisch. (Ich dachte darüber nach, wenn ein Mann eine Frage in SOF gefragt hat.) Die Funktion, die wir hier verwenden, um Running Average zu finden, ist cv2.accumulateWeighted (). Wenn wir z. B. ein Video anschauen, halten wir jedes Einzelbild an diese Funktion weiter, und die Funktion hält die Mittelwerte aller Frames, die ihr nach der folgenden Beziehung zugeführt werden, fest: src ist nichts anderes als unser Quellbild. Es kann Graustufen - oder Farbbild und entweder 8-Bit - oder 32-Bit-Gleitkomma sein. Dst ist das Ausgabe - oder Akkumulatorbild mit denselben Kanälen wie das Quellbild und es ist entweder ein 32-Bit - oder ein 64-Bit-Gleitpunkt. Auch sollten wir es zuerst auf einen Wert deklarieren, der als Anfangswert genommen wird. Alpha ist das Gewicht des eingegebenen Bildes. Laut Docs regelt alpha die Aktualisierungsgeschwindigkeit (wie schnell der Akkumulator 8220forgets8221 um frühere Bilder handelt). In einfachen Worten, wenn Alpha ein höherer Wert ist, versucht das durchschnittliche Bild auch sehr schnelle und kurze Änderungen in den Daten zu erfassen. Wenn es niedriger Wert ist, wird der Durchschnitt träge und es wird nicht betrachten schnelle Änderungen in den Eingabebildern. Ich werde es ein wenig mit Hilfe von Bildern am Ende des Artikels erklären. In oben Code habe ich zwei Mittelwerte gesetzt, eine mit höheren Alpha-Wert und eine andere mit niedrigeren Alpha-Wert, so können Sie verstehen, Wirkung von Alpha. Zuerst werden beide auf den Anfangsrahmen des Captures gesetzt. Und in Schleife erhalten sie aktualisiert. Sie können einige Resultate in der SOF Verbindung sehen, die ich bereits zur Verfügung stellte. (Ich habe die Ergebnisse hier, können Sie den Code und Alpha-Wert dort): Ich habe meine Webcam und gespeichert Original-Frame und laufenden Durchschnitt zu einem bestimmten Zeitpunkt. Dieses ist ein Rahmen von einem typischen Verkehrsvideo, das von einer stationären Kamera genommen wird. Wie Sie sehen können, geht ein Auto auf die Straße, und die Person versucht, die Straße zu einem bestimmten Zeitpunkt zu überqueren. Aber sehen Sie den laufenden Durchschnitt zu diesem Zeitpunkt. Es gibt keine Person und Auto in diesem Bild (Eigentlich ist es da, haben einen engen Blick, dann werden Sie es sehen, und die Person ist klarer als Auto, da Auto bewegt sich sehr schnell und über das Bild, es hat nicht viel Effekt auf den Durchschnitt, aber Person ist es für eine lange Zeit, da er langsam und bewegt sich über die Straße.) Nun müssen wir sehen, die Wirkung von Alpha auf diese images. Our ersten Schritt ist es, ein Diagramm mit den Mittelwerten von zwei Diagramm Arrays. Let8217s erstellen zwei Arrays x und y und zeichnen sie. X wird 1 bis 10 sein. Und y haben die gleichen Elemente in einer zufälligen Reihenfolge. Dies wird uns helfen zu überprüfen, dass tatsächlich unser Durchschnitt korrekt ist. Let8217s berechnen die Ordnung unserer Elemente in y noch einmal und zeichnen sich wieder: In Bezug auf y sehen wir, wie sich der gleitende Durchschnitt verhält: Im nächsten Tutorial werden wir die gleitenden Mittelwerte darstellen. Teilen Sie diese: Like this: Post navigation Lassen Sie eine Antwort Antworten abbrechen d bloggers like this:

No comments:

Post a Comment