Schritt 7: Erstellen und Konfigurieren von Computer-Vision-System (CVS)
Die OpenCV-Bibliothek ist wo alle Verarbeitungen des Videos geschieht und die Informationen aus dieser Verarbeitung fertig machen Entscheidungen Robotik Plattform und andere Komponenten, die das dynamische System zu ermöglichen. Seine Version ist die OpenCV-2.2.8, vorliegenden Beispiele und alle Funktionen, die in Versionen für Windows, MAC und Linux verfügbar.
Es war notwendig, um die Installation mit dem Befehl tun:
Aktualisieren des Systems: Sudo apt-Get update
Updates zu installieren: Sudo apt-Get Upgrade
Die OpenCV-Bibliothek installieren: Sudo apt-Get installiert Python-Opencv
CVS (Computer-Vision-System):
Die Abbildung dieses Schrittes zeigt den Satz von Systemfunktionen. Diese Funktionen werden ausgeführt, nacheinander, wiederholt und für die wahren Werte der dynamischen Eigenschaften des Objekts (Koordinaten und Größe), bis zu sechs Mal (oder sechs Variationen) ein zweites Mal. D. h. jede Sekunde entstehen bis zu sechs Werte, die verarbeitet und verglichen werden, Straffung die Plattform.
Verwenden Sie die Figur dieses Schrittes für jeden Schritt-Beschreibung:
- Zuerst war es notwendig, ein Bild oder, speziell der Rahmen mit dem Bild (Frame) zu erfassen (oder erhalten). Die Größe beträgt 160 x 120 Pixel. Im großen Rahmen (z. B. 640 Pixel breit und 480 Pixel hoch), verursacht Verlangsamung in den Erkennungsprozess, wenn das Bild aus der Ferne übertragen wurde. Die Standardeinstellung des Systems ist RGB-Farbe, dieses Farbsystem ist vertreten in der Webcam-Frame erhalten durch die Grundfarben: rot (rot), Green (grün) und blau (blau). Diese Farben werden auf einem dreidimensionalen Vektor Pixel für Pixel dargestellt, zum Beispiel die Farbe Rot ist vertretenen 0com Werte (0, 255, 0), bzw. für jeden Kanal vertreten. Jedes Pixel hat seine RGB-Wert von drei Bytes (rot-grün und blau) vertreten.
- Nach das aufgenommene Bild erfolgte die Umwandlung von RGB -Farbsystem in der Farbe HSV (Farbton, Sättigung und Wert) , da dieses Modell ähnlich wie die Anerkennung durch das menschliche Augenfarben beschrieben werden. Da das RGB (rot, grün und blau) System die Farben basierend auf Kombinationen der Grundfarben (rot, grün und Blau hat) und der HSV-System Farben als ihre Farbe definiert, erleichtern funkeln und Strahlen (Farbton, Sättigung und Wert), die Gewinnung von Informationen. Im Diagramm die Schritt 2 zeigt die Umwandlung von RGB in HSV, mit der "CvtColor" native OpenCV, die das Eingangsbild aus einem Eingabefarbe-System auf eine andere Funktion wandelt.
- Mit dem Bild im HSV -Modell war es notwendig, die korrekten Werte für HSV Mindest- und Farbe des Objekts zu finden, die befolgt werden. Zu speichern diese Werte wurden zwei Vektoren mit minimalen HSV und HSV maximale Color-Objekt als Werte: Hue (42) Minimum Sättigung (62) Minimum Mindesthelligkeit (63) maximale Hue (92) maximale Sättigung (255) maximale Helligkeit (235). Also der nächste Schritt, um ein binäres Bild zu erzeugen, kann die relevante Informationen nur im Rahmen dieser Werte beschränkt werden. Diese Werte werden benötigt, um das Farbmuster des Objekts zu begrenzen. Eine Funktion für den Vergleich der Pixelwerte mit den standard Werten des eingefügten Vektors diente. Das Ergebnis war ein binäres Bild nur ein Mehrwert für jedes Pixel.
- Die Segmentierung, wodurch die binäres Bild gemacht zu haben ist anzumerken, dass Lärm in den Rahmen noch vorhanden sind. Diese Geräusche sind Elemente, die die Segmentierung (einschließlich des Erhalts der Originalgröße) behindern des Objekts. Fix (oder versuchen zu beheben) dieses Problem war es notwendig, eine morphologische Transformation durch Betreiber im Rahmen anwenden, so dass die Pixel entfernt wurden, die nicht den gewünschten Standard entsprachen. Hierzu wurde der morphologischen Operator EROSION, eine "saubere" in the Frame durchgeführt, Reduzierung von Lärm, die darin enthaltenen verwendet.
- Dann diente es "Moments" -Funktion, die die Momente der positiven Kontur (weiß) mit einer Integration in die Kontur vorhanden alle Pixel berechnet. Diese Funktion ist nur möglich in einem Frame bereits Binarizado und geräuschlos, so dass die Größe der Kontur des Objekts nicht geändert wird, durch streunende Pixel im Frame, die behindern und dazu führen, dass Redundanz in Informationen.
Momente = cv2.moments (ImgErode, True)Im vorgeschlagenen Beispiel war es notwendig, Bereich der Kontur und die Standort-Koordinaten im Rahmen erfolgen die Berechnungen der Neupositionierung der Chassis zu finden. Die Berechnung der Fläche des Objekts führt die binäre Summe der positiven, die Variable M00 generieren und in die Variable "Bereich" aufgezeichnet:
Bereich Momente ["m00"] =
Die Spezifität der Kontur verweist auf ein Objekt, kein Polygon. Dieser Wert findet sich eine ungefähre Fläche von positiven Pixel (weiß), die das Objekt bilden. Wenn dieser Wert null ist, wird ignoriert die Existenz einer Objektfarbe behandelt (wenn das "grün") im Rahmen. Mit dieser Funktion wird helfen, die Bewegung des Roboters Annäherung und Distanzierung des Zielobjekts, versuchen zur Behandlung des Problems der Tiefe zu erreichen. Das heißt, die Tatsache, dass das Objekt nähert oder Distanzierung übermäßig Chassis.Und von der gezielten Bereich möglich war, die Koordinaten des Objekts in diesem Rahmen zu definieren. Für die Koordinaten des Objekts war verwendeten Parameter erhalten Momente-Funktion, die die koordinierte gefunden. Aber das koordiniert wurde, basierend auf den Schwerpunkt des Objekts, ist nur gefunden, wenn die Fläche des Objekts größer als Null ist. Mit dieser Funktion war wichtig, machen die Bewegung der horizontale und vertikale Verstellung des Roboters zur Erhöhung der Grad der Gestaltungsfreiheit und minimieren Einschränkung der Bewegung des Objekts identifiziert werden. Im Bereich des Object-Parameter und kombiniert mit M00 X und y Parameter Momente der Funktion, war es möglich, die Koordinaten (X, y) zu finden.
Die Werte in die Koordinate (X, y) bezieht sich daher auf die Platzierung der gefundenen Segmentierung des Objekts im Verhältnis zum Rahmen und die Interpretation der Informationen zu erleichtern, die von den Koordinateninformationen gezeichnet wird, eine Funktion, einen Kreis zeichnet , an der Schwerpunkt war das Objekt angewendet.
Das Ergebnis:
Schritt 6 werden im Laufe der nächsten Schritte demonstriert werden, wäre es notwendig, die Konfiguration von Motoren und andere Teile, bevor Sie fortfahren mit diesem Teil zu erklären.
Das angehängte Skript "SVC.py" hilft Ihnen, beginnen zu verstehen, wie das System funktionieren wird. Wenn Probleme Ihre Raspberry Pi geben, empfehle ich die Überprüfung der installierten Bibliotheken oder Kontakt.
Wie ein Python Skript ausgeführt in Raspberry Pi? klicken Sie hier!
Wir gehen mit dem Montageroboter? Ans Werk!