Major in CS/Computer Vision(컴퓨터비전)

Computer Vision (8) - Two View Geometry

SHJuan 2019. 12. 7. 12:43

CV 과제해야 되는데... 과목들한테서 핀포인트로 조져지는 것 같네 ㅎㅎ;

작성자의 상태에 따라 잘못된 내용이 있을 수 있읍니다. 댓글 & 지적 환영

Triangulation

  • 어떤 3D 좌표상의 점 X에 대해, 2개의 카메라가 다른 각도로 그 점을 촬영했다고 생각해보자.
  • 각 카메라는 서로 다른 Camera Matrix P와 P'을 가질 것이고, 그 Image 상에 서로 다른 점 x, x'에 X가 projection 되었을 것이다.
  • P, P', x, x'이 모두 주어졌다고 가정한다.
  • Image 1번의 점 x와 3D 좌표 X를 잇는 선(ray)을 어떻게 구할 수 있을까?
    • 카메라의 원점을 찾고, Camera Matrix P의 pseudo-inverse Matrix P+를 x에 곱해준다.
    • 그런데, P+는 완전한 Inverse Matrix가 아니라, Pseudo-Inverse Matrix이고 Image 자체에도 noise가 있을 수 있기 때문에, 정확히 ray를 구할 수 없다.
    • Image 2에 대해서도 똑같이 수행할 수 있고, 마찬가지로 오차가 존재할 수 있다.
    • 두 Image에 대한 ray들의 교점, 혹은 제일 가까운 점이 X의 좌표가 될 것이다.

Epipolar Geometry

  • 어떤 3D 좌표상의 점 p를 두 카메라가 서로 다른 각도로 촬영했다고 생각한다.
  •  용어정리
    • Baseline: 두 카메라의 카메라 원점을 이은 선분
    • Epipolar plane: 두 카메라의 카메라 원점과 p가 이루는 한 평면 
    • Epipolar line: Epipolar plane과 각 카메라에 의한 Image 평면이 만나는 교선
    • Epipole: Epipolar Line과 Baseline이 만나는 교점. 다른 카메라의 원점이 해당 Image 상에 맺히는 상이라고 볼 수 있다.
  • p는 어떤 카메라의 Image 상의 점 x에 Mapping 될 것이다. 
  • x의 Potential Match들은 다른 카메라의 Image의 Epipolar line에 상이 맺힐 것이다: Epipolar Constraint
  • 한편, Epipole은 항상 실제 Image위에 있지 않을 수도 있다.

Parallel Camera

  • 각 Epipolar Line들이 한 점에서 만나지 않고 평행한 경우.
  • 즉, Epipole이 거의 무한으로 가도 없을 수 있다.
  • 두 카메라가 거의 같은 방향으로 바라보고 찍은 경우이다.

Forward Moving Camera

  • 두 사진의 Image가 같은 방향을 바라보고 있다.
  • 그 움직임이 Image Plane에 대해 수직이다.
  • 두 Image 모두 Epipole이 같은 좌표상에 있다.
  • 점들은 "Focus of Expansion"으로 부터 퍼져나가는 선 상에서 움직인다.
    • Focus of Expansion은 간단히 말하자면, 사진의 중앙부이다.
    • Epipolar Line이 계속 직진하여 어떤 점 X에 닿는다면, 그 점이 Focus of Expansion이다.

Epipolar Constraint & Stereo Vision

  • 왼쪽에서 찍은 Image와 오른쪽에서 찍은 Image가 있다고 하자.
  • 왼쪽에서 찍은 Image 상의 Point들이 오른쪽에서 찍은 Image 상의 Point들에 일치시켜야 한다.
  • 또, 왼쪽 Image에서 어떤 두 점 A, B가 순서대로 있다면, 오른쪽 Image에서도 같은 순서대로 있어야 한다.
  • Epipolar Constraint에 따르면 어떤 점은 다른 Image 상의 한 Epipolar Line 상에 있으므로, 전체 Image를 다 둘러볼 필요가 없다.
  • 그러면, Epiploar Line을 어떻게 찾을까? → Essential Matrix!

Essential Matrix

  • Epipolar Constraint를 Basis로 한다.
  • Essential Matrix: 어떤 Image 상의 한 점이 주어졌을 때, 다른 Image상의 Epipolar Line을 찾아주는 Matrix.
    • 즉, 어떤 Essential Matrix E 에 대해서, Ex = l' 이 만족한다.
  • 2차원 좌표의 Homogeneous Coordinate간의 변환행렬 : size = (3, 3)
  • Image 상의 어떤 점 x와 그 점을 포함하는 Epipolar Line은 서로 수직이다.
    • Epipolar Line의 벡터를 l이라고 하면, x·l = xTl = 0
  • 따라서, x'TEx = 0 이 성립한다.

Homography와 Essential Matrix는 어떤 차이가 있나?

  • 둘 다 3*3 Matrix이다.
  • Homography는 점과 점 간의 변환행렬이다(Rank: 3).
  • Essential Matrix는 점과 선(epipolar line) 간의 변환행렬이다(Rank: 2).
    • SVD를 취하면 singular value가 하나는 0이 나온다.

Essential Matrix를 어떻게 구할 수 있나?

 

Fundamental Matrix

  • Essential Matrix: 모든 점들이 Camera Coordinate System에 대해서 나타내어지는 좌표를 갖는다는 가정을 갖고 시작한다(Calibrated Camera).
  • 그러나, Camera Parameter를 모르면 구할 수 없다.
  • Fundamental Matrix는 그러한 가정이 없더라도, 두 Image 상의 점 x와 x'간의 변환을 나타낼 수 있는 Matrix이다.
    • Essential Matrix의 일반화라고 볼 수 있다.
  • Essential Matrix에서, x'TEx = 0 에서의 x', x는 Camera Coordinate에서의 좌표를 나타낸다.
  • 그러나, Camera Coordinate system을 모른다면, x'x는 Image Coordinate system의 좌표로 나타내어 질 것이다.
  • 이 경우, xi = Kxc가 성립한다. 이 식을 정리하여 x'TEx = 0 에 대입하면 다음과 같다.

x'iTK'-TEK-1x = 0

다시 정리하면, x'iTFx = 0

  • 이 때, F를 Fundamental Matrix라고 한다.
  • Image coordinate system에서도 똑같이 적용되는 Matrix가 있음을 알아내었다.
  • 그렇다면, F를 어떻게 구할 수 있는가? → Eight-Point Algorithm

Fundamental Matrix를 구하는 방법: Eight-point Algorithm

  •  

2019/12/8 2차 작성