Perspective structure from motion
앞서서는 간단한 affine한 경우를 알아봤고, 이제는 좀 더 일반적인 projective cameras 에 대해 알아본다.
Projective cameras
Affine 의 경우에는 affine transformation을 structure 행렬, motion에 해줬던 것처럼,
이 경우에는 projective transformation을 struture, motion 행렬에 적용해줄 수 있다.
(motion matrix에는
그렇게 해도 결과적으로 image plane에서의 observations은 달라지지 않는다.
Affine의 경우와 마찬가지로
카메라와 점들은 up to scale로
따라서 이를 이용해서 필요한 view와 observation의 개수를 결정할 수 있다.
The algebraic approach

두 카메라에 대한 SFM을 구하기 위해 fundamental matrix
이 대수적 접근법의 주 아이디어는 perspective transformation
각 카메라 행렬
마찬가지로 두 번째 카메라에도 다음과 같이 똑같은 transformation이 적용돼야 한다.
일단 이 문제를 해결하기 위해서는 eight point algorithm을 이용해서 fundamental matrix
그 후,
우선, 대응하는 observations
우리가 두 camera projection matrix에 똑같이
따라서, pixel 좌표
그리고
양변에
과 같고, cross product의 정의에 따라,
따라서,
이 성립한다. 그런데 마지막 식의 꼴을 보면 fundamental matrix의 정의인
만약
그렇다면, 먼저
Cross product의 정의에 따라,
다음은
이므로 따라서
따라서 다음과 같이 카메라 행렬
단순히 식만 유도해내는 게 아니라,
Epipole 또한
따라서
따라서 다음과 같이 camera projection camera의 식을 변형할 수 있다.
Determining motion from the Essential matrix
대수적 접근으로 reconstruction이 좀 더 잘되게 하려면 calibrate된 카메라를 사용하는 것이다.
앞서서 우리는 calibrate된 카메라의 경우 essential matrix를 썼었다.(fundamental의 특별한 경우, 즉 normalized coordinates)
또한, 다음과 같은 식도 우리는 알고 있다.
Essential matrix의 경우는 calibrated camera의 경우이므로, 5의 자유도 즉 extrinsic parameter의 정보만을 encode하고 있다. (회전과 이동)
공교롭게도, 이
먼저 essential matrix
그러므로
먼저, cross product 행렬인
그래서 여기서 분해에 사옹할 두 개의 행렬을 먼저 정의해보면,
(여기서 나중에 사용할 중요한 성질은,
Eigenvalue decomposition을 하면 up to scale로 다음과 같이 분해를 할 수 있다.
(
따라서, 이 분해를 다음과 같이 바꿔 쓸 수 있다.
자세히 보면, SVD꼴인
따라서 다음과 같이
(위와 같은 factorization만이 가능함이 가능하고 타당함을 증명할 수 있지만 생략)
이런
그리고 이
회전 행렬
Cross product의 정의에 따라,
이며,
따라서,
(
뿐만 아니라

위 그림처럼 4가지 가능한
그러므로 이상적인 조건 하에서, 단 하나의 점만 있으면 정확한
올바른
Measurement noise로 인해 보통 하나의 점에 의존하지는 않고, 여러 점으로 triangulate를 진행하여 대부분의 점들이 카메라들의 앞쪽에 있도록 하는 올바른
An example structure from motion pipeline
Motion 행렬
대수적 접근의 경우, 그런 점들의 추정치는 perspective transformation
Essential matrix로부터 카메라 행렬을 추출해낼 때, 이 추저이는 up to scale하다.
두 경우 모두 3D 점들은 앞에서 다뤘던 triangulatio method를 이용해 추정된 카메라 행렬에 의해 계산된다.
Multi-view로의 확장은 여러 카메라를 연결하여 수행할 수 있다.
어떤 카메라의 pair이던간에 충분한 대응점이 있다면, 앞서 다뤘던 대수적 접근법이나 essential matrix를 이용해 계산해낼 수 있다.
이렇게 reconstructed된 3D 점들은 카메라 쌍에서 사용가능한 포인트 대응에 연관이 된다.
이러한 pairwise solutions들은 bundle adjustment라는 기법을 통해 최적화될 수 있다.
Bundle adjustment
이전 방법들의 경우 한계점이 있었다.
Factorization의 경우 모든 점들이 모든 image에서 보인다는 가정을 했었다.
하지만 실제로는 대응점을 찾기가 어렵거나 안 보일 때가 많다.
따라서, 대수적 접근이 카메라들을 연결하여 결합한 solution을 만들수는 있지만, 모든 카메라와 3D 점들을 사용한 일관되고 최적화된 reconstruction은 풀 수가 없다.
이런 문제점을 해결하기 위해 nonlinear method인 bundle adjustment를 알아보자.
최적화에서는, estimated된 카메라로의 reconstructed point의 projection과 대응하는 observation사이의 pixel 거리인 reprojection error를 줄이는 것이 목표이다.
앞서 triangulation에서 다뤘던 nonlinear optimization에서는 두 개의 카메라의 경우를 가정했었고, 또 모든 대응점이 각 카메라에서 보인다고 가정했었다.
Bundle adjustment는 여러 개의 camera를 다루지만, 각 카메라에서 보이는 observation에 대해서만 reprojection error를 계산하므로, 앞서 배운 triangulation에서의 nonlinear method와 상당히 유사하다.
이런 bundle adjustment를 풀기위한 대표적인 방법으로 Gauss-Newton 알고리즘과 Levenberg-Marquardt 알고리즘이 있다.
Bundle adjustment는 많은 수의 view에 대해서도 쉽게 처리를 할 수 있고, 모든 이미지에서 관찰되지 않은(일부 이미지에서만 해당 점이 관찰됨) 경우일지라도 처리를 할 수 있다.
하지만 view의 수가 많아질수록 파라미터의 수가 늘어나고, nonlinear optimization technique에 의존하므로 초기 조건이 매우 중요할 수 있다.
따라서, bundle adjustment는 보통 SFM의 마지막 단계에서 구현이 된다.
즉, factorization이나 algebraic approach를 이용해 합리적인 초기해를 구해 놓고, bundle adjustment를 진행하는 것이다.
더 자세한 factorization과 nonlinear method와 구현코드가 궁금하다면
https://github.com/ianpark318/CS231A/blob/main/ps2/ps2_code/PSET2.ipynb 참고
'3D\Multiview Geometry > CS231A' 카테고리의 다른 글
CH04. Stereo Systems (1) (1) | 2023.03.02 |
---|---|
CH03. Epipolar Geometry (2) (0) | 2023.02.24 |
CH03. Epipolar Geometry (1) (0) | 2023.02.12 |
CH02. Single View Metrology (2) (0) | 2023.02.09 |
CH02. Single View Metrology (1) (0) | 2023.02.08 |