-
[OpenCV] Depth Map from Stereo ImagesImage Geometry 2018. 2. 1. 18:57
스테레오 이미지로부터 깊이 맵
목표
스테레오 이미지에서 깊이맵을 만드는 방법을 배웁니다.
기본이론
지난 세션에서, 에피폴라제약과 그 외 다른 항목과 같은 기본 개념을 보았습니다. 또한 동일한 장면의 두 개 이미지가 있을 때, 직관적인 방법으로 깊이 정보를 얻을 수 있음을 보았습니다. 아래는 직관을 증명하는 간단한 수학 공식과 이미지 입니다.
위의 다이어그램은 등가 삼각형(equivalent triangles)을 포함합니다. 등가 방정식(equivalent equations)은 아래의 결과를 산출합니다.
x 와 x' 은 장면 포인트 3D와 그들의 그들의 카메라 중심에 대응하는 이미지 평면 내 포인트 사이의 거리입니다.
B는 두 카메라 사이의 거리(우리가 알고있는)이고 f는 카메라의 초점거리(이미 알고 있는).
요약하면, 위의 방정식은 장면 내 포인트의 깊이는
대응하는 이미지 포인트와 그들의 카메라 중심의 거리 차에 반비례합니다.
이 정보를 사용하면 우리는 이미지의 모든 픽셀의 깊이를 도출할 수 있습니다.
따라서 그것은 두 이미지 사이의 대응하는 매치를 찾습니다.
우리는 에피라인 제약이 어떻게 이 작업을 빠르고 정ㅎ확하게 수행하는지 보았습니다.
일단 매치들을 발견하면, 그것은 변위를 찾습니다. 이제 OpenCV로 어떻게 수행하는지 살펴봅시다.
코드
아래의 코드 조각은 변위맵을 만드는 단순한 절차를 보여줍니다.
아래의 이미지는 원본 이미지(좌)와 그 변위 맵(우)를 포함합니다. 그림에서 보이듯이, 결과는 높은 수준의 노이즈로 더럽혀 있습니다. numDisparities와 blockSize의 값을 조절하여 더 나은 결과를 얻을 수 있습니다.
Reference