3D 구조 복원은 두 이미지 간의 기하학적 관계를 통해 삼차원 상의 점을 추정하는 과정이다. 이 과정은 주로 스테레오 비전에서 이루어지며, 두 개의 카메라로부터 획득된 이미지 쌍을 이용하여 물체의 깊이 정보를 계산하게 된다. 이를 위해서는 먼저 에피폴라 기하학적 제약 조건을 기반으로 삼각 측량(triangulation) 기법을 사용하여 3D 점을 복원한다.

스테레오 카메라의 기본 개념

스테레오 비전 시스템에서는 두 대의 카메라가 서로 다른 위치에서 동일한 물체를 촬영한다. 이 두 카메라의 위치 차이를 "베이스라인(baseline)"이라고 부르며, 이로 인해 각 카메라에서 얻는 이미지의 물체 위치가 서로 다르게 나타난다. 이 차이를 "시차(disparity)"라고 하며, 시차를 이용하여 깊이(depth)를 계산할 수 있다.

삼각 측량을 통한 3D 좌표 계산

두 이미지에서 동일한 물체의 점을 찾았다면, 이 점들의 픽셀 좌표를 이용하여 삼차원 공간에서 그 점의 실제 위치를 복원할 수 있다. 이때 삼각 측량은 두 개의 시선(ray)을 교차시켜 3D 점의 위치를 계산하는 방법이다.

두 이미지에서의 점 \mathbf{x}_1\mathbf{x}_2는 각각의 카메라 좌표계에서 다음과 같이 표현된다.

\mathbf{x}_1 = \mathbf{K}_1 \mathbf{P}_1 \mathbf{X}
\mathbf{x}_2 = \mathbf{K}_2 \mathbf{P}_2 \mathbf{X}

여기서,
- \mathbf{x}_1\mathbf{x}_2는 각각 첫 번째 카메라와 두 번째 카메라에서의 점의 이미지 좌표이다.
- \mathbf{K}_1\mathbf{K}_2는 첫 번째와 두 번째 카메라의 내부 매개변수(intrinsic parameters)를 나타내는 행렬이다.
- \mathbf{P}_1\mathbf{P}_2는 첫 번째와 두 번째 카메라의 외부 매개변수(extrinsic parameters)를 나타내는 행렬로, 회전과 변환을 포함한다.
- \mathbf{X}는 삼차원 공간에서의 복원할 점의 좌표이다.

삼각 측량의 수학적 해법

두 개의 카메라에서의 이미지 좌표 \mathbf{x}_1\mathbf{x}_2가 주어졌을 때, 이 좌표들은 다음과 같은 비례 관계를 갖는다.

\mathbf{x}_1 \sim \mathbf{K}_1 [\mathbf{R}_1 | \mathbf{t}_1] \mathbf{X}
\mathbf{x}_2 \sim \mathbf{K}_2 [\mathbf{R}_2 | \mathbf{t}_2] \mathbf{X}

여기서 \mathbf{R}_1, \mathbf{R}_2는 각각 첫 번째와 두 번째 카메라의 회전 행렬, \mathbf{t}_1, \mathbf{t}_2는 각각 첫 번째와 두 번째 카메라의 변환 벡터를 나타낸다.

이때 삼차원 좌표 \mathbf{X}를 복원하기 위해서는 두 개의 시선(ray)이 교차하는 지점을 찾아야 한다. 이를 위해 최소 자승법(least squares)과 같은 최적화 기법을 사용하여 \mathbf{X}를 추정할 수 있다.

이를 일반화하면 다음과 같은 과정을 따르게 된다.

  1. 두 이미지에서의 대응점을 찾는다.
  2. 각 카메라의 내부 및 외부 파라미터를 이용하여 3D 점을 추정한다.
  3. 삼차원 공간에서의 해당 점의 위치를 계산한다.

시차와 깊이 계산

시차 \mathbf{d}는 두 이미지에서 동일한 점의 위치 차이로 정의된다. 시차가 클수록 물체는 카메라에 가까이 있고, 시차가 작을수록 물체는 카메라에서 멀리 떨어져 있다. 깊이 Z는 시차를 이용하여 다음과 같이 계산된다.

Z = \frac{f \cdot B}{d}

여기서,
- f는 카메라의 초점 거리(focal length)를 나타낸다.
- B는 두 카메라 간의 베이스라인(baseline) 거리이다.
- d는 시차(disparity)를 의미한다.

이 공식에 따르면, 시차가 클수록 깊이는 작아지고, 시차가 작을수록 깊이는 커진다. 따라서 두 이미지 간의 시차를 정확히 측정하는 것이 깊이 계산의 핵심이다.

에피폴라 제약과 삼차원 복원

삼차원 복원을 위해서는 에피폴라 기하학적 제약을 이용하여 이미지 간의 대응점을 찾아야 한다. 두 이미지에서의 한 점은 반드시 에피폴라 선(epipolar line) 위에 위치해야 한다. 에피폴라 제약 조건을 수학적으로 표현하면 다음과 같다.

두 이미지에서의 대응점 \mathbf{x}_1\mathbf{x}_2는 다음 관계를 만족해야 한다.

\mathbf{x}_2^\top \mathbf{F} \mathbf{x}_1 = 0

여기서,
- \mathbf{F}는 두 이미지 간의 기본 행렬(fundamental matrix)이다.
- \mathbf{x}_1\mathbf{x}_2는 각각 첫 번째와 두 번째 이미지에서의 점의 좌표이다.

기본 행렬 \mathbf{F}는 두 카메라 간의 기하학적 관계를 나타내며, 이는 외부 매개변수(회전 및 변환)와 내부 매개변수에 따라 결정된다. 따라서 기본 행렬을 정확히 계산하는 것이 두 이미지 간의 대응점을 찾는 데 중요한 역할을 한다.

기본 행렬과 삼각 측량

기본 행렬 \mathbf{F}는 두 카메라의 외부 매개변수인 회전 행렬 \mathbf{R}과 변환 벡터 \mathbf{t}를 통해 계산된다. 두 카메라의 외부 매개변수는 각각 \mathbf{R}_1, \mathbf{t}_1\mathbf{R}_2, \mathbf{t}_2로 표현된다. 기본 행렬은 두 카메라 간의 상대적인 회전과 변환을 고려하여 다음과 같이 정의된다.

\mathbf{F} = \mathbf{K}_2^{-\top} [\mathbf{t}]_\times \mathbf{R} \mathbf{K}_1^{-1}

여기서,
- [\mathbf{t}]_\times는 변환 벡터 \mathbf{t}의 스큐 대칭 행렬(skew-symmetric matrix)이다.
- \mathbf{R}은 두 카메라 간의 상대적인 회전 행렬을 나타낸다.
- \mathbf{K}_1\mathbf{K}_2는 각각 첫 번째와 두 번째 카메라의 내부 매개변수 행렬이다.

기본 행렬 \mathbf{F}가 계산되면, 이 행렬을 이용하여 두 이미지에서의 대응점을 찾을 수 있으며, 이러한 대응점을 통해 삼각 측량을 수행하여 3D 구조를 복원할 수 있다.

최소 자승법을 이용한 3D 복원

삼차원 복원 문제는 대응점들 사이의 오차를 최소화하는 최적화 문제로 표현될 수 있다. 일반적으로 최소 자승법(least squares method)을 사용하여 3D 좌표 \mathbf{X}를 추정하게 된다.

두 이미지에서의 대응점 \mathbf{x}_1\mathbf{x}_2가 주어졌을 때, 이 좌표들이 에피폴라 제약을 만족하면서 삼차원 공간에서의 점 \mathbf{X}를 결정하기 위해 다음과 같은 오차 함수를 정의할 수 있다.

E(\mathbf{X}) = \sum_{i=1}^{N} \left( \mathbf{x}_i - \mathbf{P}_i \mathbf{X} \right)^2

여기서,
- E(\mathbf{X})는 3D 좌표 \mathbf{X}에 대한 오차 함수이다.
- \mathbf{P}_i는 각 카메라의 투영 행렬이다.
- \mathbf{x}_i는 이미지에서의 점 좌표이다.

이 오차 함수를 최소화하는 \mathbf{X}를 구하는 것이 삼차원 복원의 핵심이다. 이를 위해서는 각 이미지에서의 점의 위치와 카메라의 투영 행렬을 정확히 알아야 하며, 이를 바탕으로 삼차원 공간에서의 점의 위치를 추정할 수 있다.

깊이 불확실성과 복원의 정확도

삼차원 복원의 정확도는 여러 요인에 의해 영향을 받는다. 그중 가장 중요한 요인은 카메라 간의 베이스라인(baseline) 길이와 시차(disparity)의 정확도이다. 시차가 작은 경우, 즉 물체가 멀리 있는 경우 깊이 값의 불확실성이 커지며, 시차가 클수록 복원된 3D 점의 정확도가 향상된다.

베이스라인이 너무 짧은 경우, 복원된 깊이 정보의 불확실성이 증가할 수 있으며, 이는 삼차원 구조 복원의 오류를 초래할 수 있다. 반면에 베이스라인이 너무 길면 카메라 간의 시차가 너무 커져 대응점을 찾기가 어려워질 수 있다. 따라서 적절한 베이스라인 설정이 중요하다.

베이스라인의 길이

베이스라인의 길이는 삼차원 복원에서 매우 중요한 요소이다. 베이스라인은 두 카메라 간의 거리로, 이 길이에 따라 복원된 3D 구조의 정확도가 크게 달라진다.

베이스라인 길이와 깊이 정확도의 관계

베이스라인이 길어질수록 두 카메라에서 얻는 시차(disparity)가 커지게 된다. 시차가 클수록 깊이를 보다 정확하게 계산할 수 있다. 이는 다음의 깊이 계산 공식을 통해 확인할 수 있다.

Z = \frac{f \cdot B}{d}

여기서,
- Z는 깊이(depth)이다.
- f는 카메라의 초점 거리이다.
- B는 두 카메라 간의 베이스라인 거리이다.
- d는 시차(disparity)이다.

이 공식에서 베이스라인 B가 커지면 시차 d가 작은 경우에도 깊이 Z의 변화량이 커지게 되어 보다 정밀한 깊이 계산이 가능한다.

베이스라인이 짧을 때의 문제점

베이스라인이 너무 짧으면 시차가 작아져서, 같은 픽셀 차이에 대해 깊이 차이가 매우 크게 나타나게 된다. 즉, 시차 측정의 작은 오차가 깊이 계산에서 큰 오차를 발생시킬 수 있다. 이는 삼차원 복원의 정확도에 부정적인 영향을 미치며, 특히 멀리 있는 물체의 깊이를 추정할 때 그 오류가 더욱 커지게 된다.

  1. 깊이 정보의 정확도 감소
    짧은 베이스라인은 시차(disparity)가 매우 작아지게 만든다. 시차가 작아지면 깊이 계산 공식에서 분모가 작아져 깊이 값의 변화량이 미미해진다. 즉, 시차 측정의 작은 오류가 깊이 계산에서 큰 오차로 이어질 가능성이 크다. 다음의 깊이 계산 공식에서 이 관계를 확인할 수 있다.
Z = \frac{f \cdot B}{d}

여기서 B는 베이스라인, d는 시차, Z는 깊이이다. 베이스라인 B가 작아지면 동일한 시차 값에 대해 깊이 Z의 변화가 적기 때문에 깊이 정보를 더 정확히 추정하기 어렵다.

  1. 멀리 있는 물체의 복원 어려움
    짧은 베이스라인은 멀리 있는 물체에 대한 깊이 정보를 복원할 때 큰 문제를 일으킨다. 멀리 있는 물체일수록 시차는 작아지는데, 짧은 베이스라인에서는 이미 작은 시차가 더욱 작아지게 되어, 이를 통해 얻는 깊이 정보는 매우 불확실해진다. 즉, 먼 거리에 있는 물체에 대한 복원 정확도가 크게 떨어진다.

  2. 깊이 정보의 민감도 증가
    짧은 베이스라인은 깊이 계산에서 민감도가 높아져, 시차의 작은 변화만으로도 깊이 값이 급격하게 변화한다. 이러한 민감도는 실질적으로 시스템의 깊이 계산 신뢰성을 낮추게 된다. 예를 들어, 아주 작은 시차 계산 오류가 발생하더라도 깊이 값이 크게 왜곡될 수 있다.

  3. 물체의 깊이 분해능(Depth Resolution) 저하
    베이스라인이 짧으면 동일한 깊이 범위 내에서 분해능이 저하된다. 즉, 서로 다른 물체들 간의 깊이 차이를 정확하게 구분하기가 어려워진다. 이는 깊이 차이가 작은 두 물체를 구분할 때 더 큰 어려움을 야기하며, 복원된 3D 모델이 부정확하게 나타날 수 있다.

  4. 근거리 물체에 대한 이점 감소
    짧은 베이스라인은 일반적으로 가까운 물체에 대해서 더 나은 깊이 복원을 가능하게 한다. 그러나 지나치게 짧은 베이스라인은 가까운 물체에 대해서도 복원 정확도가 떨어질 수 있다. 적정 수준의 베이스라인이 설정되지 않으면 근거리 물체에 대해서도 충분한 시차 정보를 얻을 수 없어 깊이 추정이 부정확해질 수 있다.

  5. 시스템 설계의 물리적 제한
    짧은 베이스라인은 두 카메라 간의 물리적 간격이 매우 좁아진다는 것을 의미한다. 이로 인해 카메라의 시점 차이가 거의 없게 되어, 두 이미지가 매우 비슷하게 보일 수 있다. 이때 두 이미지 간의 차이를 구분하기 어려워 스테레오 매칭(stereo matching)이 제대로 작동하지 않을 수 있으며, 이는 3D 복원에 부정적인 영향을 미친다.

지나치게 긴 베이스라인의 문제점

  1. 시차 계산의 어려움
    베이스라인이 너무 길면, 동일한 물체를 두 이미지에서 촬영했을 때 시차가 매우 커지게 된다. 이로 인해 두 이미지 간의 물체 위치 차이가 크게 나타나며, 경우에 따라 한쪽 카메라에서는 물체가 아예 프레임 밖으로 벗어나는 현상도 발생할 수 있다. 이러한 경우에는 대응점을 찾기가 매우 어려워지며, 스테레오 매칭 알고리즘의 실패 가능성이 높아진다.

  2. 정합 오류 증가
    긴 베이스라인으로 인해 시차가 크게 나타날 경우, 스테레오 정합(stereo matching)에서의 불일치가 증가한다. 특히, 세밀한 구조나 텍스처가 적은 물체에서는 대응점을 찾기가 더욱 어려워지며, 이로 인해 복원된 3D 구조에 오류가 생기기 쉽다.

  3. 카메라 간 좌우 시점 차이의 증가
    베이스라인이 길어지면 두 카메라의 시점이 매우 달라진다. 이로 인해, 두 카메라에서 관측되는 물체의 모양이나 모습이 크게 달라질 수 있다. 예를 들어, 한 카메라에서는 물체의 앞면이 보이지만, 다른 카메라에서는 측면이 보일 수 있다. 이러한 좌우 시점 차이는 대응점 추출을 어렵게 만들고, 결과적으로 복원된 3D 구조의 품질을 떨어뜨릴 수 있다.

  4. 시스템 설계의 복잡성 증가
    지나치게 긴 베이스라인은 물리적 설계 측면에서도 도전 과제가 된다. 두 카메라를 멀리 떨어뜨려 배치하려면 더 많은 공간이 필요하며, 이는 시스템의 휴대성이나 설치의 용이성을 저해할 수 있다. 또한, 긴 베이스라인은 카메라의 동기화와 보정(calibration) 과정도 더 복잡하게 만든다.

  5. 멀리 있는 물체의 복원 한계
    베이스라인이 지나치게 길면 가까운 물체에 대해서는 정밀한 복원이 가능하지만, 반대로 멀리 있는 물체에 대해서는 시차가 너무 작아지기 때문에 깊이 정보를 제대로 얻지 못할 수 있다. 따라서 원거리 물체에 대한 복원이 부정확해지며, 이는 실용적인 응용에서 문제를 일으킬 수 있다.

결론적으로, 지나치게 긴 베이스라인은 시스템의 3D 복원 성능에 부정적인 영향을 미칠 수 있으며, 적절한 베이스라인 설정이 매우 중요하다. 베이스라인의 길이는 관찰하려는 물체의 거리, 카메라 성능, 그리고 전체 시스템의 목적에 맞게 신중하게 결정되어야 한다.

적절한 베이스라인 설정의 중요성

따라서, 베이스라인의 길이는 시스템의 목표와 대상 물체의 거리 범위에 맞게 신중하게 설정해야 한다. 가까운 거리의 물체를 복원할 때는 짧은 베이스라인이 적절하며, 먼 거리에 있는 물체를 복원할 때는 긴 베이스라인이 요구된다. 일반적으로, 베이스라인은 카메라의 초점 거리와 관측하고자 하는 물체의 예상 거리에 따라 결정된다.