- 이미지를 촬영한 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 matrixcoplarity 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: 점 P, 두 카메라 중심을 포함하는 평면
- 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∼F33를 1차원 벡터로 만들어 선형방정식으로 변환.
EX)
최종적으로 아래와 같이 표현이 가능하다.
Kronecker Product 이용
SVD를 이용하여 해를 구한다. 해 f는 A의 0에 대응하는 우측 특이벡터.
"How Many Points Are Needed?
=> A는 최대 랭크 8까지만 가능 → 8-point algorithm의 이론적 기반.
- Singular vector
f는 V에서 가장 작은 특이값에 대응하는 오른쪽 특이 벡터.
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개 점으로도 직접 해를 구하는 알고리즘이 존재하지만, → 훨씬 복잡하다.