Depth Map from Stereo Images
วัตถุประสงค์
- เราจะเรียนรู้ที่จะสร้างแผนที่ความลึกจากภาพสเตอริโอ
พื่นฐาน
ในช่วงที่ผ่านมาเราได้เห็นแนวคิดพื้นฐานเช่นการ จำกัด epipolar และเงื่อนไขอื่น ๆ ที่เกี่ยวข้อง นอกจากนี้เรายังเห็นว่าถ้าเรามีสองภาพของฉากเดียวกันเราจะได้รับข้อมูลเชิงลึกจากว่าในวิธีที่ง่าย ด้านล่างนี้เป็นภาพและบางสูตรทางคณิตศาสตร์ที่เรียบง่ายซึ่งพิสูจน์สัญชาติญาณว่า
แผนภาพข้างต้นมีรูปสามเหลี่ยมเทียบเท่า เขียนสมการเทียบเท่าของพวกเขาจะทำให้เราผลต่อไปนี้
X และ X 'มีระยะห่างระหว่างจุดในระนาบของภาพที่สอดคล้องกับ 3D จุดเกิดเริ่มต้นและศูนย์กล้อง B คือระยะห่างระหว่างกล้องสอง (ซึ่งเรารู้) และ F คือความยาวโฟกัสของกล้อง (รู้จักกันอยู่แล้ว) ดังนั้นในระยะสั้น, สมการข้างต้นกล่าวว่าความลึกของจุดในฉากที่จะแปรผกผันกับความแตกต่างในระยะทางที่สอดคล้องกันของจุดภาพและศูนย์กล้องดังนั้นด้วยข้อมูลนี้เราสามารถได้รับความลึกของพิกเซลทั้งหมดในภาพ
ดังนั้นจึงพบว่าตรงกับที่สอดคล้องกันระหว่างสองภาพที่ เราได้เห็นแล้วว่ามีข้อ จำกัด epiline ทำให้การดำเนินการนี้ได้เร็วขึ้นและถูกต้อง เมื่อพบการแข่งขันที่พบความแตกต่าง ลองมาดูกันว่าเราสามารถทำมันได้ด้วย OpenC
โค๊ด
import numpy as np import cv2 from matplotlib import pyplot as plt imgL = cv2.imread('joy.jpg',0) imgR = cv2.imread('joy.jpg',0) stereo = cv2.StereoBM_create(numDisparities=16, blockSize=15) disparity = stereo.compute(imgL,imgR) plt.imshow(disparity,'gray') plt.show()