Monday 8 May 2017

Difference Between Moving Average Und Low Pass Filter

Im coding etwas in dem Moment, wo Im eine Reihe von Werten im Laufe der Zeit aus einem Hardware-Kompass. Dieser Kompass ist sehr genau und Updates sehr oft, mit dem Ergebnis, dass wenn es leicht wackelt, ich am Ende mit dem ungeraden Wert, der wild unvereinbar mit seinen Nachbarn ist. Ich möchte diese Werte glätten. Nachdem ich einiges gelesen hatte, scheint es, dass was ich will, ein Hochpaßfilter, ein Tiefpaßfilter oder ein gleitender Durchschnitt ist. Gleitender Durchschnitt kann ich mit erhalten, halten Sie einfach eine Geschichte der letzten 5 Werte oder was auch immer, und verwenden Sie den Durchschnitt dieser Werte stromabwärts in meinem Code, wo ich war einmal nur mit dem jüngsten Wert. Das sollte, glaube ich, die Wackeln schön abschneiden, aber es schlägt mir, dass seine wahrscheinlich ziemlich ineffizient, und dies ist wahrscheinlich eines dieser bekannten Probleme zu Proper Programmers, denen theres eine wirklich ordentliche Clever Math-Lösung. Ich bin jedoch einer jener schrecklichen selbstprogrammierten Programmierer ohne einen Fetzen der formalen Bildung in irgendetwas sogar vage mit CompSci oder Mathe verwandt. Lesen um ein Bit deutet darauf hin, dass dies ein Hoch-oder Tiefpassfilter sein kann, aber ich kann nicht finden, was in Begriffen verständlich für einen Hack wie ich, was die Wirkung dieser Algorithmen wäre auf einer Reihe von Werten, geschweige denn wie die Mathematik Arbeitet. Die Antwort hier. Zum Beispiel, technisch beantwortet meine Frage, aber nur verständlich für diejenigen, die wahrscheinlich schon wissen, wie das Problem zu lösen. Es wäre ein sehr schöner und kluger Mensch, der die Art des Problems erklären könnte, und das, wie die Lösungen funktionieren, in Begriffen, die einem Kunstabsolventen verständlich sind. Wenn Ihr gleitender Durchschnitt muss lang sein, um die gewünschte Glättung zu erreichen, und Sie brauchen nicht wirklich eine bestimmte Form des Kernels, dann sind Sie besser dran, wenn Sie einen exponentiell verfallenden gleitenden Durchschnitt verwenden: wo Sie Wählen Sie winzig, um eine passende Konstante zu sein (zB, wenn Sie winzige 1- 1 N wählen, wird es die gleiche Menge der Mittelung wie ein Fenster der Größe N haben, aber verteilt unterschiedlich über ältere Punkte). Wie auch immer, da der nächste Wert des gleitenden Durchschnitts hängt nur von der vorherigen und Ihre Daten, müssen Sie nicht eine Warteschlange oder etwas zu halten. Und Sie können denken, dies zu tun, so etwas wie: Nun, ich habe einen neuen Punkt, aber ich dont wirklich vertrauen es, so Im werde 80 meiner alten Schätzung der Messung zu halten, und nur vertrauen diesem neuen Datenpunkt 20. Das ist So ziemlich das gleiche wie zu sagen, Nun, ich vertraue nur diesem neuen Punkt 20, und ich benutze 4 andere Punkte, die ich vertrauen die gleiche Menge, außer dass anstatt explizit nehmen die 4 anderen Punkten, youre unter der Annahme, dass die Mittelung haben Sie das letzte Mal War vernünftig, so können Sie Ihre vorherige Arbeit. Beantwortet Sep 21 10 at 14:27 Hey, ich weiß, das ist 5 Jahre zu spät, aber danke für eine großartige Antwort. Ich arbeite an einem Spiel, bei dem der Klang sich nach deiner Geschwindigkeit ändert, aber wegen des laufenden Spiels auf einem Langsamcomputer würde die Geschwindigkeit stark schwanken, was für die Lenkung gut war, aber super ärgerlich in Bezug auf den Klang. Dies war eine wirklich einfache und billige Lösung für etwas, das ich für ein wirklich komplexes Problem halten würde. Ndash Wenn Sie versuchen, den gelegentlichen ungeraden Wert zu entfernen, ist ein Tiefpassfilter die beste der drei Optionen, die Sie identifiziert haben. Tiefpaßfilter erlauben langsame Änderungen, wie die, die durch das Drehen eines Kompasses von Hand verursacht werden, während Abweisen von Hochgeschwindigkeitsänderungen, wie z. B. durch Stöße auf der Straße, verursacht werden. Ein gleitender Durchschnitt wird wahrscheinlich nicht ausreichen, da die Auswirkungen eines einzelnen Blips in Ihren Daten auf mehrere nachfolgende Werte wirken, abhängig von der Größe des gleitenden Durchschnittsfensters. Wenn die ungeraden Werte leicht erkannt werden, können Sie sogar mit einem Glitch-Entfer - nal-Algorithmus besser abschneiden, der sie komplett ignoriert: Hier ist ein Guick-Graphen zu veranschaulichen: Der erste Graphen ist das Eingangssignal mit einem unangenehmen Glitch. Die zweite Grafik zeigt die Wirkung eines 10-stelligen Gleitmittels. Der endgültige Graph ist eine Kombination aus dem 10-Sample-Mittelwert und dem einfachen Glitch-Detektionsalgorithmus, der oben gezeigt ist. Wenn der Glitch detektiert wird, wird anstelle des tatsächlichen Wertes der 10-Sample-Mittelwert verwendet. Beantwortet Sep 21 10 am 13:38 Schön erklärt und Bonuspunkte für die Grafik) ndash Henry Cooke Sep 22 10 at 0:50 Wow. Seldomly sah so eine schöne Antwort ndash Muis Jun 4 13 at 9:14 Der gleitende Durchschnitt ist ein Tiefpassfilter. Ndash nomen Okt 21 13 am 19:36 Versuchen Sie einen laufenden Streaming-Median statt. Ndash kert Apr 25 14 am 22:09 Gleitender Durchschnitt kann ich unten erhalten. Aber es scheint mir, dass seine wahrscheinlich ziemlich ineffizient. Theres wirklich kein Grund ein gleitender Durchschnitt sollte ineffizient sein. Sie halten die Anzahl der Datenpunkte, die Sie in einem Puffer (wie eine zirkuläre Warteschlange) wollen. An jedem neuen Datenpunkt pflücken Sie den ältesten Wert und subtrahieren ihn von einer Summe, und drücken Sie den neuesten und fügen Sie ihn der Summe hinzu. Jeder neue Datenpunkt beinhaltet also nur einen Pop-Push, eine Addition und eine Subtraktion. Ihr gleitender Durchschnitt ist immer diese Verschiebungssumme geteilt durch die Anzahl der Werte in Ihrem Puffer. Es wird ein wenig trickiger, wenn youre Empfangen von Daten gleichzeitig von mehreren Threads, aber da Ihre Daten von einem Hardware-Gerät, das scheint höchst zweifelhaft zu mir kommt. Oh und auch: schreckliche Selbst-gelehrte Programmierer vereinen) Der gleitende Durchschnitt schien mir ineffizient, weil Sie einen Puffer von Werten speichern müssen - besser, nur einige Clever Maths mit Ihrem Eingabewert und aktuellen Arbeitswert zu tun Ich denke, dass ist wie exponentiell gleitenden Durchschnitt Arbeitet. Eine Optimierung, die ich für diese Art von gleitendem Durchschnitt gesehen habe, beinhaltet die Verwendung eines Fixlängen-Warteschlangen-Amps, einen Zeiger auf die Stelle, an der Sie sich in dieser Warteschlange befinden, und einfach den Zeiger um (mit oder wenn). Voila Kein teurer Push Pop. Power für die Amateure, Bruder ndash Henry Cooke Henry: Für einen geraden-gleitenden Durchschnitt brauchst du den Puffer einfach so, dass du weißt, welcher Wert geknallt wird, wenn der nächste Wert gedrückt wird. Das heißt, die quotfixed-Länge Warteschlange amp eine pointerquot Sie beschreiben ist genau das, was ich durch quotcircular queue. quot Bedeutet, warum ich sage, es ist nicht ineffizient. Was meinst du, ich meinte, Und wenn Ihre Antwort ist quotan Array, das seine Werte zurück verschiebt sich auf jedem indexierten removalquot (wie std :: vector in C). Also, I39m so weh ich don39t sogar wollen, um mit Ihnen zu sprechen) ndash Dan Tao 22 September at 1:58 Henry: Ich don39t wissen über AS3, aber ein Java-Programmierer bekam Sammlungen wie CircularQueue zu seiner Verfügung (I39m nicht Ein Java-Entwickler so I39m sicher, es gibt bessere Beispiele da draußen that39s genau das, was ich aus einer schnellen Google-Suche gefunden), die genau die Funktionalität implementiert, die wir reden. I39m ziemlich zuversichtlich, die Mehrheit der mittleren und niedrigen Sprachen mit Standard-Bibliotheken haben etwas ähnliches (z. B. in. NET there39s QueueltTgt). Jedenfalls war ich selbst Philosophie. alles ist vergeben. Ndash Dan Tao Ein exponentiell abnehmender gleitender Durchschnitt kann von Hand mit nur dem Trend berechnet werden, wenn Sie die richtigen Werte verwenden. Siehe fourmilab. ch hackdiet e4 für eine Idee, wie dies schnell mit einem Stift und Papier, wenn Sie für exponentiell geglättet gleitenden Durchschnitt mit 10 Glättung suchen. Aber da Sie einen Computer haben, möchten Sie wahrscheinlich binäre Verschiebung im Gegensatz zur Dezimalverschiebung tun) Auf diese Weise brauchen Sie nur eine Variable für Ihren aktuellen Wert und einen für den Durchschnitt. Daraus kann dann der nächste Mittelwert berechnet werden. Beantwortet eine Technik namens Bereichstor, die gut funktioniert mit Low-Vorkommen falschen Proben. Unter der Annahme einer der oben erwähnten Filtertechniken (gleitender Durchschnitt, exponentiell), sobald Sie über ausreichende Historie verfügen (eine Zeitkonstante), können Sie die neue, eingehende Datenprobe für die Angemessenheit testen, bevor sie zur Berechnung hinzugefügt wird. Ist ein gewisses Wissen über die maximale vernünftige Änderungsrate des Signals erforderlich. Wird die Rohprobe mit dem letzten geglätteten Wert verglichen, und wenn der absolute Wert dieser Differenz größer als der zulässige Bereich ist, wird diese Probe herausgeworfen (oder durch eine Heuristik ersetzt, zB eine Vorhersage basierend auf der Steigungsdifferenz oder dem Trend Vorhersagewert aus doppelter exponentieller Glättung) Geprüft am 30. April um 6: 56Median Filter Gemeinsame Namen: Median-Filterung, Rangfilterung Kurzbeschreibung Der Medianfilter wird normalerweise verwendet, um Rauschen in einem Bild zu reduzieren, etwas wie das mittlere Filter. Allerdings ist es oft ein besserer Job als der mittlere Filter der Erhaltung nützlichen Details in das Bild. Wie es funktioniert Wie der mittlere Filter. Betrachtet der Medianfilter jedes Pixel in dem Bild nacheinander und betrachtet seine benachbarten Nachbarn, um zu entscheiden, ob es für seine Umgebung repräsentativ ist oder nicht. Anstatt einfach den Pixelwert durch den Mittelwert der benachbarten Pixelwerte zu ersetzen, ersetzt er ihn durch den Median dieser Werte. Der Median wird berechnet, indem zuerst alle Pixelwerte aus der umgebenden Nachbarschaft in numerische Reihenfolge sortiert werden und dann das mit dem mittleren Pixelwert betrachtete Pixel ersetzt wird. (Wenn die betrachtete Nachbarschaft eine gerade Anzahl von Pixeln enthält, wird der Mittelwert der beiden mittleren Pixelwerte verwendet.) Fig. 1 zeigt eine beispielhafte Berechnung. Abbildung 1 Berechnung des Medianwerts einer Pixel-Nachbarschaft. Wie ersichtlich, ist der mittlere Pixelwert von 150 eher unrepräsentativ für die umgebenden Pixel und wird durch den Medianwert 124 ersetzt. Eine 32153 quadratische Nachbarschaft wird hier verwendet - größere Nachbarschaften erzeugen eine stärkere Glättung. Richtlinien zur Verwendung Durch die Berechnung des Medianwertes einer Nachbarschaft und nicht des mittleren Filters. Hat der Medianfilter zwei Hauptvorteile gegenüber dem Mittelfilter: Der Median ist ein robusterer Durchschnitt als der Mittelwert, und so wird ein einziges sehr nicht repräsentatives Pixel in einer Nachbarschaft den Medianwert nicht signifikant beeinflussen. Da der Medianwert tatsächlich der Wert eines der Pixel in der Nachbarschaft sein muss, erzeugt der Medianfilter keine neuen unrealistischen Pixelwerte, wenn der Filter eine Kante überspannt. Aus diesem Grund ist der Medianfilter viel besser, um scharfe Kanten zu erhalten als der mittlere Filter. Zeigt ein Bild, das durch das Gaußsche Rauschen mit dem Mittelwert 0 und der Standardabweichung () 8 verfälscht wurde. Das Originalbild dient zum Vergleich. Das Anwenden eines 32153-Medianfilters erzeugt, wie das Rauschen auf Kosten einer leichten Verschlechterung der Bildqualität reduziert wurde. Das Bild wurde durch noch mehr Rauschen (Gaußsches Rauschen mit mittlerem 0 und 13) verdorben und ist das Ergebnis einer 32153 Medianfilterung. Der Medianfilter ist manchmal nicht so subjektiv gut im Umgang mit großen Mengen an Gaußschen Rauschen als dem mittleren Filter. Wo mediane Filterung wirklich in ihre eigenen kommt, ist, wenn das Rauschen extreme Ausreißer Pixelwerte erzeugt, wie zum Beispiel, in denen wurde mit Salz und Pfeffer Rauschen beschädigt. D. h. die Bits wurden mit der Wahrscheinlichkeit 1 umgedreht. Das Median-Filtern dieses mit einer 32153-Nachbarschaft erzeugt, wobei das Rauschen vollständig mit fast keiner Beeinträchtigung des darunter liegenden Bildes eliminiert wurde. Vergleichen Sie dies mit dem ähnlichen Test auf dem mittleren Filter. Betrachten wir ein anderes Beispiel, bei dem das Originalbild mit höheren Pegeln (dh p & sub5 ;, die ein Bit umgedreht wird) von Salz - und Pfeffergeräusch verfälscht worden ist. Nach dem Glätten mit einem 32153-Filter wurde der Großteil des Rauschens eliminiert Größerer Medianfilter, z 72157, verschwinden alle verrauschten Pixel, wie in der Abbildung gezeigt. Beachten Sie, dass das Bild ein wenig fleckig aussieht, da Graustufenbereiche zusammen abgebildet werden. Alternativ können wir einen 32153 Medianfilter über das Bild dreimal passieren, um das gesamte Rauschen mit weniger Detailverlust zu entfernen. Im Allgemeinen ermöglicht der Medianfilter, dass sehr viel hochfrequentes Detail zu passieren bleibt, während es sehr effektiv beim Entfernen von Rauschen bleibt Auf Bildern, bei denen weniger als die Hälfte der Pixel in einer Glättungsnachbarschaft bewirkt worden sind. (Infolgedessen kann die Medianfilterung weniger effektiv beim Entfernen von Rauschen aus Bildern sein, die mit Gaußschen Rauschen verfälscht werden.) Eines der Hauptprobleme mit dem Medianfilter besteht darin, dass es relativ teuer und komplex zu berechnen ist. Um den Median zu finden, ist es notwendig, alle Werte in der Nachbarschaft in numerische Reihenfolge zu sortieren, und das ist auch bei schnellen Sortieralgorithmen wie Quicksort relativ langsam. Der grundlegende Algorithmus kann jedoch etwas für die Geschwindigkeit erhöht werden. Eine übliche Technik ist, zu bemerken, dass, wenn das Nachbarschaftsfenster über das Bild geschoben wird, viele der Pixel in dem Fenster die gleichen sind, von einem Schritt zum nächsten, und die relative Anordnung dieser untereinander wird sich offensichtlich nicht geändert haben. Clever Algorithmen nutzen dies, um die Leistung zu verbessern. Interaktive Experimente Sie können interaktiv mit diesem Operator experimentieren, indem Sie hier klicken. Erkunden Sie den Effekt der Medianfilterung mit verschiedenen Nachbarschaftsgrößen. Vergleichen Sie die relative Geschwindigkeit der mittleren und mittleren Filter mit der gleichen Größe Nachbarschaft und Bild. Wie funktioniert die Leistung der einzelnen Skala mit Größe des Bildes und Größe der Nachbarschaft Im Gegensatz zu den mittleren Filter. Der Medianfilter ist nicht linear. Dies bedeutet, dass für zwei Bilder A (x) und B (x). Veranschaulichen Sie dies, indem Sie Glättung und Pixelzugabe (in der Reihenfolge, die auf jeder Seite der obigen Gleichung angegeben wird) zu einem Satz von Testbildern durchführt. Führen Sie dieses Experiment auf einigen einfachen Bildern durch, z. B. Referenzen R. Boyle und R. Thomas Computer Vision: Ein erster Kurs. Blackwell Scientific Publications, 1988, S. 32 - 34. E. Davies Machine Vision: Theorie, Algorithmen und Praktiken. Academic Press, 1990, Kap. 3. A. Marion Eine Einführung in die Bildverarbeitung. Chapman und Hall, 1991, S. 274. D. Vernon Machine Vision. Prentice-Halle, 1991, Kap. 4. Lokale Informationen Spezielle Informationen zu diesem Operator finden Sie hier. Weitere allgemeine Hinweise zur lokalen HIPR-Installation finden Sie im Einleitungsbereich Lokale Informationen.


No comments:

Post a Comment