CS231A Lecture 2 Review
Lecture 2: Camera Models
pinhole camera
-
사물의 좌표를 $(x,y,z)$ 이미지 평면에서의 좌표를 $(x’,y’)$이라고 했을 때, 쉽게 공식을 유도할 수 있다.
pinhole을 원점으로 하는 평면을 잡고 계산하면 비례식에 따라서 초점거리 $f$와 사물거리 $z$가 이미지 좌표인 $(x’, y’)$와 사물 좌표$(x, y)$와 비례한다. 즉,
\(z\cdot(x’, y’) = f\cdot(x,y)\\ (x’, y’) = \frac{f}{z}(x,y)\)
-
구멍이 작아지면 빛이 적어져 사물이 더 선명해지는 효과가 있다. 그러나 너무 구멍이 작아지면 사물을 제대로 담을 수가 없다.→렌즈를 쓰자!!
평행 굴절 렌즈 모델(얇은 렌즈)
- 렌즈는 렌즈에 평행하게 지나는 모든 광선을 ‘초점’으로 모으게 된다.
-
초점을 지나 필름으로 투과되는 점의 좌표도 위와 비슷한 공식으로 설명할 수 있다. 단, 여기서는 focal length $f$ 대신 $z’$을 사용한다. 즉,
\((x’, y’) = \frac{z’}{z}(x,y)\)
- 렌즈의 문제점: 렌즈 끝을 통과하는 광선들은 각도의 왜곡이 생길 수 있다.
핀홀 카메라의 기하학(intrinsic)
- 핀홀 카메라로 촬영된 이미지의 평면 상에서의 좌표는 다음 2가지 스텝을 통해 보정된다.
- 오프셋: 기준이 되는 좌표 $(c_x, c_y)$가 되도록 더해준다.
- 실제 거리에서 픽셀거리로 계산할 수 있도록 변환: 픽셀 단위로 계산할 수 있도록 변환계수 $k$, $l$을 곱해준다. 이 때, 픽셀이 정사각형이라는 보장이 없으니 $k=l$이라는 보장도 없다.
-
이 변환은 linear한가? 나누기가 있어서 그렇지 않다. 그럼 행렬 표현은 가능한가? 그냥 좌표계가 아닌 동형 좌표계를 쓴다면 가능하다.
이를 통해 $P’=MP=K\begin{bmatrix}I&0\end{bmatrix}M$ 형태 등으로 표현할 수 있으며, $K$를 카메라 행렬이라고 한다.
-
모종의 사유로 이미지 좌표계 축이 90도가 아닐 수 있다. 기저가 $(1,0),(\cos\theta,\sin\theta)$라고 가정하자. 이 경우 카메라 행렬은, \( P’=\begin{bmatrix}\alpha&-\alpha\cot\theta&c_x&0\\0&-\frac{\beta}{\sin\theta}&c_y&0\\0&0&1&0\end{bmatrix}\begin{bmatrix}x\\y\\z\\1\end{bmatrix} \)
그리고 이 $\alpha$, $\beta$, $\theta$, $c_x$, $c_y$를 카메라의 intrinsic parameter라고 한다.
아니 식 유도가 전혀 쉽지 않은데? 구글링해보니 비슷한 문제를 겪는 친구들이 있었던 듯
이래저래 회전행렬로 고민했는데 그냥 change of basis 였구나..
핀홀 카메라의 기하학(extrinsic)
실물 오브젝트에도 좌표계가 있다면 어떻게 카메라 좌표계로 투영 및 변환할 것인가?
사전 지식: 2차원, 3차원 homogeneous transformation
- 2차원
\( P’\rightarrow \begin{bmatrix}1&0&t_x\\0&1&t_y\\0&0&1\end{bmatrix}\begin{bmatrix}\cos\theta&-\sin\theta&0\\sin\theta&\cos\theta&0\\0&0&1\end{bmatrix}\begin{bmatrix}s_x&0&0\\0&s_y&0\\0&0&1\end{bmatrix}\begin{bmatrix}x\\y\\1\end{bmatrix}\\ =\begin{bmatrix}\cos\theta&-\sin\theta&t_x\\sin\theta&\cos\theta&t_y\\0&0&1\end{bmatrix}\begin{bmatrix}s_x&0&0\\0&s_y&0\\0&0&1\end{bmatrix}\begin{bmatrix}x\\y\\1\end{bmatrix}\\ =\begin{bmatrix}\mathbf{R}&\mathbf{t}\\ \mathbf{0}&1\end{bmatrix}\begin{bmatrix}\mathbf{S}&\mathbf{0}\\ \mathbf{0}&1\end{bmatrix}\begin{bmatrix}x\\y\\1\end{bmatrix}=\begin{bmatrix}\mathbf{R}\mathbf{S}&\mathbf{t}\\ \mathbf{0}&1\end{bmatrix}\begin{bmatrix}x\\y\\1\end{bmatrix} \)
- 3차원
\( P’\rightarrow \begin{bmatrix} R&T\\0&1 \end{bmatrix}_{4\times4} \begin{bmatrix} x\\y\\z\\1 \end{bmatrix} \)
Projective Transformation
\( P’=K \begin{bmatrix} I&0 \end{bmatrix} P =K \begin{bmatrix} I&0 \end{bmatrix} \begin{bmatrix} R&T\\0&1 \end{bmatrix} P_w =K \begin{bmatrix} R&T \end{bmatrix} P_w \)
If projective transformation matrix $\mathbf{M}=[\mathbf{m}_1, \mathbf{m}_2, \mathbf{m}_3]^T$, then the transformation value in Euclidean cooridnate is \( P’=(\frac{\mathbf{m}_1 P_w}{\mathbf{m}_3 P_w}, \frac{\mathbf{m}_2 P_w}{\mathbf{m}_3 P_w}) \)
- 위키를 좀 읽어본 결과, 결국 이 Projective transformation은 4차원 projective space에서 3차원 projective space로 보내는 isomophism이라고 한다. 차원이 다르면 homomorphism 같은데?
- Projective transformation의 특징
- 점은 점으로, 선은 선으로 보낸다
- 멀리 있으면 작아 보인다
- 각도를 보존하지 않는다
- 평행선은 만난다
수업 후기
수학과에서 허구한 날 대수학, 위상수학 예시로 나오던 projective space가 사실은 카메라에서 온 개념이었다? 충격이 아닐 수 없다. 기왕 이렇게 된 거 projective space에 대해 위키를 좀 찾아보고 감을 잡아야겠다.