수업 내용을 정리한 것이므로, 작성자의 상태에 따라 잘못된 부분이 있을 수 있읍니다.
댓글 & 지적 환영
실제 세계에서의 사물에서 반사된 빛을 센서에 그대로 담는다면?
- 사물에 반사된 빛은 난반사를 일으켜, 센서의 모든 픽셀에 빛이 도달할 것이다.
- 따라서, 센서를 통해 본 사물은 그 형체를 알아볼 수 없다.
- 간단한 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 추가해야됨)
'Major in CS > Computer Vision(컴퓨터비전)' 카테고리의 다른 글
Computer Vision (8) - Two View Geometry (0) | 2019.12.07 |
---|