-
[13] 2D Homography Estimation (3)Multiple View Geometry 2021. 4. 11. 17:13
본 포스트는 학습한 것을 정리할 목적으로 작성되었습니다.
해당 포스트의 내용 및 그림, 수식 등은 'Multiple View Geometry in Computer Vision' 책을 참고하였습니다.
(1) Sampson error
Reprojection error $\sum_i{[d(\textbf{x}_i, \hat{\textbf{x}_i})^2 + d(\textbf{x}'_i, \hat{\textbf{x}'}_i)^2]}$는 non-linear variety(conic or quadric etc.)에 의해 정의되므로 이를 0으로 만드는 linear한 방법은 존재하지 않는다. 따라서 여기에서는 iteration을 통해 해를 구할 수 있으며 이 과정에서 Sampson error가 사용된다.
Homography $H$에 대하여 어떤 point $\textbf{X}=\begin{bmatrix} x & y & x' & y' \end{bmatrix}$가 variety $\mathcal{V}_H$ (ex. conic in 2D) 위에 있다고 하자. 이는 DLT 알고리즘에서 설명했던 형식과 같이 $A\textbf{h}=0$을 만족한다. 여기에서는 point $\textbf{X}$에 $A\textbf{h}=0$이 dependent 함을 강조하기 위하여 이 식을 $\mathcal{C}_H{(\textbf{X})}=0$으로 쓴다.
실제로는 $\mathcal{C}_H(\textbf{X})=\boldsymbol{\epsilon}$ 이기 때문에 iteration을 통해 $\mathcal{V}_H$위의 점 $\hat{\textbf{X}}$를 찾아야 한다. 이를 위해 매 step 마다 $\mathcal{C}_H(\hat{\textbf{X}})=0$이라고 하고 이를 1차 Taylor 근사하여 이 값이 0이되는 점을 찾는다.
$$ \mathcal{C}_H(\hat{\textbf{X}}) = \mathcal{C}_H(\textbf{X} + \boldsymbol{\delta}_X) = \mathcal{C}_H(\textbf{X}) + J \boldsymbol{\delta}_X = 0 $$
$$ J = \frac{\partial{\mathcal{C}_H}}{\partial{\textbf{X}}} $$
위 식과 $\mathcal{C}_H(\textbf{X})=\boldsymbol{\epsilon}$이라는 점을 고려할 때 매 iteration마다 찾아야 하는 $\boldsymbol{\delta}_X$는 다음과 같다.
$$ The \ vector \ \boldsymbol{\delta}_X \ that \ minimize \ ||\boldsymbol{\delta}_X|| \ subject \ to \ J\boldsymbol{\delta}_X = -\boldsymbol{\epsilon} $$
따라서 Lagrange multipliers를 이용하여 다음과 같이 목적함수를 설정할 수 있다.
$$ Ojbective \ function = \boldsymbol{\delta}_X^T\boldsymbol{\delta}_X - 2\boldsymbol{\lambda}(J\boldsymbol{\delta}_X + \boldsymbol{\epsilon}) $$
이를 $\boldsymbol{\delta}_X$와 $\boldsymbol{\lambda}$에 대하여 각각 partial derivative를 구하면 다음과 같다.
$$ 2\boldsymbol{\delta}_X^T - 2\boldsymbol{\lambda}^T J = \textbf{0}^T$$
$$ J\boldsymbol{\delta}_X + \boldsymbol{\epsilon} = \textbf{0}$$
위 식을 아래의 식에 대입하면 다음과 같은 결과를 얻을 수 있다.
$$ JJ^T\boldsymbol{\lambda} = -\boldsymbol{\epsilon} $$
$$ \boldsymbol{\delta}_X = -J^T(JJ^T)^-1\boldsymbol{\epsilon} $$
$$ ||\boldsymbol{\delta}_X||^2 = \boldsymbol{\epsilon}^T(JJ^T)^{-1}\boldsymbol{\epsilon} $$
이 때 $ ||\boldsymbol{\delta}_X||^2 $ 를 $ Sampson \ error $ 라고 한다.
(2) Example - Sampson approximation for a conic
여기에서는 위에서 설명한 Sampson approximation에 대한 예제를 conic을 통해 보인다. 어떤 point $\textbf{x}=[x \ y ]^T$와 conic $C$의 geometric distance는 $\textbf{x}^TC\textbf{x}=\epsilon \ (scalar)$이다. 따라서 1 x 2 matrix $J$는 다음과 같이 표현된다.
$$ J = \begin{bmatrix} \frac{\partial{(\textbf{x}^TC\textbf{x})}}{\partial{x}} & \frac{\partial{(\textbf{x}^TC\textbf{x}})}{\partial{y}} \end{bmatrix} $$
따라서 $Sampson \ error$는 아래와 같이 구해진다.
$$ \frac{\partial{(\textbf{x}^TC\textbf{x})}}{\partial{x}} = \frac{\partial{(\textbf{x}^TC\textbf{x})}}{\partial{\textbf{x}}} \frac{\partial{\textbf{x}}}{\partial{x}} = 2\textbf{x}^T C\begin{bmatrix} 1 & 0 & 0 \end{bmatrix}^T = 2(C\textbf{x})_1 $$
$$ ||\boldsymbol{\delta}_X||^2 = \boldsymbol{\epsilon}^T(JJ^T)^{-1}\boldsymbol{\epsilon} = \frac{\boldsymbol{\epsilon}^T \boldsymbol{\epsilon}}{JJ^T} = \frac{(\textbf{x}^TC\textbf{x})^2}{4((C\textbf{x})_1^2+(C\textbf{x})_2^2)} $$
'Multiple View Geometry' 카테고리의 다른 글
[15] General Projective Cameras (0) 2021.04.14 [14] Finite Camera Matrix (0) 2021.04.12 [12] 2D Homography Estimation (2) (0) 2021.04.10 [11] 2D Homography Estimation (1) (0) 2021.04.10 [10] Quadrics and dual quadrics (0) 2021.04.08