지난 시간엔 어떠한 3D point X가 World에서 표현이 되어있을 때, 이것을 카메라 프레임으로 옮겨오고 이미지 plane에 투영해서 2D point x를 만드는 과정에 대해 알아보았습니다.
반대로 2D->3D mapping을 알아보겠습니다.
mono camera 기준 3D에서 2D point mapping은 한 장의 사진으로 가능하지만
2D에서 3D point mapping은 한장의 이미지만으로 할 수 없습니다.
최소 두 장의 사진이 필요 합니다.
Epipolar geometry
• 2-view geometry
: 바라보는 시점은 다르지만 동일한 3D point를 바라보고 있는 2개의 이미지
Epipolar line이 중요한 이유는
epipolar line이 없다면 왼쪽 시점에서 바라보고 있는 3D 포인터가 오른쪽 시점 이미지 plane 위에 어디에 나타나게 될까라는
문제를 풀 때 아무런 prior 정보없이 찾아야하지만
epipolar line이 주어졌다면 그 포인터 상이 epipolar line 어딘가에 맺히게 된다라는 걸 알고 시작하기 때문입니다.
epipolar line이 평행하다면 픽셀로 봤을 때 픽셀 정보가 모두 뭉쳐있습니다.(행이 같고 열만 다르기 때문)
따라서 데이터들을 빠르게 access해서 correspondence를 찾을 수 있다는 장점이 있습니다.
그 후 stereo macthing도 쉽게 할 수 있습니다.
Otical center가 같은 열에 있는 경우도 있습니다.
이 경우 wheel odometry motion sensor만 있다면 센서에서 나온 translation값을 바로 적용할 수 있어서
correspondence를 구하고 그걸 통해 여러가지 기학 분석을 하는 과정이 생략됩니다.
Epipolar plane
이 epipolar plane이 존재함으로써 epipolar geometry가 완성이 됩니다. (plane안에 epipolar line도 있기 때문)
Baseline
: 두 optical centers를 이은 선
Correspondence가 존재하기 위한 3가지 조건
1. 3D point X는 epipolar plane 위에 있어야 합니다.
2. 모든 epipolar line들은 epipole과 교차해야합니다.
3. 모든 baseline들은 epipole과 교차해야하며, 모든 epipolar plane은 baseline을 포함하고있어야 합니다.
이러한 조건들을 기하학적 표현으로 Geometry constraint라고 합니다.
또는 Epipole, 2D image point, 3D point 모두 같은 plane에 있으므로 coplanar constraint라고도 합니다.
Essential / Fundamental matrix
카메라 간의 모션을 추정하기 위해서는 Correspondence를 정확하게 아는 것이 중요합니다.
Correspondence를 정확하게 얻어낼 수 있게 해주는 것이 epipolar constraint이기 때문에
카메라 모션을 정확하게 추론하기 위해서는 essentail matrix를 구하는 과정이 중요합니다.
이 식은 2개의 2D point(Correspondence)를 이어주는 역할을 합니다.
왼쪽 이미지에 맺힌 상 하나와 오른쪽 이미지에 맺힌 상 하나를 E matrix가 연결하면서 기하학적인 constraint를 만듭니다.
epipolar constraint는 epipolar plane안에 두 카메라 간의 회전과 이동에 대한 정보를 담고있습니다.
E (Essential matrix, 3x3)는 t(translation, 3x1)과 R (rotation, 3x3) 곱으로 이루어져있습니다.
t가 X,Y,Z인 3x1인 행렬인데 행렬곱을 하기 위해 3*3으로 바꿔주어야 합니다.
역으로 E를 구하고나서 rotation과 translation으로 쪼개서 알 수 있습니다.(Singular Value Decomposition, SVD를 통해)
하지만 바로 수식을 넣어 Essential matrix값을 구할 순 없습니다.
3D point X는 소수점으로 표현된 것이므로 픽셀로 먼저 변환해주어야 합니다.
마지막 아래 식은 왼쪽 이미지에 있는 픽셀 위치와 오른쪽 이미지에 있는 픽셀 위치를 Correspondence로 표현하는 방법 입니다.
오른쪽 이미지 위에 있는
가 오른쪽에 있는 l'을 나타낸 것입니다.
를 l'에 곱해주면 0이 나옵니다. (point * line = 0 라는 정의 이용)
따라서 오른쪽에 있는 X' 픽셀이 왼쪽 이미지에서는 어떤 픽셀과 Correspondence를 이루는 것일까라는 문제를 풀기 위해서
왼쪽에 있는 이미지에 모든 픽셀에 대한 가능성을 뒤질 필요 없이 F matrix를 곱해서 라인을 구하고, 그 라인의 식과 0이 나오는 픽셀들만 사용하면 됩니다.
Essential Matrix과 Fundamental Matrix를 구하는 저명한 알고리즘
Essential Matrix : 5-Point algorithm (최소 5개의 Correspondence가 존재할 때 사용 가능)
-> 5자유도를 가짐(tx, ty, tz, rx, ry, rz) 5개지만 스케일값은 구하지 못하므로 6-1
Fundamental Matrix : 8-Point algorithm
-> 7자유도를 가짐(tx, ty, tz, rx, ry, rz, F, C) 8개지만 스케일값은 구하지 못하므로 하나가 빠지게 되어 7자유도를 갖는다고 합니다.
위 내용은 자율주행 데브코스 장형기 강사님의 강의 내용을 정리한 것임을 밝힙니다.
'자율주행 데브코스 4기 TIL > SLAM' 카테고리의 다른 글
RANSAC (0) | 2023.02.28 |
---|---|
카메라 센서의 구조 (0) | 2023.02.24 |
Camera projection (0) | 2023.02.23 |
Projective geometry (0) | 2023.02.23 |
3D Rigid Body Motion (0) | 2023.02.23 |