ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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

    댓글

Designed by Tistory.