Perspective-n-Point (PnP)
•
3D 나 2D Correspondences 를 이용해서 Camera Pose () 를 구하는 것.
•
Intrinsic Parameter 를 알고 있는 상태 (Calibrated) 에서 Camera Pose 를 얻어내는 것이 일반적임.
Recall: With Known 3D-3D Correspondences
•
Projection Matrix 를 구하기 위해서 6개의 corresponding points 와 DLT 알고리즘이 필요했음.
•
구한 를 decomposition 하여 를 구할 수 있었음.
•
다만, PnP 에서는 를 알고 있기 때문에 이와 같은 방법을 사용하는 것이 비효율적임.
Decomposition with the Known K
•
이미 알고 있는 를 활용해 를 구할 수 있음.
•
위 식에서, 은 rotational matrix 이기 때문에 SVD 를 하면 임. 때문에 아래가 성립함.
•
인데, 앞선 식에서 기존 SVD 에서 diagnoal term 이 에서 빠졌기 때문에 (Up-to-Scale 이어서 rotational matrix 의 특성을 지키기 위해 나눠진 값) 이를 마찬가지로 나누어주어야 함.
How to Compute Given Known
•
는 5DoF 이고 는 11DoF 이기 때문에 를 알면 6DoF 만 남음.
•
이론적으로 3 Corresponding Points 만을 사용하면 를 구할 수 있음.
•
필요한 Corresponding Points 의 수 에 따라서 PnP 로 명명함.
◦
P3P, P4P, PnP, EPnP (Efficient PnP) 등임.
P4P (Planar Cases)
•
3D 와 2D 간 4 개의 Corresponding Points 를 알면 Homography 를 계산할 수 있음.
•
로부터 를 구하는 것은 Zhang’s Method 에 따름.
◦
기존 Zhang’s Method 는 을 구하기 위해서 3 개의 서로 다른 Homography 를 필요로 했는데, 여기선 를 이미 알고 있으니 그럴 필요가 없음.
◦
와 Homography 를 알면, 를 바로 구할 수 있었음.
P3P (General Cases)
•
3D 와 2D 간 3 개의 Corresponding Points 를 알면 Camera Pose () 를 계산할 수 있음.
•
는 3D 대응점들 간의 거리를, 는 대응점끼리의 연결선끼리 이루는 각도를 의미함.
•
는 그냥 좌표간 euclidean distance 를 통해 쉽게 계산 가능하고, 는 2D → 3D 의 reverse projection 기반의 식에서 와 2D 상의 점들을 모두 알고 있기 때문에 아래처럼 계산이 가능함.
•
코사인 제 2법칙을 이용하면 카메라 중심점으로부터 3D 의 대응점 까지의 각 거리를 구할 수 있는데, 이를 기반으로 최종적인 Camera Ceneter 의 위치를 알 수 있음. (3D 대응점을 중심으로 하는 세 구의 교점 위치)
◦
다만, 위 식은 4 개의 해 쌍들을 가지기 때문에 어떤 것이 답인지 명확하진 않음.
•
마찬가지 방법으로 3D 대응점이 아닌, 2D 대응점들에 대해서 동일하게 진행하면 구한 Camera Center 로부터 2D 대응점까지의 거리를 알 수 있고, Camera Rotation 정보도 알 수 있음.
PnP
•
3D 와 2D 의 개의 대응점이 있는 경우에 Camera Pose 를 얻는 방법론임.
•
일반적으로 3D 상에 Non-Coplanar 한 4 개의 점 (Control Points) 을 선택하면, 나머지 모든 점들을 해당 4 개의 좌표의 weighted sum 형태로 표현할 수 있음.
◦
재미있는 점은, Camera Coordinate 로 바뀌어도 이 관계는 weight 가 동일하게 성립한다는 것임.
•
위 관계를 이용해서, Camera Coordinate 에서 3D → 2D projection 관계를 세워보면 Intrinsic Matrix 를 곱하는 형태가 되고, 다음과 같은 식을 얻을 수 있음.
◦
Up-to-Scale 의 식을 등호로 바꾸기 위해서 항목이 들어가 있는데, 마지막 항의 단순 비교를 통해 다음과 같이 를 구해낼 수 있음.
•
해당 식을 풀어서 쓰면 다음과 같이 두 개의 equation 을 얻을 수 있음.
•
최종적으로, World Coordinate 의 4 개의 Control Points 의 Camera Coordinate 대응점을 찾기 위해서 12 개의 unknown 으로 이루어진 vector 를 찾아내기 위한 DLT system 을 구축할 수 있으며 그러기 위해서는 최소 6개 이상의 대응점이 필요함.
•
DLT 를 통해서 Control Points 의 Camera Coordinate 대응점을 찾았으면, 는 다음과 같이 reprojection error 를 최소화도록 찾을 수 있음.
◦
구체적인 최적화 방법론은 아직 다루지 않음.