4-1/컴퓨터비전개론

9주차-Epipolar Geometry

Donghun Kang 2025. 6. 7. 16:42
  • Camera Pair
- 이미지를 촬영한 2가지 위치(또는 상태)의 조합
- 찍히는 피사체는 움직이지 않고 고정, 카메라는 움직여도 상관 없다.
# A stero camera: 카메라 2개일 때
# Multiview stero camera: 카메라 2개 이상

 

  • Orientation
- 카메라 pair의 방향(Orientation)은 각 카메라의 독립적인 방향으로 설명할 수 있다.
Q) 얼마나 많은 parameter가 필요할까?

A) Unknown parameter 개수(2view)는
- Calibrated 카메라 : 12개 parameter
(K matrix를 알고 있다.) 
(angle preserving mapping)
=> unkonwn parameter:6개(Extrinsic-R,T) x 2(카메라2대) = 12개

- Uncalibrated 카메라 : 22개 parameter
(K matrix를 모른다.)
(Straight-line preserving mapping)
=> 서로 다른 카메라 2개 K가 다르다.
=> 한대 당 11개의 parameter 모른다.
=> unkonwn parameter:11개(Ex+ In) x 2(카메라2대) = 22개

 

 

# 구할수 없는 것

  • Cameras Measure Directions
- 우리는 (Global) Translation과 Rotation 그리고, 카메라의 상대적인 변환을 유지하는 한 Scale을 얻을 수 없다.
=> 2D 이미지로 찍었다고 하더라도 scale ambiguous(애매함)을 해결 할 수 없다.
Global T, R은 알 수가 없다.
=> 2개의 카메라가 상대적으로 어떻게 T, R되어 있는지 알 수 없다.
=> 실질적으로 동서남북 어디를 보고 있는지는 알 수 없다.
==> 서로가 서로간의 "relative orientation"은 알 수 있다.
==> 각각 R, T가 얼만인지는 알 수 없다.
- 2D 이미지 정보만 가지고는 “Global Translation”나 “Global Rotation”, “Global Scale”를 알 수 없다.
=> 우리가 얻을 수 있는 건 카메라 사이의 상대적인 방향과 관계(relative orientation)

 

# 구할 수 있는 것(5개만 알수 있다.)

1. 첫 번째 카메라에 대해 두 번째 카메라의 회전(R)

- 첫 번째 카메라에 대해서 상대적인 두 번째 카메라의 R(회전)을 구할 수 있다.
=> 3개 parameters

 

2. Projection center들을 연결하는 선의 방향(direction B)

- 첫 번째 카메라로부터 두 번째 카메라가 떨어져 있는 방향성을 알 수 있다.
=> 2개 parameters

 

** 두 카메라 간의 실제 거리(즉, B의 길이)는 알 수 없다.

- scale은 모르고 떨어져 있는 방향만 알 수 있다. 
=> B: 방향은 알 수 있지만 length는 알 수 없다.

 


 

  • Calibrated Cameras (K-내부 파라미터를 안다.)
- 두 대의 calibrated 카메라의 자세(orientation)를 위해서는 2x6=12개의 파라미터가 필요하다.
- calibrated 카메라를 사용하면, 물체의 각도(angle)를 보존하는 모델을 얻을 수 있다.
- 추가적인 정보가 없다면, 12개의 파라미터 중 7개(첫 번째 카메라의 R, T, 그리고 두 카메라 사이의 거리)는 알 수 없고, 결국 5개의 파라미터만 얻을 수 있다.
3개: 두 번째 카메라의 첫 번째 카메라에 대한 상대적 회전(R)
2개: 두 카메라 중심을 잇는 선의 방향(B)

여기서 7개의 파라미터(translation, rotation, scale)는 알 수 없다.
(첫 번째 카메라의 R, T / 두 카메라 사이의 거리)

 

  • Photogrammetric Model
- Calibrated 카메라 두 대로 찍은 이미지로부터, 우리는 물체를 오직 similarity transform(유사 변환)까지 (즉, 크기(scale)에는 애매함이 있음) 로만 복원할 수 있다.
- 이런 모델을 photogrammetric model이라고 부른다.
  • absolute orientation
- photogrammetric model의 orientation 
=> orientation까지 모두 구할 때 사용.

- absolute orientation를 얻으려면, 최소 3개의 3D 점이 필요하다 (7개의 파라미터를 추정하기 위해).
=> 2개의 점이면 최대 6개까지, 3개의 점이면 9개 좌표(3D)까지 구할 수 있다.

 


 

  • Uncalibrated Cameras (K-내부 파라미터를 모른다.)
- Object는 straight-line preserving mapping(projective transform: 15개의 파라미터)까지만 복원할 수 있다.
- 따라서, Uncalibrated 카메라로 두 이미지를 찍었을 때 총 22개의 파라미터 중 15개는 알 수 없으므로, 결국 7개의 파라미터만 구할 수 있다.
* 15 = 4x4 행렬 (homogeneous coordinate) 16개 중에서 scale 1개를 뺀 16-1=15개

- 절대 자세(absolute orientation)를 얻으려면, 최소 3D point 5개(15개의 파라미터)가 필요하다.


  • Relative Orientation Summary 

 

  • RO (relative orientation): 상대 자세
    (두 카메라 사이의 상대적인 위치와 방향)
  • AO (absolute orientation): 절대 자세
    (절대적인 위치와 방향, scale까지 포함)
  • min #P: AO(절대 자세)를 추정하는 데 필요한 최소 3D 점의 개수 (control point)

 


 

  • Coplanarity Constaraint
- 완벽한 자세(orientation)와 두 대응 광선(rays)의 교차를 생각해 보자.
- 이 광선들은 3차원 공간에서 하나의 평면(plane) 안에 존재한다.
  • Coplanarity Constraint for Uncalibrated Cameras
- 벡터 O′X' , O′′X′′의 방향은 이미지 좌표 x′,x′′ 로부터 도출될 수 있다.
=> 즉, 이미지 상의 점들로부터 3D 점을 향하는 ray의 방형을 알 수 있다.

 

  • Scalar Triple Product
3개의 벡터 한 평면 상에 존재

- 3개의 벡터로 이루어진 평행육면체의 부피에 해당한다.
- 세 벡터가 평면 상에 있다면 triple product가 0

 

  • Directions to a Point
- 벡터 O′′X′′ 및 O'X'의 normalized directions vectors

- 2번째 카메라에 대해서도

 

  • Base Vector
- 기저 벡터(baseline) O′O′′는 두 카메라의 중심 좌표로부터 직접 얻어진다.

 

  • Coplanarity Constraint
- scalar triple product에 의해 아래 식이 성립
* 위 식이 같은 이유는 아래와 같다. (R은 직교행렬이기 때문)

Q) 이 수식 2개는 왜 같지?
A) Skew-symmetric matrix 정의
시험) 과정을 이해 / Derivation 과정을 적어 놓고 빈칸을 채우시오 / 사이 사이에 뭐가 들어갈지 적으시오

 

 

  • Fundamental Matrix
- 행렬 F는 Fundamental Matrix로, 보정되지 않은 카메라(uncalibrated cameras) 간의 관계를 나타낸다.
외울 필요 X
- F는 카메라 2대에 대해 단 하나 존재하며, 어떤 대응점을 넣더라도 다음 제약식을 만족한다:
이건 알아야 한다.

=> F는 위 식을 만족하는 행렬식 / 이 식은 두 이미지에서 대응점(corresponding points) 쌍이 존재할 때 성립

- Fundamental Matrix는 두 이미지 사이의 "Relative Orientation"에 대한 모든 정보를 포함하고 있다.

 

  • Fundamental matrix from the camera projection matrix
Q) Projection Matrix P′,P′′ 가 주어졌을 때, Fundamental Matrix F 를 유도할 수 있을까?

- Projection matrix를 아래와 같이 분할한다.

 

[Projection center 구하는 법]
[base line 구하는 법]
두 카메라 중심의 차
[Fundamental matrix 구하는 법]

- Projection matrix로부터 F를 구할 수 있다.(Sb를 구성)
시험) Projectiob matrix 2개를 주었을 때 두 카메라의 F matrix를 구하시오

 


  • Using Calibrated Cameras
- 대부분의 사진측량(Photogrammetric) 시스템은 **보정된 카메라(calibrated cameras)**에 의존한다.
- 보정된 카메라는 **자세 추정 문제(orientation problem)**를 단순화한다.
- 일반적으로 두 카메라는 **동일한 내적 행렬(K)**을 가진다고 가정한다.
- 또한, 왜곡(distortion)이나 기타 영상 오류가 없다는 전제 하에 작업한다.

 

  • Coplanarity Constraint for calibrated cameras
- calibrated 카메라에서는 coplanarity constraint을 더 간단하게 표현할 수 있다.
- K를 이용하여 다음과 같이 direction을 계산할 수 있다.

=> Fundamental Matrix와 동일한 형태지만, 내부 파라미터를 제거한 Essential Matrix 형태

 

  • Essential matrix
- 우리는 Fundamental Matrix의 특수한 경우(specialization)로서 Essential Matrix를 도출
- Calibrated cameras에서는 이를 Essential Matrix라고 부른다.
Essential matrix
coplarity constraint for calibrated cameras

- Essential Matrix는 5 DOF(Degrees of Freedom)를 가진다. (F는 7DOF)
- 이 5개의 파라미터는 두 이미지 사이의 Relative Orientation을 결정한다.
- Essential Matrix는 homogenous이며 singular matrix (F도 singular 하다 - rank = 2)
* singular: full rank가 아닌 matrix / regular: full rank인 matrix

 


 

  • Triangulation

- 두 카메라가 있다면 3D 복원이 가능하다. 

 

  • Epipolar geomatry

 


- Epipolar Plane
: 점 , 두 카메라 중심을 포함하는 평면

- Epipolar Line: Epipolar Plane과 이미지 평면의 교차선

- Epipoles (e, e'): 한 카메라의 중심이 다른 이미지에 투영된 점

- Baseline: 두 카메라 중심을 잇는 직선

[성질]

  • Epipolar Plane은 baseline을 항상 포함
  • 하나의 3D 점마다 하나의 Epipolar Plane 존재
  • Epipole은 고정됨 (카메라 움직임에 따라 바뀌지 않음) (camera center는 변하지 않기 때문)
    baseline도 변하지 않는다.

- C,C′,x,x′,X는 모두 같은 Epipolar Plane π 위에 있다.


epipoles e,e’ : baseline 이미지 평면의 교차점
epipolar plane : baseline 포함한 평면
epipolar line : Epipolar Plane과 이미지 평면의 교차

- 왜곡 없는 렌즈를 사용할 경우 다음 요소들은 모두 같은 Epipolar Plane 위에 존재한다.=> 
=> 다른 이미지에서의 대응점을 예측하기가 쉬워진다.

 


  • Predicting the Location of Corresponding Points
- Corresponding point를 찾는 방법
- task : 주어진 x'(첫번째 이미지의 점)에 대해 두번째 이미지에서의 대응점(corresponding point) x''의 위치를 예측
- 원리는 아래와 같다.
1. epipolar plane π=(X,C′,C′′)
3D 점 X와 두 카메라 중심 C′,C′′를 지나는 평면

2. epipolar line l′′
epipolar plane과 두 번째 이미지 평면의 교선

3. 대응점 x′′
반드시 epipolar line l′′ 위에 위치

=> 검색 공간이 2D에서 1D로 축소됨! 

EX)

 

  • Baseline (Epipolar Axis)
- Epipolar Axis의 방향은 두 카메라 투영 중심 간의 위치를 통해 계산할 수 있다.

=>  방향만 알고 길이는 모른다

 

  • Epipolar Lines
- 이미지 상의 점들은 epipolar line 위에 존재한다

- 점 x′,x′′에 대해서, 우리는 다음을 활용할 수 있다.

- 다음과 같이 구할 수 있다.

  • Epipoles
- Epipole은 다른 이미지 상의 투영 중심의 투영점이다. (한 이미지에서 본 상대방 카메라의 중심 위치를 의미)
- 두 epipole 모두 투영 행렬을 이용해 쉽게 계산 가능하다.
  • Epipoles and Fundamental Mat.
- epipole은 모든 epipolar line의 교차점이다.
- 두 번째 epipole에 대해서는 다음이 성립한다. (F의 transpose를 없애는 쪽으로 정리)

=> 정리하면

 


  • Epipolar Geometry Summary
- 우리는 straight-line preserving (uncalibrated)camera 만 가정하였다.
- 그림으로 epipolar geometry 관계 알고 있기
- epipolar geometry는 이미지 쌍 간의 대응점을 찾는 문제를 2D 공간에서 1D 선 위로 축소한다.

 


 

Q) "오직 이미지 상의 대응점만 가지고 F를 계산할 수 있을까?"

 

A) 

Fundamental matrix F를 구하겠다!

Given: 각 corresponding point에 대해 아래 조건이 성립한다.

 

* 여기서 문제점은

  • 일반적인 최소제곱법(Least Squares)에서는 미지수 벡터를 다루지만,
  • 여기서는 행렬 F의 원소들미지수임.

"행렬 원소들을 어떻게 벡터 형태의 미지수로 바꿀 것인가?"

=> 9개의 행렬 원소 F11∼F331차원 벡터로 만들어 선형방정식으로 변환.

EX)

최종적으로 아래와 같이 표현이 가능하다. 

 

Kronecker Product 이용

SVD를 이용하여 해를 구한다. 해 fA0에 대응하는 우측 특이벡터.

 

"How Many Points Are Needed?

=> A는 최대 랭크 8까지만 가능 → 8-point algorithm의 이론적 기반.

 

- Singular vector

에서 가장 작은 특이값에 대응하는 오른쪽 특이 벡터.

 

 

problem : F는 반드시 랭크 2여야 함
하지만 이 방법으로 구한 F는 일반적으로 랭크 3일 수 있음 

=> 억지로 Rank(F) 2로 만들어 준다!

=> Rank 2 를 만들기 위해 가장 작은 특이값 D33을 0으로 설정한다.

이렇게 하면 F^와 가장 가까운 Rank2 행렬 F를 얻을 수 있다.

 


  • Problems with the 8-point alogrithm
- Af = 0 형태의 선형 시스템에서, 행렬 A가 매우 불균형되어 있다. 
- A의 값들이 비슷한 크기를 가져야 SVD 분해가 안정적으로 이루어짐
- 그렇지 않으면 SVD 결과가 부정확하게 나올 수 있음

이 해결 방법은? => Normalization!

 

  • Normalization
- 수학적으로 SVD가 잘되는 matrix A를 구성하는 것이 좋겠다. (8-point algorithm을 개선)
- 정규화는 이미지 점들의 좌표를 변환(translation & scaling)해서 A의 수치 상태를 개선하는 방법

[정규화 과정]
1. 각 이미지에 대해 변환 행렬 T를 적용
2. 변환 후의 좌표계는 다음 조건을 만족:
원점이 이미지 점들의 중심(centroid) 에 오도록
각 점들이 원점에서 평균적으로 약 2픽셀 거리가 되도록 스케일 조정
=> 정규화를 통해 행렬 A는 더 잘 조건화된(better conditioned) 형태가 되어 SVD 계산이 안정적으로 수행

 

  • The normalized 8-point algorithm
- F를 구할 때 가장 흔하게 사용하는 알고리즘

1. image 1과 2 각각에 대해 정규화 행렬 T, T' 계산
2. image 1과 2의 좌표 정규화 (Normalized coordinates)
3. 정규화된 점들로부터 8-point 알고리즘 적용하여 F^를 계산
변환된 점 쌍 qi,qi′ 를 사용하여 F^ 계산

 

Q) Fundamental matrix F를 구하는 알고리즘 중에 8-point algorithm과 normalized 8-point algorithm이 있다.
기존의 8-point algorithm에서 Normalized 8-point algorithm에 추가된 단계들을 자세히 설명하시오.

A) 기존 8-point 알고리즘은 대응점 8쌍 이상을 통해 선형 시스템 Af=0을 풀어 Fundamental matrix F를 구합니다.
하지만 **정규화(normalization)**가 되지 않으면 수치적으로 불안정해지고, SVD 결과가 왜곡될 수 있습니다.
Normalized 8-point 알고리즘에서는 다음의 2가지 주요 단계가 추가됩니다:

1) 이미지 좌표 정규화 (Normalization)
2) Fundamental Matrix 비정규화 (Denormalization)

[정리]
Normalized 8-point algorithm에서는 기존 알고리즘에 두 단계가 추가된다.
첫째, 대응점들의 좌표를 정규화하여 평균이 원점, 평균 제곱 거리가 √2가 되도록 한다.

둘째, 정규화된 점들로 계산한 F^를 De-normalization하여 
로 변환한다.

이 과정을 통해 수치적 안정성을 향상시키고 더 정확한 fundamental matrix를 얻을 수 있다.

 

  • Singularity

이렇게 해도 안구해지는 경우

  • Points on a Plane
- 만약 모든 대응점이 같은 평면 위에 있다면, rank(A)<8
- 점들이 평면에 가까우면 수치적으로 불안정해진다.

=> point를 구했는데 plane 상에 있는 point들이다.
⇒ rank(A)<8이므로 SVD를 해도 제대로 값을 구할 수 없다.
  • No Translation
- 두 카메라의 투영 중심이 동일한 경우

- 이는 두 이미지 사이의 카메라 이동이 0일 경우 발생한다.
→ 즉, 카메라는 회전만 하고 이동하지 않았다는 뜻.

2장을 찍을 때 카메라를 움직이지 않고 Rotation만 시켰다.
=> camera center가 똑같다.
=> O’ = O’’
==> baseline이 0이어서 F를 구할 수 없다

 


 

  • Summary for 8-point Algorithm
- Fundamental Matrix를 N쌍의 대응점으로부터 추정한다.
- N>7 일 때, **동차 선형 방정식(homogenous linear system)**을 풀어 직접적인 해를 얻을 수 있다.
→ 이를 **“8-포인트 알고리즘”**이라고 부른다.
- Fundamental Matrix은 실제로는 **7개의 자유도(seven degrees of freedom)**를 가진다.
→ 즉, 7개의 독립적인 정보로 정의됨.
- 7개 점으로도 직접 해를 구하는 알고리즘이 존재하지만,
→ 훨씬 복잡하다.