비선형 최적화 기법의 개요

본질 행렬 \mathbf{E}는 두 카메라 사이의 관계를 나타내는 중요한 요소로, 주어진 대응점들의 집합을 통해 추정된다. 이 과정에서, 비선형 최적화 기법은 \mathbf{E}를 더욱 정확하게 추정하기 위한 효과적인 방법으로 사용된다.

비선형 최적화는 대상 함수가 선형이지 않거나 변수 간의 관계가 복잡할 때 적용된다. 본질 행렬을 추정하는 문제에서는 종종 대상 함수가 이미지 좌표에서의 오차를 최소화하는 형태로 설정된다. 이 오차를 줄이기 위해 비선형 최적화 기법을 적용함으로써 최적의 본질 행렬을 추정할 수 있다.

비선형 최적화 문제 설정

비선형 최적화 문제는 일반적으로 다음과 같은 형태로 정의된다.

\min_{\mathbf{E}} f(\mathbf{E})

여기서 f(\mathbf{E})는 본질 행렬 \mathbf{E}에 대한 비용 함수이며, 보통 추정된 \mathbf{E}와 실제 대응점 간의 차이를 기반으로 정의된다. 비용 함수의 구체적인 정의는 문제의 성격에 따라 다르지만, 일반적으로 이미지 좌표에서의 재투영 오차(reprojection error)를 최소화하는 방식으로 설정된다.

재투영 오차

재투영 오차는 대응점 \mathbf{x}_i\mathbf{x}'_i가 실제로 촬영된 이미지 좌표와, 추정된 본질 행렬 \mathbf{E}를 이용하여 계산된 대응점 사이의 차이를 나타낸다. 이 오차는 다음과 같이 정의된다.

d ( \mathbf{x}_i, \mathbf{E} ) = \mathbf{x}_i'^\top \mathbf{E} \mathbf{x}_i

여기서: - \mathbf{x}_i는 첫 번째 이미지에서의 좌표, - \mathbf{x}'_i는 두 번째 이미지에서의 대응점 좌표, - \mathbf{E}는 본질 행렬을 의미한다.

이 오차는 모든 대응점에 대해 계산되며, 최종 비용 함수는 다음과 같이 대응점들의 오차의 합으로 표현된다.

f(\mathbf{E}) = \sum_{i} d(\mathbf{x}_i, \mathbf{E})

비용 함수 f(\mathbf{E})를 최소화하는 것이 최적의 본질 행렬을 찾는 목적이다.

최적화 기법

비선형 최적화 문제를 해결하기 위해 다양한 알고리즘이 사용될 수 있다. 본질 행렬 추정에서 자주 사용되는 방법으로는 가우스-뉴턴(Gauss-Newton) 알고리즘과 르베르그-마퀴르트(Levenberg-Marquardt) 알고리즘이 있다. 이들 알고리즘은 비선형 함수의 최소값을 찾기 위해 반복적으로 비용 함수를 평가하고, 추정된 값에 기초하여 행렬 \mathbf{E}를 갱신한다.

가우스-뉴턴 알고리즘

가우스-뉴턴 알고리즘은 선형화 기법을 사용하여, 비선형 함수를 선형 함수로 근사하는 방법이다. 이를 통해 문제를 해결하는 과정을 가속화할 수 있다. 가우스-뉴턴 알고리즘의 주요 아이디어는 다음과 같다.

먼저, 비용 함수 f(\mathbf{E})를 테일러 급수로 근사하여, 선형화된 문제를 해결한다. 비용 함수의 근사 형태는 다음과 같다.

f(\mathbf{E} + \Delta \mathbf{E}) \approx f(\mathbf{E}) + \mathbf{J} \Delta \mathbf{E}

여기서 \mathbf{J}는 비용 함수의 야코비(Jacobian) 행렬을 의미하며, \Delta \mathbf{E}는 본질 행렬의 미세 조정값이다. 이를 통해 선형 문제로 변환된 형태를 풀어 본질 행렬의 갱신값을 구하게 된다.

르베르그-마퀴르트 알고리즘

르베르그-마퀴르트(Levenberg-Marquardt) 알고리즘은 가우스-뉴턴 알고리즘을 기반으로 하지만, 선형 근사에 더 나은 안정성을 제공하는 방식으로 동작한다. 이 알고리즘은 가우스-뉴턴 알고리즘의 빠른 수렴 속도와, 그라디언트 하강법의 안정성을 결합한 방식이다. 이를 통해, 비선형 최적화 문제에서 자주 발생하는 불안정성을 개선할 수 있다.

르베르그-마퀴르트 알고리즘은 다음과 같은 형태의 선형 시스템을 해결한다.

(\mathbf{J}^\top \mathbf{J} + \lambda \mathbf{I}) \Delta \mathbf{E} = \mathbf{J}^\top \mathbf{r}

여기서: - \mathbf{J}는 야코비 행렬, - \mathbf{r}는 잔차(residual), - \lambda는 조정 파라미터로, 작은 값일수록 가우스-뉴턴 알고리즘에 가까운 형태를 취하고, 큰 값일수록 그라디언트 하강법에 가까운 형태로 작동한다.

조정 파라미터 \lambda는 각 반복 단계에서 상황에 맞게 동적으로 조정되며, 이를 통해 알고리즘의 수렴 속도와 안정성을 모두 확보할 수 있다.

최적화 과정의 초기화

비선형 최적화는 초기 추정값에 따라 결과가 크게 달라질 수 있으므로, 적절한 초기값 설정이 중요하다. 본질 행렬 추정 문제에서는 일반적으로 선형 방법을 사용하여 초기값을 추정한 뒤, 비선형 최적화 기법을 적용하여 더 정확한 값을 얻는다. 선형 추정 방법은 본질 행렬의 선형적 성질을 활용하며, 일반적으로 8-point 알고리즘을 통해 계산된다.

선형 추정 방법을 통해 얻은 본질 행렬 \mathbf{E}_0는 이후 비선형 최적화 과정의 시작점으로 사용된다.

반복 과정

비선형 최적화 알고리즘은 반복적으로 본질 행렬 \mathbf{E}를 갱신하면서 수렴할 때까지 반복된다. 반복 단계에서 각 오차가 계산되고, 비용 함수의 변화가 미미해질 때 최적화 과정이 종료된다.

각 반복 단계에서 행렬 \mathbf{E}는 다음과 같은 방식으로 갱신된다.

\mathbf{E}_{k+1} = \mathbf{E}_k + \Delta \mathbf{E}

여기서 \mathbf{E}_k는 현재 반복 단계에서의 본질 행렬 추정값이며, \Delta \mathbf{E}는 현재 단계에서 계산된 갱신값이다. 이 과정을 통해 점차적으로 오차가 줄어들면서 최적의 본질 행렬에 수렴하게 된다.