CH02. Single View Metrology (1)
Introduction
지난 강에서 3D world를 digital image로 transform하는 camera matrix에 대해서 알아보았다.
그렇다면, 역으로 3D world의 구조를 하나의 이미지만을 가지고 추정할 수 있을까?
Transformations in 2D
Isometric transformation
거리를 보존하는 transformation이다.
가장 basic한 형태로, rotation $R$ 과 translation $t$ 로 표현된다.
3의 자유도를 가지며, 수학적으로 정의하면,
$$ \begin{bmatrix}x^\prime \\ y^\prime \\ 1\end{bmatrix}=\begin{bmatrix}R & t \\ 0 & 1\end{bmatrix}\begin{bmatrix}x \\ y \\ 1\end{bmatrix} $$
Similarity transformation
모양(shape)을 보존하는 transformation이다.
직관적으로 보면, isometric transformation에 scaling을 추가한 것이다.
따라서 isometric transformation은 $s=1$인 similarity transformation의 특별한 경우라고 볼 수 있다.
모양을 보존하기 때문에, 비율이나 각도 등은 보존이 된다.
4의 자유도를 가지며, 수학적 정의는,
$$ \begin{bmatrix}x^\prime \\ y^\prime \\ 1\end{bmatrix}=\begin{bmatrix}SR & t \\ 0 & 1\end{bmatrix}\begin{bmatrix}x \\ y \\ 1\end{bmatrix},\quad S=\begin{bmatrix}s & 0 \\ 0 & s\end{bmatrix} $$
Affine transformation
점(points)과 직선(straight lines) 그리고 평행성(parallelism)을 보존하는 transformation이다.
벡터 $v$에 대해서, affine transformation $T$는
$$ T(v)=Av+t $$
와 같이 정의된다. ($A$는 $\mathbb{R}^n$의 linear transformation임)
Homogeneous coordinate으로는, affine transformation을 다음과 같이 정의할 수 있다.
$$ \begin{bmatrix}x^\prime \\ y^\prime \\ 1\end{bmatrix}=\begin{bmatrix}A & t \\ 0 & 1\end{bmatrix}\begin{bmatrix}x \\ y \\ 1\end{bmatrix} $$
식을 보면 알 수 있듯이, 모든 similarity transformation은 affine transformation의 특별한 case이다.
이는 6의 자유도를 갖는다.
$$ A=UDV^T=UV^TVDV^T=(UV^T)(V)(D)(V^T) $$
Projective transformation
직선을 직선으로 mapping하기는 하지만, 평행성(parallelism)을 보존하지는 않는다.
Homogeneous coordinate에서 projective transformation은 다음과 같다.
$$ \begin{bmatrix}x^\prime \\ y^\prime \\ 1\end{bmatrix}=\begin{bmatrix}A & t \\ v & b\end{bmatrix}\begin{bmatrix}x \\ y \\ 1\end{bmatrix} $$
식을 보면 알 수 있듯이, affine transformation의 좀 더 general 한 버전이라고 할 수 있다.
Parallelism을 보존하지는 못하지만, line을 line으로 mapping 하기 때문에 points의 collinearity는 보존한다.
따라서 4개의 collinear points $P_1,P_2,P_3,P_4$의 cross ratio 는 projective transformation 하에서 invariant하다.
$$ \text{cross ratio}=\frac{\|P_3-P_1\|\|P_4-P_2\|}{\|P_3-P_2\|\|P_4-P_1\|} $$
Points and Lines at Infinity
직선(line)은 이미지의 구조를 파악하는 데 굉장히 중요한 요소이므로, 2D, 3D에서의 정의를 모두 아는 것은 필수적이다.
2D line $l$ 은 homogeneous vector로 다음과 같이 정의된다.
$$ \ell=\begin{bmatrix}a&b&c\end{bmatrix}^T $$
이 때, $-\frac{a}{b}$ 는 기울기, $-\frac{c}{b}$ 는 y-절편을 나타낸다.
조금 더 formal하게 써보면,
$$ \forall p=\begin{bmatrix}x\\y\end{bmatrix}\in\ell,\quad\begin{bmatrix}a&b&c\end{bmatrix}\begin{bmatrix}x\\y\\1\end{bmatrix}=0 $$
처럼 표현이 가능하다.
💡 일반적으로, 두 직선 $\ell,\ell^\prime$은 점 $x$ 에서 만나고, 이 점은 $\ell$과 $\ell^\prime$의 cross product로 정의된다.
증명)
두 교차하는 직선 $\ell,\ell^\prime$이 주어졌을 때, 교점 $x$는 반드시 두 직선 $\ell,\ell^\prime$ 위에 있어야 한다.
따라서, $x^T\ell=0$ 과 $x^T\ell^\prime=0$ 을 둘 다 만족한다.
$x=\ell\times\ell^\prime$ 이라고 잡으면, cross product의 정의에 따라, vector $x$는 두 벡터 $\ell,\ell^\prime$과 직교하고,
직교의 정의에 따라, $x^T\ell=0$ 과 $x^T\ell^\prime=0$ 이 된다.
그러므로, $x$의 정의가 constraint을 만족한다.
그렇다면 평행한 직선은 어떨까?
교점이 없다라고 생각하겠지만, 두 직선은 무한대에서 만난다고 할 수 있다.
Homogeneous coordinates에서 무한대에 있는 점은 $\begin{bmatrix}x & y & 0\end{bmatrix}^T$로 표현할 수 있다.
앞서 homogeneous coordinate으로부터 euclidean coordinate을 얻기 위해선 마지막 좌표값으로 나머지를 다 나누면 된다고 했었다.
따라서 0으로 나누게 되면 무한대에 있는 point가 나오게 된다.
두 평행한 직선 $\ell,\ell^\prime$ 은 기울기가 같으므로 $\frac{a}{b}=\frac{a^\prime}{b^\prime}$ 이다.
그리고 homogeneous coordinate을 이용해 교점을 찾으면,
$$ \ell\times\ell^\prime\propto\begin{bmatrix}b\\-a\\0\end{bmatrix}=x_\infty $$
가 된다. ($\ell,\ell^\prime$ cross product하면 유도 가능)
따라서, 두 평행한 직선은 무한대에서 만난다는 것을 확인할 수 있으며,
이 교점을 ideal point 라고 부른다.
또 하나 ideal point의 흥미로운 성질은, $-\frac{a}{b}$ 의 기울기를 가지는 모든 평행한 직선은 ideal point에서 모두 만난다는 것이다.
$$ \ell^Tx_\infty=\begin{bmatrix}a & b & c\end{bmatrix}\begin{bmatrix}b\\-a\\0\end{bmatrix}=0 $$
이제 points of infinity 에서 lines at infinity로 사고를 확장해보자.
두 개 혹은 그 이상의 평행한 직선의 쌍들이 있다고 해보자.
각 쌍들은 교점 $\{x_{\infty,1},...,x_{\infty,n}\}$에서 각각 만날 것이다.
이 무한대의 점을 모두 지나는 직선 $\ell_\infty$는 반드시 $\forall i,\,\,\ell^T_\infty x_{\infty,i}=0$ 을 만족해야 한다.
이 말인 즉슨, $\ell_\infty=\begin{bmatrix}0 & 0 & c\end{bmatrix}^T$을 만족함을 의미한다.
여기서 $c$는 임의의 값이므로 이를 그냥 $\ell_\infty=\begin{bmatrix}0 & 0 & 1\end{bmatrix}^T$이라고 정의할 수 있다.
그렇다면, 무한대의 점 $p_\infty$에 generic projective transformation $H$를 적용하면 어떻게 될까?
$$ p^\prime=Hp_\infty=\begin{bmatrix}A & t \\ v & b\end{bmatrix}\begin{bmatrix}1 \\ 1 \\ 0\end{bmatrix}=\begin{bmatrix}p^\prime_x \\ p^\prime_y \\ p^\prime_z\end{bmatrix} $$
잘 보면 $p^\prime$의 마지막 원소가 더 이상 0이 아님을 알 수 있다.
즉, projective transformation은 points at infinity를 무한대가 아닌 점으로 mapping한다는 뜻이다.
(projective transformation의 성질을 생각해보면, parallelism을 보존하지 못한다고 했으므로)
하지만 affine transformation의 경우는 무한대의 점에서 무한대의 점으로 그대로 mapping함을 유의하자.
$$ p^\prime=Hp_\infty=\begin{bmatrix}A & t \\ 0 & 1\end{bmatrix}\begin{bmatrix}1 \\ 1 \\ 0\end{bmatrix}=\begin{bmatrix}p^\prime_x \\ p^\prime_y \\ 0\end{bmatrix} $$
그러면 projective transformation $H$를 line $\ell$ 에 적용해 새로운 line $\ell^\prime$을 얻어보자.
직선 $\ell$을 지나는 모든 점 $x$는 $x^T\ell=0$ 을 만족한다.
Transformed space에서도 projective transformation은 직선을 직선으로 mapping한다고 했으므로,
$x^{\prime T} \ell^\prime=0$ 을 만족해야한다.
Identity property를 이용해 식을 한번 변형해보자.
$$ x^TI\ell=x^TH^TH^{-T}\ell=0 $$
직선 $\ell$ 에 projective transformation을 적용했으니 그 위의 모든 점들도 마찬가지로 transform된다.
따라서 $x^\prime=Hx$ 임을 알 수 있다.
$$ x^TI\ell=x^TH^TH^{-T}\ell=0=x^{\prime T} \ell^\prime $$
이므로
$$ x^TH^TH^{-T}\ell=x^{\prime T} \ell^\prime $$
이고, $x^TH^T=(Hx)^T$이므로
$$ x^{\prime T}H^{-T}\ell=x^{\prime T} \ell^\prime $$
즉 $\ell^\prime=H^{-T}\ell$ 를 유도해낼 수 있다.
Points at infinity와 비슷하게 line at infinity에 projective transformation을 적용하면 무한대가 아닌 직선으로 mapping될 수가 있다.
(마찬가지로 affine transformation은 lines at infinity를 lines at infinity로 mapping함)