
$s_i$와 $X_O$를 구하기 위한 머나먼 여정을 떠난다. 우선 벡터의 내적을 이용하여 각도를 구한다. ${\alpha},{\beta},{\gamma}$ 는 모두 실수 값으로 알려져 있는 값이다.
P3P 는 직접 해결 방법([[Math Terminology:](https://janghoo.notion.site/Terminology-0ad773c6278b40bc8210e8d5eedec68d) Direct solution](https://janghoo.notion.site/Direct-solution-a87ef02194c8465a98c4a03bb809baf3))의 일종으로(sup1), 위 그림의 $s_i$와 $X_O$를 구하는 로컬라이제이션(localization) 문제다.
$$ s_i{~^k{\mathrm{x}^s_i}}=\mathrm{R}(X_i-X_O),\ i=1,2,3 $$
| 해석 순서 | ‣ | 의미 | 알려짐 여부 |
|---|---|---|---|
| 1 | ${~^k{\mathrm{x}^s_i}}$ | 카메라 원점 좌표계의 언어로 해석한 카메라 원점 $X_O$에서부터 카메라 원점 좌표계의 언어로 해석한 월드 좌표 $X_i$로 향하는 방향의 단위벡터(direction unit vector). $k$는 캘리브레이션을 통해 카메라 내부 파라미터를 모두 알고 있음을 의미함, | known |
| 2 | $s_i$ | 단위벡터 ${~^k{\mathrm{x}^s_i}}$ 의 스케일 | unknown |
| 3 | $s_i{~^k{\mathrm{x}^s_i}}$ | 카메라 원점이 시점이고 점 $X_i$이 종점인 벡터를 카메라 원점 좌표계의 언어로 해석한 벡터 | unknown |
| 4 | $X_i-X_O$ | 월드 좌표계의 언어로 해석한 카메라 원점 $\mathrm{X}_O$에서부터 월드 좌표계의 언어로 해석한 월드 좌표 $X_i$로 향하는 방향과 크기를 가진 벡터 | $X_O$: unknown |
| $X_i$: known | |||
| 5 | $\mathrm{R}$ | 월드 좌표계와 카메라 좌표계의 변환을 모델링하는 회전 변환 행렬 | unknown |
우리는 P3P 문제를 풀 때, 카메라 캘리브레이션이 완료되어 있다고 전제한다. 또한 이는 로컬라이제이션 목적으로 만들어진 알고리즘이므로, 월드 좌표계의 언어로 해석한 월드 좌표값을 의미하는 $X_i$를 알고 있음을 전제한다. 따라서 우리는${~^k{\mathrm{x}^s_i}}$을 알고 있다. ${~^k{\mathrm{x}^s_i}}$는 다음과 같이 표현할 수 있다.
$$ {~^k{\mathrm{x}^s_i}}=-\mathrm{sign}(c)\mathrm{N(K^{-1}x}_i) $$
| 해석 순서 | ‣ | 의미 | 알려짐 여부 |
|---|---|---|---|
| 1 | $\mathrm{x}_i$ | 카메라 원점 좌표계의 언어로 해석한 카메라 원점에서 이미지 좌표계의 언어로 해석한 이미지 평면 위의 점으로 향하는 크기와 방향을 가진 벡터 | known |
| 2 | $\mathrm{K^{-1}x}_i$ | 카메라 원점 좌표계의 언어로 해석한 카메라 원점에서 카메라 원점 좌표계의 언어로 해석한 정규 이미지 평면 위의 점으로 향하는 크기와 방향을 가진 벡터 | known |
| 3 | $\mathrm{N(v)}$ | 길이가 1인 단위벡터로 만들어주는 함수 | known |
| 4 | $c$ | 카메라 상수(constant), 카메라 원점과 이미지 평면 사이의 거리. c는 카메라 원점과 이미지 센서 사이의 거리를 의미한다. 그런데 이 거리는 보통 카메라 렌즈와 카메라 원점의 반대 방향을 양의 방향으로 표현하곤 함. 따라서 이 값은 음수가 될수도 있음. $\mathrm{sign}$은 이를 보정하기 위해 존재 | known |
아래부터는 이 식을 풀어 나가는 과정이다.

코사인 법칙을 이용하여 $s_1, s_2$ (모르는 값) ${\gamma}$ (내적을 통해 구한 각도값) $c$ (처음부터 알고 있었던 카메라 상수) 사이 관계식을 세운다. 이를 $a,b$ 에 대해서도 당연히 똑같이 적용한다.

식 정리의 편의를 위해 $u,v$ 를 만들고 이를 이용해 식을 다시 쓴다.

변수는 $u,v$ 이지만 관계식이 두 개이므로 (첫번째 식=두번째 식, 두번째 식=세번째 식), $u,v$ 둘 중 하나를 남기고 정리할 수 있다.



$A_p$ 는 모두 알려진 수들만으로 구성되어 있다.

4차방정식을 정리하면, $v$ 를 얻을 수 있고, $v$ 를 얻을 수 있으면 $s_1, s_2, s_3$ 를 모두 구할 수 있다.
$s_1, s_2, s_3$ 를 모두 얻었다면, 맨 처음 식을 다시 살펴보자.
$$ s_i{~^k{\mathrm{x}^s_i}}=\mathrm{R}(X_i-X_O),\ i=1,2,3 $$
$s_i{~^k{\mathrm{x}^s_i}}$는 점 $X_i$을 카메라 원점 좌표계의 언어로 해석한 좌표값이라고 했다. $s_i{~^k{\mathrm{x}^s_i}}$와 $X_i$ 를 알고 있다. 점이 3개 있으므로 관계식은 6개, 구해야 하는 파라미터가 6개이므로 회전변환행렬 $\mathrm{R}$과 $X_O$를 구할 수 있다. 이를 연산하는 과정은 추후 서술하도록 하겠다.

전체적인 파이프라인