Augmented Reality mit ArUco-Marker in OpenCV

Augmented Reality (AR) hat sich zu einer transformativen Technologie entwickelt, die die Lücke zwischen dem physischen und dem digitalen Bereich überbrückt. Im Gegensatz zu Virtual Reality (VR), die vollständig immersive digitale Umgebungen schafft, verbessert AR unsere Erfahrungen in der realen Welt, indem virtuelle Inhalte auf die physische Umgebung übertragen werden. Diese Verschmelzung von realer und digitaler Welt eröffnet eine Vielzahl von Möglichkeiten in verschiedenen Bereichen, von Unterhaltung und Bildung bis hin zu Anwendungen im Gesundheitswesen und in der Industrie.
In AR werden digitale Informationen wie Bilder, Videos, Animationen und 3D-Modelle nahtlos in die Sicht des Benutzers auf die reale Welt integriert. Diese Integration kann über Geräte wie Smartphones, Tablets, Datenbrillen und sogar spezielle AR-Headsets erfolgen. Stellen Sie sich vor, Sie könnten unterwegs Kontextinformationen zu Sehenswürdigkeiten sehen, sich Möbel in Ihrem Zuhause vor dem Kauf vorstellen oder während einer Reparatur schrittweise Anleitungen erhalten, die einem realen Objekt überlagert werden.
Eine der wichtigsten Herausforderungen bei AR ist die präzise Verankerung digitaler Inhalte in der realen Welt. Hier kommen Marker ins Spiel. Marker sind speziell entworfene Muster, die von Computer-Vision-Algorithmen leicht erkannt und erkannt werden können. Sie dienen als Referenzpunkte in der physischen Umgebung und ermöglichen es AR-Systemen, die Position und Ausrichtung des Geräts des Benutzers im Verhältnis zu diesen Markierungen zu verstehen.
ARuCo-Marker, kurz für „Augmented Reality University of Cordoba“, sind eine Art quadratischer Marker, der für markerbasierte AR-Anwendungen immer beliebter wird. Diese Marker besitzen mehrere Eigenschaften, die sie ideal für das Tracking machen:
AruCo-Marker bestehen aus einem einfachen Raster aus schwarzen und weißen Quadraten, sodass sie leicht generiert, gedruckt und erkannt werden können.
Jeder Marker hat ein einzigartiges Muster, das in seiner Anordnung der Quadrate kodiert ist und eine zuverlässige Identifizierung ermöglicht.
AruCo-Marker sind so konzipiert, dass sie auch unter schwierigen Bedingungen, wie z. B. unterschiedlichen Lichtverhältnissen und Winkeln, erkennbar sind.
ARuCo-Marker dienen als visuelle Anker in der Umgebung und ermöglichen es AR-Systemen, digitale Inhalte präzise mit der physischen Welt zu überlagern. Wenn eine Kamera oder ein Gerät eine Szene mit ARuCo-Markern aufnimmt, kann das AR-System Computer-Vision-Techniken verwenden, um die Positionen und Ausrichtungen der Marker zu erkennen und zu analysieren. Diese Informationen bilden die Grundlage für die Ausrichtung und das Rendern virtueller Inhalte auf eine Weise, die sich nahtlos in die Sicht des Benutzers einfügt.
In diesem Tutorial werden wir die Leistungsfähigkeit von OpenCV, einer vielseitigen und weit verbreiteten Open-Source-Bibliothek für Computer Vision, nutzen, um Augmented Reality mithilfe von AruCo-Markern zu implementieren. OpenCV bietet eine Fülle von Funktionen und Tools für Bildverarbeitung, Mustererkennung, Kamerakalibrierung und mehr. Durch die Kombination der Funktionen von OpenCV mit AruCo-Markern können wir ein robustes AR-Erlebnis schaffen, das Marker erkennt, ihre Posen schätzt und die Realität mit virtuellen Inhalten erweitert.
In den folgenden Abschnitten dieses Tutorials werden wir uns mit den Details der Generierung von ARuCo-Markern, der Kalibrierung der Kamera, der Erkennung von Markern, der Schätzung ihrer Posen und schließlich dem Überlagern digitaler Inhalte auf die Marker befassen. Am Ende dieses Leitfadens werden Sie ein solides Verständnis dafür haben, wie Sie Ihre eigenen Augmented-Reality-Anwendungen mithilfe von AruCo-Markern und OpenCV erstellen können, was Ihnen die Tür zu unzähligen kreativen Möglichkeiten in der AR-Welt öffnet.
Bevor Sie beginnen, stellen Sie sicher, dass die folgenden Voraussetzungen installiert sind:
AruCo-Marker sind spezielle Muster, die von Computer-Vision-Algorithmen leicht erkannt und erkannt werden können. Beginnen wir mit der Generierung einer Reihe von AruCo-Markern mithilfe von OpenCV.
Python
importiere cv2import cv2.aruco als arucoimport numpy als np# Erstelle ein Wörterbuch von Aruco-Markern aruco_dict = aruco.dictionary_get (aruco.dict_6x6_250) # Erstelle und speichere mehrere Aruco-Marker für i in range (5): marker_image = aruco.drawMarker (aruco_dict, i, 200) cv2.imwrite (fmarker_ {i} .png“, marker_bild)
Dieser Code generiert fünf AruCo-Marker und speichert sie als Bilddateien.
Für eine genaue Markererkennung und Posenschätzung ist die Kamerakalibrierung von entscheidender Bedeutung. Nehmen Sie mehrere Bilder eines Schachbrettmusters aus verschiedenen Blickwinkeln auf und verwenden Sie sie, um die Kamera zu kalibrieren.
Python
# Bilder für die Kamerakalibrierung aufnehmen#... # Kamerakalibrierung durchführen#... # Kalibrierungsparameter speichern#...
Lassen Sie uns Videos von der Kamera aufnehmen und AruCo-Marker in Echtzeit erkennen. Wir schätzen die Position und Ausrichtung (Pose) der erkannten Marker ab.
# Kamera und Marker initialisieren detectorcap = cv2.videoCapture (0) parameters = aruco.DetectorParameters_create () while True: ret, frame = cap.read () # Erkennt die Ecken und IDs der Aruco-Marker, _ = aruco.detectMarkers (frame, aruco_dict, parameters=parameters) wenn ids nicht None ist: # Marker zeichnen und Posen schätzen rvecs, tvecs s, _ = aruco.estimatePoseSingleMarkers (corners, 0.05, camera_matrix, dist_coeffs) für i im Bereich (ids.size): aruco.drawAxis (frame, camera_matrix, dist_coeffs, rvecs [i], tvecs [i], 0.1) cv2.imshow („AR mit AruCo“, frame) if cv2.waitKey (1) & 0xFF == ord ('q'): breakcap.release () cv2.destroyAllWindows ()
Dieser Code erfasst das Video von der Kamera, erkennt ARuCo-Marker, schätzt ihre Posen und visualisiert das AR-Erlebnis, indem er Koordinatenachsen über den Markierungen zeichnet.
Lassen Sie uns nun die Realität erweitern, indem wir den erkannten ARuCO-Markern virtuelle Inhalte überlagern.
# Laden Sie virtuelle Inhalte (Bild oder 3D-Modell) content = cv2.imread (“ virtual_content.png „) # Laden Sie Ihre Inhalte währenddessen hoch True: ret, frame = cap.read () # Erkenne die Ecken und IDs der Aruco-Marker, _ = aruco.detectMarkers (frame, aruco_dict, parameters=parameters), falls ids nicht None ist: for i in range (ids.size): # Schätzen Sie die Markerpose rvec, tvec vec = aruco.estimatePoseSingleMarkers (corners [i], 0.05, camera_matrix, dist_coeffs) # Projiziere virtuelle Inhalte auf den Marker #... # Zeichne Markierungen aruco.drawDetectedMarkers (frame, corners, ids) cv2.imshow („AR using aRUCO“, frame) if cv2.waitKey ( 1) & 0xFF == ord ('q'): breakcap.release () cv2.destroyAllWindows ()
In diesem Abschnitt würden Sie Ihre eigenen virtuellen Inhalte (Bild oder 3D-Modell) laden und sie auf der Grundlage ihrer geschätzten Posen auf die Marker projizieren.
Sie haben gelernt, eine Augmented Reality-Anwendung mit AruCo-Markern und OpenCV zu erstellen. In diesem Handbuch wurden das Generieren von Markern, die Kamerakalibrierung, die Markererkennung, die Posenschätzung und die Erweiterung der Realität mit virtuellen Inhalten behandelt. Du kannst gerne weiter forschen, Interaktivität hinzufügen oder mit fortgeschritteneren Funktionen experimentieren.
Denken Sie daran, dass Augmented Reality endlose Möglichkeiten für kreative Anwendungen bietet. Dieser Leitfaden dient als solide Grundlage für die Erstellung Ihrer eigenen AR-Erlebnisse.
Fühlen Sie sich frei, jeden Abschnitt zu erweitern und den Code an Ihre Bedürfnisse anzupassen. Dieser umfassende Leitfaden soll den Lesern ein tiefes Verständnis dafür vermitteln, wie Augmented Reality mithilfe von AruCo-Markern und OpenCV implementiert werden kann.
Empfohlene Lektüre für Sie
Neue Blogbeiträge, die Sie interessieren könnten
Jakub Bílý
Leiter/in Geschäftsentwicklung