Dalam dunia kecerdasan buatan dan pemprosesan imej yang menarik, konsep ini memainkan peranan penting dalam membolehkan mesin melihat dunia tiga dimensi di sekeliling kita dengan cara yang sama mata kita. Sertai kami sambil kami meneroka teknologi di sebalik penglihatan stereo dan persepsi kedalaman, mendedahkan rahsia bagaimana komputer memperoleh pemahaman tentang kedalaman, jarak dan ruang daripada imej 2D.
Apakah sebenarnya yang dimaksudkan dengan penglihatan stereo dan persepsi mendalam dalam penglihatan komputer?
Penglihatan stereo dan persepsi kedalaman adalah konsep penting dalam bidang penglihatan komputer, yang bertujuan untuk meniru keupayaan manusia untuk melihat struktur kedalaman dan tiga dimensi daripada maklumat visual. Konsep-konsep ini sering digunakan dalam bidang seperti robotik, kereta pandu sendiri dan realiti tambahan Teknologi yang menggunakan imej daripada satu atau lebih kamera untuk melihat kedalaman pemandangan, meniru cara mata manusia berfungsi.
Prinsip asas di sebalik penglihatan stereo ialah triangulasi. Apabila dua kamera (atau "kamera stereo") menangkap imej pemandangan yang sama dari sudut pandangan yang sedikit berbeza, pasangan imej yang terhasil, dipanggil pasangan stereo, mengandungi perbezaan atau perbezaan, dalam kedudukan titik yang sepadan dalam kedua-dua imej.
Algoritma penglihatan stereo biasanya termasuk teknik seperti padanan ciri, pemetaan perbezaan dan geometri epipolar, yang digunakan untuk mengira peta kedalaman atau perwakilan 3D bagi sesuatu pemandangan
Persepsi Kedalaman
Dalam penglihatan kedalaman komputer, rujuk ke dalam keupayaan sistem untuk mengekstrak maklumat daripada satu Keupayaan untuk memahami dan menganggarkan jarak objek dalam pemandangan 3D daripada berbilang imej 2D atau bingkai video
Kaedah untuk mencapai persepsi kedalaman tidak terhad kepada penglihatan stereoskopik, tetapi juga boleh mengambil jalan lain, termasuk:
Isyarat monokular: Ini ialah perkara yang boleh dilakukan dalam satu isyarat Kedalaman yang dilihat dalam kamera atau imej. Contohnya termasuk perspektif, kecerunan tekstur, bayang-bayang dan oklusi. Petunjuk ini boleh membantu menganggarkan kedalaman walaupun tanpa stereovision. LiDAR (Pengesanan dan Ranging Cahaya): Penderia LiDAR menggunakan pancaran laser untuk mengukur jarak objek dalam pemandangan, memberikan maklumat kedalaman yang tepat dalam bentuk awan titik. Maklumat ini boleh digabungkan dengan data visual untuk persepsi kedalaman yang lebih tepat. Cahaya Berstruktur: Cahaya berstruktur melibatkan menayangkan corak yang diketahui pada pemandangan dan menganalisis ubah bentuk corak itu pada objek dalam pemandangan itu. Ubah bentuk ini boleh digunakan untuk mengira maklumat kedalaman.Penglihatan stereo dan persepsi kedalaman
Komponen kamera
dalam komputer: Penglihatan stereo bergantung pada dua atau lebih kamera (kamera stereo) yang diletakkan pada jarak yang diketahui. Kamera ini menangkap imej pemandangan yang sama dari sudut pandangan yang sedikit berbeza, meniru cara mata manusia melihat kedalaman.
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()
Nota: Untuk persediaan kamera stereo, penentukuran kamera diperlukan dan data penentukuran disimpan dalam fail .yml, masukkan laluan ke dalam kod contoh .
menggunakan maklumat mendalam untuk pengesanan dan penjejakan sasaran untuk mencapai kedudukan dan pengenalan yang lebih tepat. Menggunakan maklumat mendalam untuk aplikasi realiti maya dan realiti tambahan membolehkan pengguna berinteraksi dengan persekitaran maya secara lebih realistik. Gunakan maklumat kedalaman untuk pengecaman muka dan analisis ekspresi untuk meningkatkan ketepatan dan keteguhan pengecaman muka. Gunakan maklumat kedalaman untuk pembinaan semula dan pemodelan 3D untuk menjana pemandangan 3D yang realistik. Gunakan maklumat kedalaman untuk anggaran postur dan analisis tingkah laku untuk mencapai pengecaman tindakan dan pemahaman tingkah laku yang lebih tepat. Gunakan maklumat kedalaman untuk pemanduan autonomi dan navigasi robot untuk meningkatkan keselamatan dan kecekapan dalam bidang pengangkutan pintar dan automasi
Atas ialah kandungan terperinci Penglihatan stereo dan persepsi mendalam dalam penglihatan komputer dan contoh. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!