Reference: Derek Hoiem, Alexei Efros, Steve Seitz, David Forsyth, James Hays, Bob Collins
우리가 보고 있는 세계는 연속적인 세계다. 그러나 카메라로 이러한 연속적인 세상을 촬영하는 순간, 3차원의 세상이 2차원의 이미지로 projection된다. 이렇게 3D to 2D projection이 일어나는 과정에서 알아야 하는 몇 가지 특징이 있다.
인류 최초로 세상을 본뜨고 싶다는 생각을 한 사람의 아이디어는 무엇이었을까?
당연히 실패다. 물체를 필름에 '인화'한다는 것은 물체의 한 점이 필름의 한 점에 닿게 하는 일과 같다. 그러나, 실제로는 위의 그림과 같이 물체의 한 점은 필름의 전체 면에 닿는다.
barrier는 aperture(조리개)와 같다.
이는 blurring을 줄여줄 수 있으며, 물체의 한 점이 film의 한 점에 닿게 하는 것을 가능케 한다.
그런데 문제가 있다. film에 도달하는 빛의 양이 적어서 굉장히 어둡다는 것이다. 이는 어떻게 해결할 수 있을까?
위와 같이 빛을 한 데 모아서 쏴주기 위해 hole에 렌즈를 달면 해결할 수 있다.
"카메라로 사진을 찍는다"는 것은 3D 이미지를 2D로 projection하는 것과 같다. 이 과정에서, 우리는 몇 가지 정보를 잃게 된다.
3D to 2D projection을 함으로써 우리는 거리정보와 각도정보를 잃게 된다.
그렇다면, 보존이 되는 정보도 있을까?
vanishing lines 뒤로는 정보를 얻을 수 없다. 우리가 흔히 부르는 지평선, 수평선이 이 vanishing line이다.
Computervision의 task는 2D image로부터 3D를 reconstruction하는 것이라고 볼 수 있다. 그렇다면, 3D to 2D projection해도 보존되는 straight lines을 가지고 reconstruction을 시도해볼 수 있지 않을까?
위에 대한 답을 하려면 알아야 할 것들이 너무 많다. 차근차근 알아보자.
Object of Interest in World Coordinate System (U, V, W)
→ 현실 세계의 coordinate
Camera Coordinate System (X, Y, Z)
→ 카메라의 coordinate
'현실 세계를 카메라로 찍는다.'
= 'World Coordniate → Camera Coordinate 변환 과정'
= 3D to 3D transformation
3D to 3D transformation을 수행할 때에는 오직 translation과 rotation만 변한다.
Forward Projection onto image plane.
3D (X, Y, Z) projected to 2D (x, y)
→ 현실 세계를 image plane에 projection (3D to 2D projection)
→ Z 방향에 존재하는 모든 점이 이미지 내 한 픽셀 안에 전부 들어옴.
Our Image gets digitzed into pixel coordinates (u, v)
→ 이미지는 픽셀 coordinate으로 transformation되며 디지털화된다.
카메라로 사진을 찍는 것은 'World Coordinate → Camera Coordinate → Image(film) Coordinate → Pixel Coordinate' 변환 과정이다.
그러나, CV의 task는 반대 방향이다. 우리에게 주어진 것은 pixel coordinate이고, 위와 같은 과정을 traceback하여 world가 어떤지 알아내고자 한다. 즉, 한마디로 3D reconstruction을 하고자 한다.
3D reconstruction을 통해 알고 싶은 것은 형상/shape/실루엣, color 등이 있다.
센서(카메라, 눈 등)가 감지하는 것은, 광자가 물체에 부딪힌 뒤 센서에 닿는 시점이다.