Tangential 왜곡의 개념

Tangential 왜곡은 카메라 렌즈가 완벽하게 정렬되지 않거나, 렌즈 자체가 조금씩 기울어져 있거나 삽입되는 과정에서 비대칭적으로 배치된 경우 발생하는 왜곡이다. 이 왜곡은 이미지의 비대칭적인 왜곡으로 나타나며, 주로 렌즈 중심과의 각도 차이에 의해 발생한다. Radial 왜곡과는 달리, 이 왜곡은 이미지의 좌표가 렌즈 중심에 대해 선형적으로 또는 각기 다르게 이동하는 것을 의미한다.

Tangential 왜곡은 물리적 현상으로는 아래와 같은 두 가지 상황에서 발생한다.

  1. 렌즈가 이미지 평면에 대해 기울어져 있는 경우.
  2. 센서가 렌즈의 광학 축에 대해 약간 벗어난 위치에 있는 경우.

이 왜곡을 수학적으로 설명하면, 이미지의 각 픽셀 위치가 실제로 렌즈에 의해 어떻게 왜곡되는지를 나타낸다. 일반적으로 실제 좌표와 왜곡된 좌표의 차이는 매우 미세하지만, 정확한 비전 시스템에서는 이를 무시할 수 없다.

Tangential 왜곡의 수학적 모델

Tangential 왜곡을 설명하기 위해 사용하는 수학적 모델은 보정 전 좌표와 보정 후 좌표 사이의 관계를 정의한다. 먼저, 보정 전 좌표를 다음과 같이 정의한다.

이때, x'y'는 Tangential 왜곡이 제거된 후의 좌표이다.

Tangential 왜곡의 영향을 받는 좌표는 아래의 식으로 표현된다.

x' = x + \left[ 2p_1xy + p_2(r^2 + 2x^2) \right]
y' = y + \left[ p_1(r^2 + 2y^2) + 2p_2xy \right]

여기서 p_1p_2는 Tangential 왜곡 계수이다. 이 계수들은 보정 과정에서 결정되며, 왜곡 정도를 제어하는 중요한 변수이다.

위의 식에서 알 수 있듯이, Tangential 왜곡은 이미지 좌표에 추가적인 선형 변화를 적용하는 방식으로 영향을 미친다. 이 변화는 주로 이미지의 특정 지점에서 비대칭적인 왜곡을 일으킨다.

보정 방법

Tangential 왜곡을 보정하기 위해서는 위 수식에 나타난 p_1p_2 계수를 추정하고, 이를 활용해 보정 작업을 수행해야 한다. 일반적으로 보정은 다음 절차를 따른다.

  1. 왜곡 계수 추정: Tangential 왜곡 계수 p_1p_2를 추정하기 위해 여러 이미지 포인트에서 실제 좌표와 이상적인 좌표 간의 차이를 분석한다. 이를 통해 최적의 왜곡 계수를 결정할 수 있다.
  2. 왜곡 보정: 추정된 계수를 이용해 보정 후 좌표 x'y'를 계산한다. 이를 통해 왜곡된 이미지를 보정할 수 있다.

Tangential 왜곡 보정 알고리즘

Tangential 왜곡을 보정하기 위한 알고리즘은 일반적으로 Levenberg-Marquardt나 Gauss-Newton 등의 비선형 최적화 기법을 활용한다. 이 알고리즘은 관찰된 왜곡과 모델링된 왜곡의 차이를 최소화하는 방식으로 작동한다. Tangential 왜곡 계수 p_1p_2는 최적화 절차에서 결정되며, 여러 관측 데이터를 기반으로 가장 적합한 왜곡 보정 계수를 찾아낸다.

1. 관찰된 이미지 좌표 수집

카메라 캘리브레이션 패턴(예: 체스보드 패턴)을 사용하여, 여러 각도에서 이미지를 촬영하고 각 점의 이미지 좌표 (x_i, y_i)를 수집한다. 이때, 이러한 좌표는 왜곡이 발생한 상태로 캡처된 것이다.

2. 이상적인 이미지 좌표 설정

이상적인 좌표 (x'_i, y'_i)는 카메라 모델이 완벽하다고 가정했을 때 예상되는 위치이다. 즉, 왜곡이 없는 상태에서의 좌표이다. 이는 체스보드 패턴의 각 교차점이 카메라의 광학 축에 대해 정렬되어 있다고 가정할 때의 좌표이다.

3. 오차 함수 정의

Tangential 왜곡을 보정하기 위한 오차 함수는 각 포인트에서 실제 좌표와 이상적인 좌표 간의 차이로 정의된다. 이 오차를 최소화하는 것이 보정의 목적이다.

오차 함수는 다음과 같이 정의된다.

\text{Error}(p_1, p_2) = \sum_{i=1}^{N} \left[ (x'_i - (x_i + \left( 2p_1x_iy_i + p_2(r_i^2 + 2x_i^2) \right)))^2 + (y'_i - (y_i + \left( p_1(r_i^2 + 2y_i^2) + 2p_2x_iy_i \right)))^2 \right]

여기서 N은 수집된 이미지 포인트의 총 개수이다. 이 함수는 각 이미지 포인트의 왜곡 차이를 제곱합으로 계산한다.

4. 최적화 과정

오차 함수를 최소화하기 위해 비선형 최적화 알고리즘을 사용한다. Levenberg-Marquardt 방법은 종종 사용되는 최적화 알고리즘으로, 오차 함수의 도함수를 이용해 최적의 p_1p_2 값을 찾는다.

Levenberg-Marquardt 알고리즘 개요

Levenberg-Marquardt 알고리즘은 Gauss-Newton 방법과 Gradient Descent를 결합한 형태로, Tangential 왜곡 보정 문제와 같은 비선형 회귀 문제를 해결하는 데 효과적이다. 이 방법은 각 반복 단계에서 오류 함수를 최소화하는 방향으로 왜곡 계수 p_1p_2를 조정한다.

다음은 알고리즘의 주요 단계이다.

  1. 초기값 p_1, p_2 설정
  2. 현재 p_1, p_2에서의 오차 함수 계산
  3. 오차 함수의 도함수를 이용해 계수 업데이트
  4. 오차가 수렴할 때까지 반복

이 과정에서, 각 반복마다 업데이트된 계수를 이용해 보정된 좌표 x'_i, y'_i를 계산하고, 전체 오차가 최소화될 때까지 알고리즘을 실행한다.

5. 보정 후 결과 적용

최적화가 완료되면, 최종적으로 추정된 p_1p_2 값을 사용하여 이미지에서 각 픽셀의 왜곡을 보정한다. 이를 통해 Tangential 왜곡이 제거된 이미지를 생성할 수 있다.

이러한 과정을 통해 Tangential 왜곡은 효과적으로 보정되며, 보정 후 이미지는 보다 정확한 비율과 형태를 가지게 된다. 이는 특히 3D 재구성이나 컴퓨터 비전 응용 프로그램에서 매우 중요한 단계이다.