Monday 10 April 2017

Umzug Durchschnitt Opencv

Hallo, das wird ein sehr einfacher Artikel zu sein, aber du wirst es sehr hilfreich finden Es geht um Hintergrund-Extraktion aus einem Video. Suppose du bekommst Video von Footage von Verkehr, kann etwas wie dieser Verkehr in Indien und du bist Gefragt, um einen ungefähre Hintergrund zu finden Oder irgendetwas wie das. Background Extraktion kommt wichtig in Objekt-Tracking Wenn Sie bereits ein Bild von der nackten Hintergrund, dann ist es einfach Aber in vielen Fällen haben Sie gewonnen haben ein solches Bild und so werden Sie Muss man schaffen Das ist, wo Running Average kommt praktisch. Ich dachte darüber nach, wenn ein Kerl fragte eine Frage in SOF Link. Die Funktion, die wir hier verwenden, um Running Average zu finden ist Zum Beispiel, wenn wir ein Video anschauen, halten wir füttern jeden Frame auf diese Funktion, und die Funktion halten die Mittelwerte zu finden Von allen Frames, die ihm nach der Beziehung unten zugeführt werden. src ist nichts als unser Quellbild Es kann Graustufen oder Farbbild und entweder 8-Bit oder 32-Bit-Floating-Point. dst ist das Ausgabe - oder Akkumulatorbild mit den gleichen Kanälen wie das Des Quellbildes, und es ist entweder 32-Bit - oder 64-Bit-Gleitkomma Auch sollten wir es zuerst auf einen Wert deklarieren, der als Anfangswert genommen wird. Alpha ist das Gewicht des Eingangsbildes Nach Docs regelt alpha die Aktualisierungsgeschwindigkeit, wie schnell der Akkumulator über frühere Bilder vergisst In einfachen Wörtern, wenn Alpha ein höherer Wert ist, versucht das durchschnittliche Bild sogar sehr schnelle und kurze Änderungen in den Daten zu fangen Wenn es niedriger Wert ist, wird der Durchschnitt träge und es gewann, Änderungen in den Eingabebildern erkläre ich es ein bisschen mit Hilfe von Bildern am Ende des Artikels. Im obigen Code habe ich zwei Durchschnitte gesetzt, eine mit höherem Alpha-Wert und eine andere mit niedrigerem Alpha-Wert, so dass du den Effekt von Alpha verstehen kannst Zuerst werden beide auf den ersten Rahmen des Captures gesetzt. Und in der Schleife werden sie aktualisiert. Sie ​​können einige Ergebnisse in der SOF-Link sehen, die ich bereits zur Verfügung stellte ich diese Ergebnisse hier, können Sie den Code und Alpha-Wert dort überprüfen. Ich habe meine Webcam Und gespeichert Original-Frame und läuft Durchschnitt zu einem bestimmten Zeitpunkt. Dies ist ein Rahmen aus einem typischen Verkehrs-Video von einer stationären Kamera genommen Wie Sie sehen können, ist ein Auto auf der Straße, und die Person versucht, die Straße zu überqueren Besonderer Augenblick der Zeit. Aber sehen Sie den laufenden Durchschnitt zu diesem Zeitpunkt Es gibt keine Person und Auto in diesem Bild Eigentlich ist es dort, haben einen genauen Blick, dann werden Sie es sehen, und die Person ist klarer als Auto, da Auto ist Bewegt sich sehr schnell und über das Bild, es hat nicht viel Wirkung im Durchschnitt, aber die Person ist dort für eine lange Zeit, da er langsam ist und sich über die Straße. Jetzt müssen wir die Wirkung von Alpha auf diese Bilder sehen. Smoothing Bilder. Die Erklärung unten gehört zu dem Buch Computer Vision Algorithmen und Anwendungen von Richard Szeliski und zu LearningOpenCV. Smoothing auch genannt verwischt ist eine einfache und häufig verwendete Bildverarbeitung Operation. Es gibt viele Gründe für die Glättung In diesem Tutorial werden wir auf Glättung in Ordnung konzentrieren Um Rauschen zu reduzieren, werden andere Verwendungen in den folgenden Tutorials gesehen. Um einen Glättungsvorgang durchzuführen, werden wir einen Filter auf unser Bild anwenden. Die häufigste Art von Filtern sind linear, in denen ein Ausgangspixel s-Wert dh als gewichtete Summe der Eingabe bestimmt wird Pixel-Werte i e. is heißt der Kernel, der nichts weiter als die Koeffizienten des Filters ist. Es hilft, einen Filter als ein Fenster von Koeffizienten zu visualisieren, die über das Bild gleiten. Es gibt viele Arten von Filtern, hier werden wir die am meisten verwendeten erwähnen. Normalized Box Filter. Dieser Filter ist der einfachste von allen Jeder Ausgang Pixel ist der Mittelwert seiner Kernel Nachbarn alle von ihnen mit gleichen Gewichten beitragen. Der Kern ist unten. Gaussian Filter. Wahrscheinlich die nützlichste Filter, obwohl nicht die schnellste Gaußsche Filterung ist Getan, indem sie jeden Punkt im Eingabe-Array mit einem Gaußschen Kernel füllt und dann alle summiert, um das Ausgabe-Array zu erzeugen. Um das Bild klarer zu machen, erinnerst du dich, wie ein 1D-Gauß-Kernel aussieht. Wenn man sagt, dass ein Bild 1D ist, kannst du es merken Dass das in der Mitte liegende Pixel das größte Gewicht hat. Das Gewicht seiner Nachbarn nimmt ab, da der räumliche Abstand zwischen ihnen und dem Mittelpixel zunimmt. Erinnere dich daran, dass ein 2D-Gaussian dargestellt werden kann, wo der Mittelwert der Peak ist und die Varianz darstellt Pro jedem der Variablen und. Median Filter. Der Median-Filter durchlaufen jedes Element des Signals in diesem Fall das Bild und ersetzen jedes Pixel mit dem Median seiner benachbarten Pixel in einer quadratischen Nachbarschaft um die ausgewertete Pixel. Bilateral Filter. So Weit haben wir einige Filter erklärt, deren Hauptziel es ist, ein Eingabebild zu glätten. Allerdings lösen die Filter nicht nur das Rauschen auf, sondern auch die Kanten weg. Um dies in gewissem Ausmaß zumindest zu vermeiden, können wir einen bilateralen Filter verwenden. In analoger Weise wie der Gaußsche Filter berücksichtigt der bilaterale Filter auch die benachbarten Pixel mit Gewichten, die jedem von ihnen zugeordnet sind. Diese Gewichte haben zwei Komponenten, wobei die erste davon die gleiche Gewichtung ist, die vom Gaußschen Filter verwendet wird. Die zweite Komponente berücksichtigt die Unterschied in der Intensität zwischen den benachbarten Pixeln und die ausgewertete. Für eine ausführlichere Erklärung können Sie diesen Link überprüfen. Was macht dieses Programm do. Loads ein Bild. Applies 4 verschiedene Arten von Filtern in Theorie erklärt und zeigen die gefilterten Bilder sequentially. I Wissen, das ist erreichbar mit Boost wie pro. But ich wirklich gerne vermeiden, Boost Ich habe gegoogelt und nicht gefunden, keine geeigneten oder lesbaren Beispiele. Basically Ich möchte den gleitenden Durchschnitt eines laufenden Stream von einem Strom von Gleitkommazahlen mit zu verfolgen Die jüngsten 1000 Zahlen als Datenbeispiel. Was ist der einfachste Weg, dies zu erreichen. Ich experimentierte mit der Verwendung eines kreisförmigen Arrays, exponentiell gleitenden Durchschnitt und ein einfacher gleitender Durchschnitt und festgestellt, dass die Ergebnisse aus dem kreisförmigen Array meine Bedürfnisse am besten passt. Fragte am 12. Juni 12 bei 4 38.Wenn Ihre Bedürfnisse einfach sind, können Sie einfach versuchen, einen exponentiellen gleitenden Durchschnitt zu verwenden. Einfach nur, Sie machen eine Akku-Variable, und wie Ihr Code bei jedem Sample sieht, aktualisiert der Code den Akkumulator mit dem neuen Wert Du wählst eine konstante Alpha, die zwischen 0 und 1 ist, und berechnen dies. Sie müssen nur einen Wert von Alpha finden, wo die Wirkung einer bestimmten Probe nur für etwa 1000 Proben dauert. Hmm, ich bin nicht wirklich sicher, dass dies geeignet ist Für dich, jetzt, wo ich es hier anhabe Das Problem ist, dass 1000 ein ziemlich langes Fenster für einen exponentiellen gleitenden Durchschnitt ist Ich bin mir nicht sicher, dass es ein Alpha gibt, das den Durchschnitt über die letzten 1000 Zahlen verbreiten würde, ohne Unterlauf im Gleitkomma Berechnung Aber wenn du einen kleineren Durchschnitt wünschst, wie 30 Zahlen oder so, das ist eine sehr einfache und schnelle Art und Weise zu tun it. answered Jun 12 12 bei 4 44. 1 auf deinem Post Der exponentielle gleitende Durchschnitt kann das Alpha variabel sein So erlaubt es, die Zeitbasis-Mittelwerte zB Bytes pro Sekunde zu berechnen Wenn die Zeit seit dem letzten Akkumulator-Update mehr als 1 Sekunde ist, lassen Sie alpha 1 1 sein. Andernfalls können Sie alpha be usecs seit letzter Aktualisierung 1000000 jxh Jun 12 verwenden 12 at 6 21.Basically Ich möchte den gleitenden Durchschnitt eines laufenden Streams von einem Strom von Gleitkommazahlen mit den neuesten 1000 Zahlen als Datenbeispiel verfolgen. Hinweis, dass die unten die Gesamtsumme als Elemente als hinzugefügt ersetzt ersetzt, vermeidet kostspielig ON Traversal zur Berechnung der Summe - benötigt für den Durchschnitt - on demand. Total ist ein anderer Parameter von T zu unterstützen, zB mit einer langen langen, wenn insgesamt 1000 lang s, ein int für char s oder ein doppeltes bis total float s. Dies ist ein bisschen fehlerhaft, dass Numsamples an INTMAX vorbeikommen könnten - wenn Sie sich vorstellen können, dass Sie eine langjährige langjährige langjährige Benutzung verwenden oder ein zusätzliches Bool-Datenelement verwenden können, um aufzuzeichnen, wann der Container zum ersten Mal gefüllt wird, während Sie das Nacken um das Array herumfahren und dann etwas Unschuldiges umbenennen Pos. answered Jun 12 12 at 5 19.in geht davon aus, dass void Operator T Probe tatsächlich void Operator T Probe oPless Jun 8 14 bei 11 52. oPless ahhh gut gesichtet tatsächlich Ich wollte für es zu leeren Betreiber T Probe aber natürlich Sie Könnte benutze, was auch immer Notation, die Sie mochten, beheben, danke Tony D Juni 8 14 um 14 27.


No comments:

Post a Comment