Saturday, November 5, 2016

Cv2 beweglichkeit

Ich bin nicht sicher über den Fehler, aber schauen Sie sich die Dokumentation für cv. RunningAvg Es heißt Ziel sollte 32 oder 64-Bit-Gleitkomma sein. Also habe ich eine kleine Korrektur in Ihrem Code und es funktioniert. Ich habe ein 32-Bit-Gleitkommabild erstellt, um die laufenden Mittelwerte zu speichern. Dann ein weiteres 8-Bit-Bild, so dass ich laufendes durchschnittliches Bild zeigen können: Nun sehen Sie das Ergebnis: In einem bestimmten Zeitpunkt habe ich einen Rahmen und seinen entsprechenden laufenden durchschnittlichen Rahmen gespeichert. Sie können sehen, das Hindernis (meine Hand) blockiert die Objekte hinter sich. Jetzt laufenden durchschnittlichen Rahmen: Es fast meine Hand entfernt und zeigt Objekte im Hintergrund. Das ist, wie es ein gutes Werkzeug für Hintergrund-Subtraktion ist. Ein weiteres Beispiel aus einem typischen Verkehrs-Video: Hallo, dies wird 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. Außerdem 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 Wirkung auf den Durchschnitt, aber die Person ist für eine lange Zeit, da er langsam und bewegt sich über die Straße.) Jetzt müssen wir sehen, die Wirkung von Alpha auf diese images. Smoothing Bilder Ziele Lernen Sie: Blur imagess mit verschiedenen Tiefpassfilter 2D-Faltung (Bildfilterung) Wie bei eindimensionalen Signalen können Bilder auch mit verschiedenen Tiefpassfiltern (LPF), Hochpassfiltern (HPF) usw. gefiltert werden LPF hilft beim Entfernen von Rauschen oder Verwischen des Bildes. Ein HPF-Filter hilft beim Finden von Kanten in einem Bild. OpenCV bietet eine Funktion, cv2.filter2D (). Einen Kern mit einem Bild falten. Als Beispiel, werden wir versuchen, ein Mittelwertbildung Filter auf ein Bild. Ein 5x5-Mittelungsfilterkernel kann wie folgt definiert werden: Durch das Filtern mit dem obigen Kernel wird folgendes ausgeführt: Für jedes Pixel wird ein 5x5-Fenster auf dieses Pixel zentriert, alle Pixel, die in dieses Fenster fallen, werden zusammengefasst und das Ergebnis ist Dann dividiert durch 25. Dies entspricht der Berechnung des Mittelwerts der Pixelwerte innerhalb dieses Fensters. Dieser Vorgang wird für alle Pixel in dem Bild durchgeführt, um das ausgegebene gefilterte Bild zu erzeugen. Versuchen Sie diesen Code und überprüfen Sie das Ergebnis: Image Blurring (Image Smoothing) Image blurring wird durch Falten des Bildes mit einem Tiefpassfilter Kernel erreicht. Es ist nützlich, um Rauschen zu entfernen. Es entfernt tatsächlich hochfrequenten Inhalt (z. B. Rauschen, Kanten) aus dem Bild, was dazu führt, dass Kanten verwischt werden, wenn dieses Filter angewendet wird. (Nun, es gibt verwischen Techniken, die nicht verwischen Kanten). OpenCV bietet hauptsächlich vier Arten von Unschärfetechniken. 1. Mittelwertbildung Dies geschieht durch Falten des Bildes mit einem normalisierten Kastenfilter. Es nimmt einfach den Durchschnitt aller Pixel unter Kernelbereich und ersetzt das zentrale Element durch diesen Durchschnitt. Dies geschieht durch die Funktion cv2.blur () oder cv2.boxFilter (). Überprüfen Sie die docs für weitere Details über den Kernel. Wir sollten die Breite und Höhe des Kernels angeben. Ein normaler 3x3-Box-Filter würde wie folgt aussehen: Wenn Sie don8217t einen normalisierten Box-Filter verwenden möchten, verwenden Sie cv2.boxFilter () und übergeben Sie das Argument normalizeFalse an die Funktion. Überprüfen Sie die Beispiel-Demo unten mit einem Kernel der Größe 5x5: 2. Gaußsche Filterung In diesem Ansatz wird anstelle eines Boxfilters, der aus gleichen Filterkoeffizienten besteht, ein Gaußscher Kern verwendet. Dies geschieht mit der Funktion cv2.GaussianBlur (). Wir sollten die Breite und Höhe des Kernels angeben, die positiv und ungerade sein sollte. Wir sollten auch die Standardabweichung in den X - und Y-Richtungen sigmaX bzw. sigmaY angeben. Wenn nur sigmaX angegeben ist, wird sigmaY gleich sigmaX genommen. Wenn beide als Nullen angegeben sind, werden sie aus der Kernelgröße berechnet. Gaußsche Filterung ist sehr wirksam beim Entfernen von Gaußschen Rauschen aus dem Bild. Wenn Sie möchten, können Sie einen Gaußschen Kernel mit der Funktion cv2.getGaussianKernel () erstellen. Der oben genannte Code kann für Gaußsche Unschärfe modifiziert werden: 3. Median Filtering Hier berechnet die Funktion cv2.medianBlur () den Median aller Pixel unter dem Kernelfenster und das zentrale Pixel wird durch diesen Medianwert ersetzt. Dies ist sehr effektiv bei der Beseitigung von Salz-und-Pfeffer-Rauschen. Eine interessante Sache ist, dass in den Gauß - und Kastenfiltern der gefilterte Wert für das zentrale Element ein Wert sein kann, der im Originalbild nicht existieren kann. Dies ist jedoch bei der Medianfilterung nicht der Fall, da das zentrale Element immer durch einen Pixelwert im Bild ersetzt wird. Das reduziert den Lärm effektiv. Die Kernelgröße muss eine positive ungerade ganze Zahl sein. In dieser Demo fügen wir ein 50-Rauschen zu unserem Originalbild hinzu und verwenden einen Medianfilter. Überprüfen Sie das Ergebnis: 4. Bilaterales Filtern Wie wir festgestellt haben, tendieren die Filter, die wir früher präsentierten, dazu, Kanten zu verwischen. Dies ist bei dem bilateralen Filter cv2.bilateralFilter () nicht der Fall. Die definiert wurde, und ist sehr effektiv bei der Entfernung von Rauschen unter Beibehaltung Kanten. Aber der Betrieb ist im Vergleich zu anderen Filtern langsamer. Wir haben bereits gesehen, dass ein Gaußscher Filter die Umgebung um das Pixel nimmt und seinen Gauß-gewichteten Durchschnitt findet. Dieser Gaußsche Filter ist eine Funktion des Raumes allein, das heißt, daß benachbarte Pixel bei der Filterung berücksichtigt werden. Es prüft nicht, ob Pixel nahezu denselben Intensitätswert haben und nicht berücksichtigt, ob das Pixel auf einer Kante liegt oder nicht. Der resultierende Effekt besteht darin, daß Gaußsche Filter dazu neigen, Kanten zu verwischen, was unerwünscht ist. Der bilaterale Filter verwendet auch einen Gaußschen Filter in der Raumdomäne, aber er verwendet auch eine weitere (multiplikative) Gaußsche Filterkomponente, die eine Funktion von Pixelintensitätsunterschieden ist. Die Gaußsche Funktion des Raumes stellt sicher, daß nur Pixel 8216 Ortsnachbarn8217 für die Filterung in Betracht gezogen werden, während die im Intensitätsbereich angewandte Gaußsche Komponente (eine Gaußsche Funktion von Intensitätsdifferenzen) sicherstellt, daß nur diejenigen Pixel mit Intensitäten ähnlich derjenigen des zentralen Pixels 8216intensity neighbors8217) enthalten sind, um den verschwommenen Intensitätswert zu berechnen. Infolgedessen bewahrt dieses Verfahren Kanten, da für Pixel, die in der Nähe von Kanten liegen, benachbarte Pixel, die auf der anderen Seite der Kante platziert sind und daher große Intensitätsschwankungen im Vergleich zu dem zentralen Pixel aufweisen, nicht zur Verwischung eingeschlossen werden. Das folgende Beispiel zeigt die Verwendung der bilateralen Filterung (Details zu den Argumenten finden Sie in den OpenCV-Dokumenten). Beachten Sie, dass die Textur auf der Oberfläche verschwunden ist, aber die Kanten bleiben erhalten. Smoothing Images Die folgende Erklärung gehört zum Buch Computer Vision: Algorithmen und Anwendungen von Richard Szeliski und LearningOpenCV Smoothing. Auch Unschärfe genannt. Ist eine einfache und häufig verwendete Bildverarbeitungsoperation. Es gibt viele Gründe für Glättung. In diesem Tutorial konzentrieren wir uns auf Glättung, um das Rauschen zu reduzieren (andere Verwendungen werden in den folgenden Tutorials zu sehen sein). Um einen Glättungsvorgang durchzuführen, setzen wir einen Filter auf unser Bild. Die gebräuchlichsten Filter sind linear. In dem ein Ausgangspixelwert (d. h.) als gewichtete Summe von Eingangspixelwerten (d. h.) bestimmt wird: 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 häufigsten verwendeten: Normalized Box Filter Dieser Filter ist der einfachste von jedem Output-Pixel ist der Mittelwert der Kernel-Nachbarn (alle von ihnen mit gleichem Gewicht beitragen) Der Kernel ist unten: Gaussian Filter Wahrscheinlich der nützlichste Filter (wenn auch nicht der schnellste). Die Gaußsche Filterung wird durchgeführt, indem jeder Punkt in dem Eingangsarray mit einem Gaußschen Kernel gefaltet wird und dann alle Summen addiert werden, um das Ausgangsarray zu erzeugen. Um das Bild klarer zu machen, denken Sie daran, wie ein 1D-Gaußscher Kernel aussieht. Angenommen, dass ein Bild 1D ist, können Sie feststellen, dass das Pixel in der Mitte das größte Gewicht hat. Das Gewicht seiner Nachbarn nimmt ab, wenn der räumliche Abstand zwischen ihnen und dem mittleren Pixel zunimmt. Denken Sie daran, dass ein 2D-Gaussian dargestellt werden kann als: Median Filter Der Medianfilter durchlaufen jedes Element des Signals (in diesem Fall das Bild) und ersetzen jedes Pixel durch den Median seiner benachbarten Pixel (die sich in einer quadratischen Nachbarschaft um das ausgewertete Pixel befinden ). Bilateraler Filter Bisher haben wir einige Filter, die Hauptziel ist es, ein Eingangsbild zu glätten erklärt. Doch manchmal lösen die Filter nicht nur das Rauschen, sondern glätten auch die Kanten. Um dies zu vermeiden (zumindest in einem gewissen Ausmaß), können wir einen bilateralen Filter verwenden. In analoger Weise wie der Gaußsche Filter berücksichtigt das zweiseitige Filter auch die benachbarten Pixel mit Gewichten, die jedem von ihnen zugewiesen sind. Diese Gewichte haben zwei Komponenten, wobei die erste die gleiche Gewichtung ist, die von dem Gaußschen Filter verwendet wird. Die zweite Komponente berücksichtigt die Intensitätsdifferenz zwischen den benachbarten Pixeln und der ausgewerteten. Für eine genauere Erläuterung können Sie diesen Link überprüfen Code Was bedeutet dieses Programm Lädt ein Bild Gilt 4 verschiedene Filterarten (erklärt in Theorie) und zeigt die gefilterten Bilder nacheinander Erläuterung Let8217s prüfen die OpenCV-Funktionen, die nur das Glättungsverfahren betreffen, da Der Rest ist bereits bekannt. Normalisierter Blockfilter: OpenCV bietet die Funktion Unschärfe, um eine Glättung mit diesem Filter durchzuführen. Wir geben 4 Argumente an (mehr Details, siehe Referenz): src. Quellbild dst. Zielbild Größe (w, h). Definiert die Größe des zu verwendenden Kernels (von Breite w Pixel und Höhe h Pixel) Punkt (-1, -1). Gibt an, wo sich der Ankerpunkt (das ausgewertete Pixel) in Bezug auf die Nachbarschaft befindet. Wenn es einen negativen Wert gibt, dann wird die Mitte des Kerns als der Ankerpunkt betrachtet. Es wird von der Funktion GaussianBlur ausgeführt: Hier verwenden wir 4 Argumente (weitere Details finden Sie in der OpenCV-Referenz): Indikator 8220Candle 038 TMA8 open8221 Hallo alle, hier ist ein Indikator für einen der Leser meiner Website codiert. Wir kaufen, wenn. Bullish Kerze (schließen gt öffnen) schließen und öffnen gt dreieckig gleitenden Durchschnitt 8, angewendet, um die niedrigste der Kerze lt TMA8 mit mindestens 1 Pip unterhalb der TMA8 Größe der unteren Schatten gt Größe der Körpergröße des oberen Schattens lt 2 zu öffnen Pips kein doji. Größe des Körpers gt 3 Pips Natürlich verkaufen wir für entgegengesetzte Bedingungen. Also hier ist der Code. Nein Informationen auf dieser Website ist Anlageberatung oder eine Aufforderung zum Kauf oder Verkauf von Finanzinstrumenten. Die Wertentwicklung in der Vergangenheit ist kein Hinweis auf zukünftige Ergebnisse. Der Handel kann Sie einem Verlustrisiko aussetzen, das größer ist als Ihre Einlagen und nur für erfahrene Anleger geeignet ist, die über ausreichende finanzielle Mittel verfügen, um dieses Risiko zu tragen. ProRealTime ITF-Dateien und andere Anhänge: New PRC ist jetzt auch auf YouTube, abonnieren Sie unseren Kanal für exklusive Inhalte und Tutorials 58 Beiträge 8226 62 Follower 58 Beiträge 8226 62 Verfolger Eingetragen px - Image Height Ähnliche Nutzer Beiträge Doctrading


No comments:

Post a Comment