Fundamental Matrix를 구하는 방법
0. Point를 정규화 한다.
이미지 크기 width, and height 의 최대 크기인 M으로 데이터값을 나누어주어 scaling 하자.
이미지 크기 구하는 함수 [python] : size
이때 변환 행렬 T를 이용하자.
마지막에 F를 계산한 후에는 unscale 한다.
x_norm = Tx
F_unnorm = T'FT
1. 선형 시스템을 구성하자.
M개의 점이 매칭되어 있을 때 에피폴라 제약에 따라 다음을 만족해야 한다.
F는 3x3 행렬이므로 9개의 unknowns를 homogeneous 선형 시스템으로 풀자.
F를 f1~f9 로 나타내고, 점을 homogeneous 로 표시하여 정리하면,
2-3. A에서 SVD로 X (=F)를 알아내자.
[주의!] homography와 다른점
x,y point 좌표가 아닌 1개의 scalar 식만을 만든다. 즉, 적어도 8 point 쌍이 있어야 해를 계산가능!
4. Unscaling 수행전에 F 행렬에 rank2 제약을 준다.
valid fundamental matrix F는 한점에서 모든 에피폴라 라인이 교차되어야 한다.
그러나 일반적으로 실제적인 포인트들에 대해 8 point algorithm 은 이 조건에 만족하지 못하는 경우가 많다.
강제적으로 rank2 제약을 주기위해, F를 SVD 분리하자.
F = UΣV'
그리고 Σ 행렬(diagonal matrix)에서 가장 작은 singular value = 0 으로 셋하여 rank2를 만들 수 있다. 이를 ε 라고 하면
F_rank2 = UεV'
5. 구한 F를 제련하자 (Refine)
해를 제련하기 위해 geometrix cost function을 만들어 locally minimizing 하자.
F를 unscaling 전해 할것.!
6. Unscaling 수행하여 원래 크기로 전환한다.
'VISION > Stereo Vision' 카테고리의 다른 글
Stereo Vision : Rectification (0) | 2022.04.17 |
---|---|
Stereo Vision : Match (0) | 2022.02.05 |
Stereo Vision : Rectification 예제 (Matlab) (0) | 2022.02.02 |
Stereo Vision : Triangulation (0) | 2022.01.22 |