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

Computer Vision (7) - Geometric Camera Models

SHJuan 2019. 12. 6. 18:03

수업 내용을 정리한 것이므로, 작성자의 상태에 따라 잘못된 부분이 있을 수 있읍니다.

댓글 & 지적 환영

실제 세계에서의 사물에서 반사된 빛을 센서에 그대로 담는다면?

  • 사물에 반사된 빛은 난반사를 일으켜, 센서의 모든 픽셀에 빛이 도달할 것이다.
  • 따라서, 센서를 통해 본 사물은 그 형체를 알아볼 수 없다.
  • 간단한 Solution
    • 빛 한가닥만이 지나갈 수 있는 아주 좁은 구멍(Pinhole)을 만드는 것.
    • 한가닥 빛은 하나의 픽셀에만 닿을 것이다.
    • 따라서, 센서를 통해 물체를 선명하게 볼 수 있다.

Pinhole Camera(바늘구멍 카메라)

  • 물체(Object)와 센서(CCD 혹은 CMOS) 사이에 가림막(barrier)이 있고, 중간에 아주 작은 구멍(pinhole, aperture) 하나가 뚫려있다.
  • Pinhole이 있는 부분이 Camera의 Centre가 된다.
  • Sensor와 Barrier 간의 거리를 Focal Length라고 한다.
    • Focal Length가 줄어들면, 맺히는 상의 크기가 작아진다.
    • 반대로 늘어나면, 맺히는 상의 크기가 커진다.
  • Pinhole의 크기
    • 무한히 작을수록 이상적이다. 그러나 현실적으로는 불가능
    • Pinhole이 커질수록 맺히는 상이 더 Blur해진다.
      • 센서상의 한 픽셀에 들어오는 빛의 source가 많아지기 때문

Camera Matrix

  • 카메라는 3D World를 2D Image로 Mapping시킨다.
  • 즉, x = PX의 관계가 성립
    • x는 2D Image Homogeneous coordinate (3 * 1 column vector)
    • X는 3D World Homogeneous coordinate (4 * 1 column vector)
    • P는 Camera Matrix (3 * 4 matrix), DoF(Degree of Freedom) = 11
  • 원래 Camera를 통해 들어온 빛의 상이 맺히는 센서는 Barrier 뒤에 있지만, 계산 편의를 위해 Barrier 앞에 있는 것으로 생각한다.
  • 어떤 3차원 좌표공간 상에 있는 점 X(x, y, z)가 Image plane(z = f)상에 맺힐 때, 그 좌표를 (x', y', f)라고 하면
    • Camera Matrix P = 쓰기귀찮다...
    • 삼각형의 닮음비를 이용하면, x' = fx/z, y' = fy/z

3D에서 2D로: 차원 축소(Dimensionality Reduction, Projection)

  • 보존되는 정보
    • 직선
    • 선과 선이 만나는 지점(Incidence)
  • 보존되지 않는 정보
    • 길이

Vanishing Point(소실점)

  • 평행선들은 결국 만난다.
  • 그 점을 vanishing point라고 한다.
  • 예외적으로 Image Plane과 평행한 선들은 vanishing point에서 만나지 않는다.

Vanishing Line

  • plane의 경우 vanishing line으로 수렴한다.
  • 지평면/수평면은 지평선/수평선으로 수렴한다.
  • Camera와 같은 높이에 있는 점들은 지평선/수평선에 project 된다.
  • Camera보다 낮은 위치에 있던 점은 그 아래에, 높은 위치에 있는 점은 그 위에 project된다.
  • 이러한 점을 이용하여, Camera로 찍은 Image안에 실제 길이를 알 수 있는 물체가 찍혀있다면, 그 Image 안에 있는 모든 object들의 height를 계산할 수 있다.
    • 그런데, 일반적으로 그런 경우가 잘 없다.

Camera Matrix 만들기

  • 위에서 언급했듯, 3D World 상에서 어떤 점의 좌표 (x, y, z)는 Camera에 의해, 2D Image 상의 점 (fx/z, fy/z)로 mapping된다.
  • 따라서, Camera Matrix를 다음과 같이 생각해볼 수 있다.
    • 실제 계산시에는 Homogeneous Coordinate System을 사용하므로, 3 * 4 Matrix이다.

┌f  0  0  0┐

| 0  f  0  0 |

└0  0  1  0┘

  • 그런데 일반적으로, Camera Coordinate System과 Image Coordinate system은 다르다.
  • 둘 다 2D Coordinate system이므로, Rotation 및 Translation을 적절히 취하면 된다.
  • 결론적으로, 3D Camera Coordinate System에서 2D Image Coordinate System으로 변환하는 Matrix는 다음과 같다.

┌f 0 px 0┐

| 0 f py 0 |

└0 0 1  0┘

Camera Matrix Decomposition

위의 Matrix를 다음과 같이 Decompose할 수 있다.

┌f 0 px┐┌1 0 0 0┐

| 0 f py |  | 0 1 0 0 |

└0 0 1 ┘└0 0 1 0┘

 

  • 위 Matrix를 간단하게 K[I|O]로 나타내기도 한다.
    • [I|O] Matrix의 역할: 3D에서 2D로 Projection을 수행하는 Matrix.
    • K Matrix의 역할: Camera Coordinate(z=1)에서 Image Coordinate(z=f)로 변환하는 Matrix.

World 좌표계에서 Camera 좌표계로의 변환

  • 일단, 서로 원점이 다를 수 있다.
  • 따라서, 원점 일치를 시켜주어야 한다.
  • World 좌표계에서 어떤 점 X_w가 있다고 할 때, Camera 좌표계로 원점 일치를 시키려면 X_w에서 Camera 좌표계 원점의 World 좌표계에서의 좌표를 빼주면 된다.
    • 즉, World 좌표계에서 Camera 좌표계의 원점의 좌표를 C라고 하면, X_c = X_w - C
  • 그런데, 구한 X_c를 그대로 Camera 좌표계에 적용하면, 실제 X_w와 그 위치가 맞지 않을 수 있다.
    • 두 좌표계 간에 축 방향이 align 되어있지 않을 수 있기 때문이다.
  • 따라서, X_c를 Camera 좌표계에 맞도록 회전하는 Matrix를 적용한다.
  • Homogeneous Coordinate System에서의 해당 Matrix는 다음과 같이 쓸 수 있겠다.

R  -RC

0    1

(R은 rotation을 수행, -C는 World좌표계에서 Camera 좌표계로 원점 일치시키는 역할)

 

World 좌표계에서 2D Image 좌표계로의 변환

  • Camera 좌표계에서 Image 좌표계로의 Transformation Matrix: K[I|O]
  • World 좌표계에서 Camera 좌표계로의 Transformation Matrix: 위 내용 참조
  • 따라서, World 좌표계에서 Image 좌표계로의 Transformation Matrix P를 구하면 다음과 같다.

P = K[R|-RC]

  • [R|-RC]: World 좌표계의 점을 Camera 좌표계의 점으로 변환한 후, Camera 좌표계의 z=1 plane에 projection
  • K: z=1 plane에서 z=f로 scaling 한 후, 적절한 translation을 통해 Image 좌표를 구한다.
  • Matrix K의 parameter들을 Intrinsic parameter, [R|-RC]의 parameter들을 Extrinsic Parameter라고 한다.

더 일반화된 Camera Matrix

  • CCD Camera의 경우, 각 픽셀들이 정사각형이 아닐 수 있다. 
    • 따라서, Uniform Scaling을 수행할 수 없다.
    • x 좌표와 y 좌표 간 다른 scaling을 수행한다. --> Degree of Freedom이 1 증가
  • Finite projective Camera의 경우 센서가 비틀려(skew)있을 수 있다.
    • 따라서, Sheering을 위한 또 다른 parameter가 필요하다. --> Degree of Freedom이 또 1 증가

Perspective Distortion

  • 카메라는 3D 세계를 2D Image로 projection한다.
  • 이 과정에서, 3D depth 정보를 잃을 수도 있고, 카메라 렌즈 자체가 빛을 왜곡시킬 수도 있기 때문에, 실제 물체와는 다른 모습을 보일 수 있다.
  • ex) 원근법을 이용하여 사진을 찍기, Ames room illusion...

크기와 depth, focal length 간의 관계

  • 같은 focal length라면, 앞에 있는 작은 물체가 뒤에 있는 큰 물체와 같은 크기로 projection 될 수 있다.
  • 같은 depth라면, focal length가 작아질수록 맺히는 상이 작아진다.

Adding a Lens

  • Pinhole 대신 볼록렌즈를 사용할 수도 있다.
  • 볼록렌즈는 빛을 모아주는 역할을 하므로 Pinhole처럼 한 곳에서 나온 광선 다발(Bundles of Rays)이 한 픽셀에 도달하게 할 수 있다.
  • 광학축(Optical Axis)와 평행한 광선은 항상 초점(focal point)에서 모여 지나쳐간다.
  • 용어정리
    • Object distance(D): 렌즈와 사물 간 거리
    • Focal length(f): 렌즈와 초점 간 거리
    • Focus distance(D'): 렌즈와 센서(Image Plane) 간 거리
  • Thin Lens Formula: D, f, D'간의 닮음 관계를 이용하면 다음과 같은 식으로 정리할 수 있다.

1/D + 1/D' = 1/f

  • 위 식은 초점이 맞춰진 모든 점에 대해서 항상 성립한다.

Lens Camera & Pinhole Camera

다음과 같은 조건이 갖춰진다면, 양 쪽 카메라 모두에 공통적으로 적용되는 property와 description을 도출해낼 수 있다.

  • Central Ray만 사용
  • Lens Camera가 초점이 맞추어져 있음
  • Lens Camera의 D'이 Pinhole Camera의 f와 같음

Depth of Field

  • 렌즈는 빛을 모아 센서에 집중시킨다.
  • 이 때, "초점이 잘 맞는(in focus)" 거리 구간이 있다.
  • 이를 Depth of Field라고 한다.
  • 다른 부분은 "Circle of Confusion"으로 project 된다. 다시 말하자면 blur된 채 상이 맺힌다고 볼 수 있다.
  • 그렇다면, 이를 조절할 수 있는가?
    • Aperture 크기를 줄이면 Depth of Field를 늘릴 수 있다.
    • 그러나 들어오는 빛이 줄어듦으로, 전반적으로 Image가 어두워진다.
    • 따라서, 노출(Exposure)을 늘려야 한다.

Field of View(FOV)

  • 시야각
  • FOV는 f가 작아질수록, 렌즈 크기가 클 수록 커진다.
  • 이를 이용한 "Dolly Zoom Effect"가 있음.

렌즈로 인해 생기는 문제들

  • Vignetting
    • 카메라에서 렌즈를 2개 이상 사용할 경우, 어떤 부분의 점은 제대로 굴절되어 상이 센서에 맺히지 못할 수 있다.
    • 그런 부분은 실제 Image 상에서는 까만 영역으로 나타난다.
  • Radial Distortion
    • 렌즈 자체가 완벽하지 못하기 때문에 발생한다.
    • 어안 렌즈로 사진 찍은 것처럼, 사진의 가쪽으로 갈 수록 상이 둥글게 왜곡되는 현상이다.
  • Spherical Aberration
    • Sperical Lens는 빛을 완벽하게 모으지 못한다.
    • 멀리서 오는 빛은 f가 더 짧다.
  • Chromatic Aberration
    • 마치 다른 색깔로 분신술 쓰듯이 사진이 찍히는 경우이다.
    • 빛은 R, G, B로 구성되어 있다.
    • 이들 각각의 빛은 파장이 다르고 그에 따른 굴절도가 달라서, 한 점에서 나온 빛이 센서 상의 한 픽셀에 제대로 맺히지 못할 수 있다.

Orthographic Camera

Weak Perspective

  • 사진을 찍으면 "Vanishing Point"가 있다고 위에서 언급했다.
  • Weak Perspective란 문자 그대로, 원근감이 약하다. 
  • 소실점이 거의 무한히 멀리 있어, 원근감이 거의 느껴지지 않는 것을 의미한다.
  • f와 D가 늘어나면, FOV가 거의 0에 근접한다. 따라서 어떤 Object로부터의 빛이 거의 평행을 유지하고, Vanishing Point가 무한히 멀리 있게 된다.

Weak Perspective Camera

  • Depth에 따른 크기 변화가 거의 없다고 봐도 무방.
  • 그렇다면, Image Plane에 맺히는 상은 f에 따라 달라진다고 볼 수 있다.
  • Camera Matrix는 어떻게 변할까?
    • Weak Perspective Camera Matrix는 다음과 같이 변한다.
    • Depth에 따라 2D에 Mapping된 상의 크기가 변하지 않는다. 고정된 Depth값 Z_0에 따라 변한다.

┌f 0 px┐┌1  0  0  0┐

| 0 f py |   | 0  1  0  0 |

└0 0 1 ┘└0 0 0 Z_0┘

  • Scene 자체가 아주 멀리 있거나(풍경 사진과 같은 경우), telecentric lens인 경우 Weak Perspective Camera에 해당한다.
    • telecentric lens: f 위치에 pinhole을 두어, 광학축에 평행으로 들어오는 빛만 상이 맺히게 한다.

Orthgraphic Camera

  • Weak Perspective Camera의 특이 Case이다.
    • Constant magnification(Z_0)이 1이다.
    • Camera와 Image 원점간에 shift가 없다.
    • World Coordinate System과 Camera Coordinate System이 일치한다.
  • 그렇다면, Camera Matrix는?

┌f 0 px┐┌1 0 0 0┐

| 0 f py |   | 0 1 0 0 |

└0 0 1 ┘└0 0 0 1┘

  • 한편, telecentric lens에서 D' = 2f로 설정하여, 실제 Object의 크기와 상으로서 맺히는 크기를 일치시키기로 한다.

2019/12/7 2번째 편집(Geometric Camera Calibration 추가해야됨)