
(멀티플 뷰 지오메트리) Lecture 8. Absolute Pose Estimation from Points or Lines
2022, Apr 20
- 참조 : https://youtu.be/C5L7LnNL4oo?list=PLxg0CGqViygP47ERvqHw_v7FVnUovJeaz
- 참조 : https://youtu.be/8Nh1UeuD9-k?list=PLxg0CGqViygP47ERvqHw_v7FVnUovJeaz
- 참조 : https://youtu.be/9peph2zvSyY?list=PLxg0CGqViygP47ERvqHw_v7FVnUovJeaz
- 참조 : Multiple View Geometry in Computer Vision
- Lecture 8에서는
Camera Pose Estimation
문제를 풀기 위한PnP(Perspective-n-point)
문제를 정의하고 카메라의calibration
정보를 사용하는 경우와 그렇지 않은 경우에 대하여Pose Estimation
을 하는 방법에 대하여 알아보도록 하겠습니다.

























- 참조 : https://youtu.be/N1aCvzFll6Q?t=1769
- 앞에서 설명한
Companion Matrix
또는 다차 방정식의 해를 구하는 방법을 통하여 4차 방정식을 풀면 4가지의 해를 구할 수 있습니다. 따라서 4가지의 해 중 실제 해에 해당하는 값을 구할 수 있어야 합니다. - 예를 들면 위 그림과 같이 4가지 경우의 해를 구할 수 있기 때문에 추가적인 정보를 이용하여 특정 상황을 결정해 주어야 합니다. 이 경우 4번째 점인 X4 에 대한 정보를 추가적으로 이용하여
depth
를 구하였을 때에도 동일한 값이 나오는 경우를 선택하면 실제 해를 구할 수 있습니다. (또는 다른 추가적인 센서 값을 이용할 수도 있습니다.)

- 앞의 슬라이드 과정에서
unknown depth
인 ss1,s2,s3 를 구하면 카메라 좌표 기준의 3D 포인트의 좌표인 p′1,p′2,p′3 를 알 수 있습니다. - 현재 최종적으로 구하고자 하는 목표인
absolute orientation
는 p′1,p′2,p′3 을 p1,p2,p3 로 변환하기 위한 (R,t) 값을 구하는 것이며 다음 식을 만족하는 (R,t) 값을 구하는 것이 목표가 됩니다.
- argminR,ti=n∑i=1‖pi−(Rpi+t)‖
- 이 때, n≥3 을 만족해야 문제를 풀 수 있는 조건이 됩니다.

- 먼저 위 슬라이드의 식과 같이 pi 와 p′i 각각의 중앙점인
centroid
인 ˉpi,ˉp′i 를평균값
을 이용하여 구합니다. - 그 다음 ri=pi−ˉpi 와 r′i=p′i−ˉp′i 를 구합니다. 이 값은 기존 각 좌표의 기준점이 각 카메라의 원점인 상태를 좌표들의 중앙점으로 바꾼 것입니다. 이 치환식의 정의에 따르면 ri,r′i 각각은 각 점 pi,p′i 가
centroid
인 ˉpi,ˉp′i 로 부터 얼만큼 떨어져 있는 지 나타냅니다. - 이와 같이 사용하는 이유는 두 점군들의 관계를 t 와 상관없이 R 로만 나타낼 수 있기 때문입니다. 기존에는 하나의 원점을 기준으로 두 점군의 좌표 값이 나타내어졌다면
centroid
를 이용하면 각 점군이centroid
로 부터 얼만큼 떨어져 있는 지 나타내기 때문에centroid
기준의 좌표계를 가지게 됩니다. 따라서 각 점의 좌표는centroid
와의 거리 차이를 나타내는 벡터가 되고 각 벡터 ri,r′i 의 회전 차이인 R 만 구하면 되는 문제로 바뀌게 됩니다. 따라서 이와 같은 방법을 사용합니다.

Roatation
행렬 R 을 구하기 위하여 먼저 다음과 같은 행렬 M 을 먼저 계산합니다. M 은sum of outer product
를 나타내며 각 ri,r′i 의 각 좌표축 별 상관관계를 나타냅니다.
- M=n∑i=1r′irTi
- 만약 r′i=(x′i,y′i,z′i)T, ri=(xi,yi,zi)T 라고 하면 i 인덱스에 대한 행렬 연산의 결과는 다음과 같습니다.
- r′irTi=[x′ixix′iyix′iziy′ixiy′iyiy′iziz′ixiz′iyiz′izi]
- 위 행렬은 두 벡터의
correlation
을 의미합니다. 각 i 번 째 벡터 간의 연산을outer product
한 다음 생성된 행렬을element-wise sum
을 하면 원하는 행렬인 M 을 얻을 수 있습니다. M 은 두 점군의 전체correlation
의 누적된 정보를 의미합니다. 직관적으로 M 은 변환된 점이 상대 위치와 방향 측면에서 원래 점과 어떻게 관련되어 있는지 나타냅니다. 행렬 M 의 의미를 정리하면 다음과 같습니다.
- 행렬 M 의 대각 요소는 해당 원래 점을 기준으로 변환된 점의 x,y,z 구성 요소의 분산을 나타냅니다.
- 행렬 M 의 비대각 요소는 변환된 점의 x,y,z 구성 요소와 해당 원래 점 사이의 공분산을 나타냅니다.
- 행렬 M 에 의해 정의된
correlation
정보는 위 슬라이드의 행렬 Q 를 통하여normalized
하여 두 점 군을 가장 잘 정렬하는 회전 행렬 R 을 유도하는 데 사용 됩니다. - 아래 내용 전개 시, 특이값 분해 내용이 사용되므로 관련 내용은 아래 링크를 참조하시면 됩니다.
- M=UΣVT, Singular Value Decomposition
- Q=MTM=(UΣVT)T(UΣVT)=(VΣTUT)(UΣVT)=V(Σ2)VT
- Q−1/2=V(Σ2)VT=VΣ−1VT
- MQ−1/2=(UΣVT)(VΣ−1VT)=U(ΣΣ−1)VT=UVT
- 마지막으로 구한 UVT 는
orthogonal matrix
이며 행렬 M 의rotation
을 의미합니다. 위 식에서 M 에 Q−1/2 를 곱함으로써scaling
및shearing
요소들을 제거하여 순수하게rotation
정보만을 얻을 수 있었습니다. - 행렬 Q=(MTM)−1/2 이기 때문에
normzalization
을 위한 스케일 값만을 제거해주는 역할을 하는 것을 식을 통해서도 알 수 있습니다.
- 다음과 같이 특이값 분해의 본연의 성질을 시각화한 것을 살펴보면 앞의 설명을 이해하실 수 있을 것입니다.

- 따라서 지금까지 식의 전개 내용을 살펴보면 다음과 같습니다.
- ① 각 좌표를
centroid
를 기준으로centroid
와의 거리 차이를 나타내는 벡터로 표현합니다. - ② 두 점군의 벡터 ri,r′i 의
correlation
을 나타내는 행렬 M 을 구합니다. M 은rotation
정보 뿐 아니라scaling, shearing
등의 정보 또한 포함하고 있습니다. 따라서 MQ−1/2=M(MTM)−1/2 을 통해Normalization
을 적용합니다. - ③ 순수한
rotation
정보만을 추출하기 위하여 MQ−1/2 에 특이값 분해를 적용하여rotation
정보를 추출합니다.
- 마지막 ③ 과정에서 특이값 분해 과정을 좀 더 자세하게 살펴보면 다음과 같습니다.
- M=UΣVT
- U : The columns of U represent the principal axes of the transformed point set in the transformed coordinate system.
- V : The columns of V represent the principal axes of the original point set in the original coordinate system.
- Σ : the variances of the transformed points along these principal axes.
- 따라서 M=UΣVT 는 ① VT 를 통하여
original coordinate system
의principal axes
성분을 제거하여normalized space
로principal axes
를 변경하고 ②normalized space
에서 Σ 만큼scale
을 조정한 뒤 ③ 최종적으로 변환하고자 하는transformed coordinate system
으로principal axes
를 변환하는 과정입니다. - 이 때, 필요한 정보는
scale
이 제거된 순수한rotation
정보인 UVT 고 이는 다음과 같은 전개로 구할 수 있음을 확인하였습니다.
- R=MQ−1/2=(UΣVT)(VΣ−1VT)=UVT
- 즉, UVT 는
original coordinate system
을normalized coordinate systme
으로 변환하고 다시transformed coordinate system
으로 변환하기 때문에 순수한 의미의rotation
행렬이라고 볼 수 있습니다.
- 위 식에서 두
orthogonal matrix
의 곱으로 R 을 표현하였기 때문에, RRT=I 이고determinant
또한 1임을 알 수 있습니다.

- 위 슬라이드에서는 이전 슬라이드 식 전개를 위해 Q 의 고유값 분해 시 사용 방법을 기술하였습니다. 앞에서는 고유값 분해의 개선 버전인 특이값 분해를 이용하여 설명하였으므로 같은 논리로 생각하셔도 됩니다.
- 추가적으로 위 슬라이드의 고유값 분해 성질을 이용하여서도 앞에서 구한 R 이
rotation
행렬의 요소인 RTR=I 인 것과 det(R)=1 임을 보일 수 있습니다.
RRT=I
- RTR=(MQ(−1/2))T(MQ(−1/2))=(Q(−1/2))TMTMQ(−1/2)=(Q(−1/2))TQQ(−1/2)=(Q(−1/2))TQ(1/2)Q(1/2)Q(−1/2)
-
다음 성질들을 이용하여 식을 전개해 보도록 하겠습니다.
- Q(−1/2)=VΛ(−1/2)VT,where Λ(−1/2) is a diagonal matrix with the square roots of the eigenvalues.
- Q(1/2)=VΛ(1/2)VT,where Λ(1/2) is a diagonal matrix with the square roots of the eigenvalues.
- Λ(−1/2),Λ(1/2) are reciprocals of each other.
- VTV=VVT=I
- ∴(Q(−1/2))TQ(1/2)Q(1/2)Q(−1/2)=(VΛ(−1/2)VT)T(VΛ(1/2)VT)(VΛ(1/2)VT)(VΛ(−1/2)VT)=VΛ(−1/2)VTVΛ(1/2)VTVΛ(1/2)VTVΛ(−1/2)VT=VVT=I
det(R)=1
- det(R)=det(MQ(−1/2))=det(M)det(Q(−1/2))=det(M)det(VΛ(−1/2)VT)=det(M)det(V)det(Λ(−1/2))det(VT)=det(M)det(Λ(−1/2))
- 식의 전개를 위해 Λ(−1/2) 를 살펴보겠습니다.
- Λ(−1/2)=diag(1/sqrt(λ1),1/sqrt(λ2),⋯,1/sqrt(λ1n))
- det(Λ(−1/2))=1/sqrt(λ1)∗1/sqrt(λ2)∗⋯∗1/sqrt(λ1n)=1/sqrt(λ1∗λ2∗⋯∗λn)=1/sqrt(det(Λ))=1/sqrt(det(Q))
- 따라서 앞의 식을 다음과 같이 전개할 수 있습니다.
- det(R)=⋯=det(M)det(Λ(−1/2))=det(M)/sqrt(det(Q))=det(M)/sqrt(det(MT)det(M))=det(M)/det(M)=1
- 따라서 det(R)=1 임을 확인할 수 있습니다.









































