Triangulation이란? 여러 카메라로 3D 위치를 복원하는 방법

Triangulation이란 무엇인가?

이번 글에서는
Triangulation
에 대하여 살펴보겠습니다.

1 삼각측량법

3D 에서 정말 중요한 Triangulation 은
Calibration 이 된 여러 카메라로 부터
3D Points 를 Reconstruction 하는 방법입니다. ​ ​ ​

우리는 3D point 를 복원하는 것이
목적이기 때문에
Depth 정보도 알아야 하므로,

하나의 카메라로는 불가능합니다.











Homogeneous 좌표와 외적 조건의 활용

2 triangulation

우리는 Homogeneous coordinate 표현으로
3D 포인트가 2D 포인트로 프로젝션
되는 식을 적을 수 있습니다. ​

여기서, 2 개가 Up-to-scale 이라는 것은
두 벡터가 같은 방향을 바라보고 있으므로,

외적의 값이 0 을 의미합니다. ​

외적 = 0 을 이용하여
식을 만들어
Triangulation 을
풀어보겠습니다.

3 triangulation

외적 = 0 을 이용하여
왼쪽 하단의 식 3개를
구할 수 있으며,

이를 잘 정리하여
오른쪽 하단의 식
2개를 구할 수 있습니다.

4 triangulation

이 과정을 다른 카메라에도
똑같이 적용하여 식을 추출합니다.

​ 이렇게 나온 식들을 모아서
DLT 로 문제를 풀게 됩니다. ​











Geometric Error 해결 방법

5 불확실성

실제로 사용할 때는,
2D point 에 Backprojection 된 Line 2개가
서로 교차할 확률은 거의 없습니다. ​

어디선가 에러가 있기 때문에,
살짝 씩 벗어나게 됩니다. ​

정말 이상적인 경우에는
교차하겠지만요.

​ 또한 두 개의 카메라의 Baseline 이
크게 되면 Depth 오류 영역이
줄어들긴 하지만,

각 카메라로 촬영한 이미지가
많이 다르기 때문에,

대응점을 찾기 힘들다는
단점이 있습니다.

6 non linear optimization

우리는 외적 = 0 으로 부터의 식으로
Algebric 하게 Triangulation
문제를 풀었습니다. ​

항목 Algebraic TriangulationGeometric Triangulation (Reprojection 기반)
계산 방식외적 = 0 기반 선형 방정식(DLT)이미지상의 Reprojection error 최소화
사용 목적빠르고 직관적인 초기 추정정밀도 높은 최적화 결과 얻기
오차 고려 여부없음 (노이즈 민감)있음 (노이즈/오차 최소화 반영)
계산 비용낮음 (선형 계산)높음 (비선형 최적화 필요)
Bundle Adjustment 사용 가능불필요하거나 추가 가능필수 (카메라 파라미터도 함께 최적화)
결과 정확도중간~보통높음


하지만, 여러가지 에러들 때문에
차이가 발생하고,

이 차이를 최소화 하기 위해
각 이미지에 프로젝션 된
실제 포인트의 위치와

대수적으로 계산을 통하여 얻은
포인트 위치 사이의 거리를
최소화하는 방법을 통해서
(= Reprojection error)
더욱 정확한 답을 찾아냅니다. ​

여기서 Budnle adjustment 라는 것은
카메라 파라미터도 틀릴 수 있다고 가정하고,

Reprojection loss 를
줄이기 위해서,
이 파라미터 들도
최적화를 같이 진행하는 것을 말합니다.

opencv

Triangulation 방법도
OpenCV 에 잘 정리된
코드가 있습니다. ​

주의할 사항이 하나 있습니다. ​

만약 카메라 여러개를 사용했다면,
한번에 DLT 에 적용해서
풀어야 모든 카메라
projection 을 만족하는
3D point 를 복원할 수 있습니다. ​ ​


그런 건 난 잘 모르겠고,
Triangulation 은
여러 카메라로 부터
3D 위치 복원하는 방법








참고자료

Slide credit : Joo Hanbyul

https://homes.cs.washington.edu/~seitz/talks/3Dhistory.pdf

댓글 남기기