Heim > Artikel > Technologie-Peripheriegeräte > Stereosehen und Tiefenwahrnehmung in Computer Vision und Beispiele
In der faszinierenden Welt der künstlichen Intelligenz und Bildverarbeitung spielen diese Konzepte eine Schlüsselrolle dabei, dass Maschinen die dreidimensionale Welt um uns herum genauso wahrnehmen können wie unsere Augen. Erkunden Sie mit uns die Technologie hinter Stereovision und Tiefenwahrnehmung und enthüllen Sie die Geheimnisse, wie Computer anhand von 2D-Bildern Tiefe, Entfernung und Raum verstehen.
Was genau bedeuten Stereovision und Tiefenwahrnehmung in der Computer Vision?
Stereovision und Tiefenwahrnehmung sind wichtige Konzepte im Bereich Computer Vision, die darauf abzielen, die menschliche Fähigkeit nachzuahmen, aus visuellen Informationen Tiefe und dreidimensionale Struktur wahrzunehmen. Diese Konzepte werden häufig in Bereichen wie Robotik, selbstfahrenden Autos und Augmented Reality angewendet.
Stereoskopisches Sehen, auch Stereopsis oder binokulares Sehen genannt, ist eine Methode zur Erfassung und Analyse zweier Objekte, die leicht voneinander entfernt platziert sind Eine Technologie, die Bilder von einer oder mehreren Kameras nutzt, um die Tiefe einer Szene wahrzunehmen und dabei die Funktionsweise des menschlichen Auges nachahmt.
Das Grundprinzip des Stereosehens ist die Triangulation. Wenn zwei Kameras (oder „Stereokameras“) Bilder derselben Szene aus leicht unterschiedlichen Blickwinkeln aufnehmen, enthalten die resultierenden Bildpaare, sogenannte Stereopaare, den Unterschied oder die Differenz in den Positionen entsprechender Punkte in den beiden Bildern.
Durch die Analyse dieser Unterschiede können Computer-Vision-Systeme Tiefeninformationen für Objekte in der Szene berechnen. Bei Objekten, die näher an der Kamera sind, sind die Unterschiede größer, bei Objekten, die weiter von der Kamera entfernt sind, sind die Unterschiede geringer.
Stereo-Vision-Algorithmen umfassen typischerweise Techniken wie Feature Matching, Disparity Mapping und epipolare Geometrie, die zur Berechnung einer Tiefenkarte oder 3D-Darstellung einer Szene verwendet werden die Fähigkeit eines Systems, Informationen aus einem einzelnen zu extrahieren. Die Fähigkeit, die Entfernung von Objekten in einer 3D-Szene aus mehreren 2D-Bildern oder Videobildern zu verstehen und abzuschätzen.
Methoden zur Erzielung einer Tiefenwahrnehmung beschränken sich nicht nur auf stereoskopisches Sehen, sondern können auch auf andere Weise genutzt werden auch verwendet werden, einschließlich:
Monokulare Hinweise: Dies sind die Dinge, die in einem einzigen Tiefenhinweis erfolgen können, der in einer Kamera oder einem Bild wahrgenommen wird. Beispiele hierfür sind Perspektive, Texturverläufe, Schatten und Okklusion. Diese Hinweise können helfen, die Tiefe auch ohne Stereovision abzuschätzen. LiDAR (Light Detection and Ranging): LiDAR-Sensoren messen mithilfe von Laserstrahlen die Entfernung von Objekten in einer Szene und liefern präzise Tiefeninformationen in Form von Punktwolken. Diese Informationen können für eine genauere Tiefenwahrnehmung mit visuellen Daten kombiniert werden. Strukturiertes Licht: Bei strukturiertem Licht wird ein bekanntes Muster auf eine Szene projiziert und die Verformung dieses Musters auf Objekten in der Szene analysiert. Aus dieser Verformung können Tiefeninformationen berechnet werden.Stereo-Vision und Tiefenwahrnehmungskomponenten in Computer-Vision
Stereokameras: Stereovision basiert auf zwei oder mehr Kameras (Stereokameras), die in einem bekannten Abstand voneinander platziert sind. Diese Kameras nehmen Bilder derselben Szene aus leicht unterschiedlichen Blickwinkeln auf und simulieren so die Art und Weise, wie das menschliche Auge die Tiefe wahrnimmt. Bildaufnahme: Die Kamera erfasst Bilder oder Videobilder der Szene. Diese Bilder werden oft als linkes Bild (von der linken Kamera) und rechtes Bild (von der rechten Kamera) bezeichnet. Kalibrierung: Um Tiefeninformationen genau berechnen zu können, muss die Stereokamera kalibriert werden. Dieser Prozess beinhaltet die Bestimmung von Kameraparametern wie intrinsischen Matrizen, Verzerrungskoeffizienten und extrinsischen Parametern (Rotationen und Translationen zwischen Kameras). Durch die Kalibrierung wird sichergestellt, dass die Bilder der beiden Kameras korrigiert und korrekt abgeglichen werden.import cv2import numpy as np# Create two video capture objects for left and right cameras (adjust device IDs as needed)left_camera = cv2.VideoCapture(0)right_camera = cv2.VideoCapture(1)# Set camera resolution (adjust as needed)width = 640height = 480left_camera.set(cv2.CAP_PROP_FRAME_WIDTH, width)left_camera.set(cv2.CAP_PROP_FRAME_HEIGHT, height)right_camera.set(cv2.CAP_PROP_FRAME_WIDTH, width)right_camera.set(cv2.CAP_PROP_FRAME_HEIGHT, height)# Load stereo calibration data (you need to calibrate your stereo camera setup first)stereo_calibration_file = ‘stereo_calibration.yml’calibration_data = cv2.FileStorage(stereo_calibration_file, cv2.FILE_STORAGE_READ)if not calibration_data.isOpened():print(“Calibration file not found.”)exit()camera_matrix_left = calibration_data.getNode(‘cameraMatrixLeft’).mat()camera_matrix_right = calibration_data.getNode(‘cameraMatrixRight’).mat()distortion_coeff_left = calibration_data.getNode(‘distCoeffsLeft’).mat()distortion_coeff_right = calibration_data.getNode(‘distCoeffsRight’).mat()R = calibration_data.getNode(‘R’).mat()T = calibration_data.getNode(‘T’).mat()calibration_data.release()# Create stereo rectification mapsR1, R2, P1, P2, Q, _, _ = cv2.stereoRectify(camera_matrix_left, distortion_coeff_left,camera_matrix_right, distortion_coeff_right,(width, height), R, T)left_map1, left_map2 = cv2.initUndistortRectifyMap(camera_matrix_left, distortion_coeff_left, R1, P1, (width, height), cv2.CV_32FC1)right_map1, right_map2 = cv2.initUndistortRectifyMap(camera_matrix_right, distortion_coeff_right, R2, P2, (width, height), cv2.CV_32FC1)while True:# Capture frames from left and right camerasret1, left_frame = left_camera.read()ret2, right_frame = right_camera.read()if not ret1 or not ret2:print(“Failed to capture frames.”)break# Undistort and rectify framesleft_frame_rectified = cv2.remap(left_frame, left_map1, left_map2, interpolation=cv2.INTER_LINEAR)right_frame_rectified = cv2.remap(right_frame, right_map1, right_map2, interpolation=cv2.INTER_LINEAR)# Convert frames to grayscaleleft_gray = cv2.cvtColor(left_frame_rectified, cv2.COLOR_BGR2GRAY)right_gray = cv2.cvtColor(right_frame_rectified, cv2.COLOR_BGR2GRAY)# Perform stereo matching to calculate depth map (adjust parameters as needed)stereo = cv2.StereoBM_create(numDisparities=16, blockSize=15)disparity = stereo.compute(left_gray, right_gray)# Normalize the disparity map for visualizationdisparity_normalized = cv2.normalize(disparity, None, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8U)# Display the disparity mapcv2.imshow(‘Disparity Map’, disparity_normalized)if cv2.waitKey(1) & 0xFF == ord(‘q’):break# Release resourcesleft_camera.release()right_camera.release()cv2.destroyAllWindows()
Hinweis: Für die Einrichtung einer Stereokamera ist eine Kamerakalibrierung erforderlich und die Kalibrierungsdaten werden in einer .yml-Datei gespeichert. Geben Sie den Pfad in den Beispielcode ein .
nutzt Tiefeninformationen zur Zielerkennung und -verfolgung, um eine präzisere Positionierung und Identifizierung zu erreichen. Durch die Nutzung von Tiefeninformationen für Virtual-Reality- und Augmented-Reality-Anwendungen können Benutzer realistischer mit virtuellen Umgebungen interagieren. Nutzen Sie Tiefeninformationen für die Gesichtserkennung und Ausdrucksanalyse, um die Genauigkeit und Robustheit der Gesichtserkennung zu verbessern. Nutzen Sie Tiefeninformationen für die 3D-Rekonstruktion und -Modellierung, um realistische 3D-Szenen zu generieren. Nutzen Sie Tiefeninformationen zur Haltungsschätzung und Verhaltensanalyse, um eine genauere Handlungserkennung und ein genaueres Verhaltensverständnis zu erreichen. Nutzen Sie Tiefeninformationen für autonomes Fahren und Roboternavigation, um die Sicherheit und Effizienz im Bereich des intelligenten Transports und der Automatisierung zu verbessern Realität
Gestenerkennung
Okklusion: Objekte, die sich in der Szene gegenseitig verdecken, können zu Schwierigkeiten beim stereoskopischen Sehen führen. Wenn ein Objekt ein anderes Objekt teilweise blockiert, kann die Bestimmung der Tiefe des verdeckten Bereichs problematisch sein.
Begrenzte Reichweite und Auflösung: Die Genauigkeit der Tiefenwahrnehmung mithilfe von Stereovision nimmt mit zunehmender Entfernung von der Kamera ab. Darüber hinaus nimmt die Auflösung von Tiefenmessungen mit zunehmender Entfernung ab, sodass die Details entfernter Objekte nur schwer erkennbar sind.
Das obige ist der detaillierte Inhalt vonStereosehen und Tiefenwahrnehmung in Computer Vision und Beispiele. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!