DOI QR코드

DOI QR Code

A Study on Estimating Smartphone Camera Position

스마트폰 카메라의 이동 위치 추정 기술 연구

  • 오종택 (한성대학교 전자트랙) ;
  • 윤소정 (한성대학교 컴퓨터공학부)
  • Received : 2021.11.10
  • Accepted : 2021.12.10
  • Published : 2021.12.10

Abstract

The technology of estimating a movement trajectory using a monocular camera such as a smartphone and composing a surrounding 3D image is key not only in indoor positioning but also in the metaverse service. The most important thing in this technique is to estimate the coordinates of the moving camera center. In this paper, a new algorithm for geometrically estimating the moving distance is proposed. The coordinates of the 3D object point are obtained from the first and second photos, and the movement distance vector is obtained using the matching feature points of the first and third photos. Then, while moving the coordinates of the origin of the third camera, a position where the 3D object point and the feature point of the third picture coincide is obtained. Its possibility and accuracy were verified by applying it to actual continuous image data.

스마트폰과 같은 단안 카메라를 이용하여 이동 궤적을 추정하고, 주변 3차원 영상을 구성하는 기술은 실내 위치 추정뿐만 아니라 메타버스 서비스에서도 핵심이다. 이 기술에서 가장 중요한 것은 이동하는 카메라 중심의 좌표를 추정하는 것인데, 본 논문에서는 기하학적으로 이동 거리를 추정하는 새로운 알고리즘을 제안하였다. 첫 번째와 두 번째 사진으로 3차원 물체점의 좌표를 구하고, 첫 번째와 세 번째 사진의 일치되는 특징점을 이용하여 이동 거리 벡터를 구한 후에, 세 번째 카메라의 원점 좌표를 이동하며 3차원 물체점과 세 번째 사진의 특징점이 일치되는 위치를 구한다. 실제 연속적인 영상 데이터에 적용하여 그 가능성과 정확성이 검증되었다.

Keywords

Ⅰ. 서론

단안 카메라(monocular camera)를 이용하여 카메라의 이동 위치를 추적하는 Visual Odometry 기술[1,2] 과 이를 기반으로 카메라의 영상 평면(image plan) 에맺힌 2차원 영상을 역 투영하여 구성한 3차원 물체의 영상을 만드는 3D Reconstruction 기술[3]은 최근 매우 활발하게 연구되고 있다.

실내에서와 같이 위성 항법 장치의 신호를 수신하지 못하는 곳에서 스마트폰 카메라의 영상을 이용하여 현재의 이동 위치를 추적하는 용도로 활용이 가능하다. 이 경우 스마트폰에 내장된 가속도 센서나 자이로 센서의 데이터와 결합하여 위치 정확도를 높이기도 한다[4,5].

한편 Virtual Reality(VR) 및 Augmented Reality (AR), Mixed Reality(MR) 서비스에서 배경 화면이나 아바타 등의 이미지를 생성 시에 스마트폰 카메라로 입력된 2차원 영상으로 3차원 물체를 구성하여 사용한다면 훨씬 실감 있는 서비스를 제공할 수 있다.

또한 최근에 매우 활성화되고 있는 메타 버스 서비스플랫폼의 배경 화면을 구성할 때, 단순히 컴퓨터 그래픽으로 가상적인 화면을 사용하는 것보다는 실제의 3차원 영상을 구성하여 사용하는 것이 훨씬 생동감이 있을 것이다.

특히 실내에서의 3차원 영상을 재구성하는 기술을 Simultaneous Location and Mapping(SLAM)이라고 한다. 기존에는 카메라와 Lidar를 장착한 고가의 SLAM 장치를 어깨에 메고 실내를 이동하면서 2차원 영상 정보와 3차원 물체에 대한 거리 정보를 동시에 수집하면서, 이동 궤적과 주변의 3차원 영상 구성을 동시에 수행하였다[6]. 이 기술은 실내 자동 로봇 청소기에서도 활용되고 있다.

그러나 SLAM 전용 장비의 경우에는 일반인들이 사용하기 쉽지 않으므로, 일반인들이 사용하는 스마트폰 카메라를 이용한 SLAM 기술을 개발하고, 이를 일반적인 장소에서 개별적으로 3차원 배경 영상을 제작할 수 있다면, 실제적인 메타 버스 서비스 플랫폼을 구축할 수 있으므로 매우 실감적인 메타 버스 서비스를 활용할 수 있을 것이다.

SLAM 기술 중에서도 카메라를 이용하는 방식을 Visual SLAM이라고 하는데, 연속적으로 스마트폰 카메라로 입력되는 2차원 영상 데이터의 특징점들을 이용하여, 먼저 카메라의 이동 거리와 렌즈의 방향(이를 camera pose라고 한다.)을 추정하고, 다음으로는 이들 2차원 영상 데이터와 추정된 카메라 포즈 정보를 이용하여 카메라가 지향하는 방향으로의 3차원 물체의 영상을 재구성한다.

2차원 영상 데이터를 이용하여 카메라의 포즈를 추정하는 것이 가장 중요하고 오차가 많이 발생하는 부분이다. 한 장의 2차원 영상 데이터만 가지고 그 사진을 찍은 카메라의 포즈를 추정하려면, 해당 영상에 해당하는 3차원 물체에 대한 거리 정보가 있어야 한다[7]. 그러나 카메라의 특성상 3차원 물체에 대한 2차원 영상으로의 투영으로 인해 거리 정보가 모두 소실되었다. 현실적으로 카메라와 3차원 물체와의 거리를 측정하면서 3차원 물체 영상을 재구성할 수는 없으므로, 한 장의 2차원 영상만으로는 카메라의 포즈를 추정할 수 없다. 또한 카메라가 이동하는 궤적을 연속적으로 추정하기 위해서는 연속적으로 촬영된 2차원 영상 데이터가 있어야 한다.

기존의 통상적인 방법을 보면, 2장 또는 3장 이상의 연속적인 2차원 영상 데이터들을 이용하여 카메라의 회전 방향과 이동 거리를 추정한다. 2장의 연속 2차원 영상 데이터에서 특징점들을 각각 추출하고, 각각에서 일치하는 특징점의 쌍을 찾아내어 기초 행렬(Fundamental Matrix) 또는 기본 행렬(Essential Matrix)를 계산하고 이를 이용하여 방향과 이동 거리를 계산한다[7]. 그러나 이 경우 첫 번째 2차원 영상에 대한 카메라 중심 (Camera Center)을 세계 좌표계(World Coordinate) 의 원점이라고 할 때, 두 번째 2차원 영상에 대한 카메라 중심의 회전 각도는 정확하게 계산할 수 있으나, 이동 거리를 계산할 수 없다. 2차원 영상으로 투영을 할 때 거리정보가 소실되어 절대적인 거리를 알 수 없다. 다만 X-Y-Z의 3차원 세계 좌표계에서 첫 번째 카메라 중심에서 두 번째 카메라 중심으로의 이동 방향 벡터만 알 수 있다[7].

따라서 연속적으로 입력되는 2차원 영상 데이터들을 이용하여 연속적인 카메라 중심의 이동 좌표를 계산할 수 없는 문제가 있다.

그러므로 기존의 방법에서는 2장의 영상 데이터의 일치되는 특징점들을 역 투영하여 해당되는 3차원 물체의 점을 추정하고, 이들 데이터를 이용하여 대수적으로 Projective-n-Point(PnP) 문제를 풀어서 해결한다. 또는 기하학적으로 Perspective-3-Point 문제를 풀 수도 있다[8,9].

본 논문에서는 카메라 중심의 이동 거리 또는 이동 위치를 계산하는 새로운 방식을 제안한다. 이 방식은 기하학적으로 이동 위치를 구하는 방식으로 카메라 중심들이 동일 평면상(coplanar)이거나 동일 선상(colinear)에 있어도 적용이 가능하며, 3차원 물체의 점들이 동일 평면상에 있어도 사용할 수 있다.

Ⅱ. 카메라 포즈 모델링

1. 핀 홀 카메라 모델

컴퓨터 비젼에서 모델링 및 분석의 편의를 위해서 그림 1과 같이 핀 홀 카메라 모델을 많이 사용한다[10]. 3차원 카메라 좌표계 X-Y-Z에서 원점은 카메라 중심 C이고, 카메라는 Z 축 방향이며 이것은 광축(Optical Axis) 이라고 한다. 또한 Z 축 방향으로 초점거리 f의 위치에 Z 축 방향과 수직으로 영상면(image plane)이 있고, 3 차원 물체의 점(3D 물체점) X를 C를 향해서 영상 면에 투영시킨 것이 영상점(image point) x이다.

3D 물체점 X와 2D 영상면에 투영된 해당 영상점 x와의 관계는 동차 좌표계(homogeneous coordinate) 로다음 식 (1)과 같이 표시할 수 있다.

\(\left[\begin{array}{llll} f & 0 & 0 \\ 0 & f & 0 & 0 \\ 0 & 0 & 1 & 0 \end{array}\right]\left[\begin{array}{c} X \\ Y \\ Z \\ 1 \end{array}\right]=\left[\begin{array}{c} f X \\ f Y \\ Z \end{array}\right]=Z\left[\begin{array}{c} \frac{f X}{Z} \\ \frac{f Y}{Z} \\ 1 \end{array}\right]=Z\left[\begin{array}{l} x \\ y \\ 1 \end{array}\right]\)            (1)

여기서 X, Y, Z는 3D 물체점 X의 카메라 좌표계의 좌표이고, 특히 Z는 카메라 중심점 C에서 광축을 따라 3D 물체점까지의 거리이다. 또한 x, y는 영상면에서의 해당 2D 영상점 x에 대한 좌표이다. Z[xy1]T 를 정규화하면 Z[xy1]T이 되고, 영상면에 3D 물체점이 투영되는 과정에서 Z가 소실되는 것을 확인할 수 있다.

OTNBBE_2021_v21n6_99_f0001.png 이미지

그림 1. 핀 홀 카메라 모델

Fig. 1. Pin hole camera model

한 편, 3D 물체점의 좌표계가 카메라 좌표계가 아니라 세계 좌표계인 경우에는 영상면에 투영된 2D 영상 점의 카메라 좌표계로의 변환이 필요하다. 이 경우의 2D 영상점의 수식은 다음과 같다[7].

\(x=K[I \mid 0]\left[\begin{array}{ccc} r_{11} & r_{12} & r_{13} & t_{x} \\ r_{21} & r_{22} & r_{23} & t_{y} \\ r_{31} & r_{32} & r_{33} & t_{z} \\ 0 & 0 & 0 & 1 \end{array}\right]\left[\begin{array}{c} X \\ Y \\ Z \\ 1 \end{array}\right]=K[R \mid \boldsymbol{t}] X\)               (2)

여기서 K는 카메라 내부 파라미터 행렬(intrinsic matrix)이고, I는 단위 행렬(identity matrix), rij는 회전 행렬 R의 원소이고, t는 3차원 세계 좌표계에서의 이동 거리이다. K[R|t]를 카메라 매트릭스 P라고 하자. 따라서 카메라의 회전과 이동 거리인 카메라 포즈를 구하는 것은 P를 구하는 것이다.

세계 좌표의 원점 O를 기준으로 여러 개의 3D 물체점들의 좌표를 알고, 카메라 좌표계로 해당 2D 영상 점들의 좌표를 알 때, 세계 좌표의 원점 를 기준으로 카메라 중심의 회전 각도와 절대적인 이동 거리를 구할 수 있다. 그림 2와 같은 이 관계를 PnP 문제라고 한다. 카메라의 포즈를 구하는 것은 매우 많은 응용 분야에서 중요하므로 오래전부터 연구되어 왔다. 알고리즘에 따라서 3 점, 4점, 7점, 8점 PnP 솔루션들이 있다[8,9]. 이 알고리즘을 적용하기 위해서는 3D 물체점들의 세계 좌표를 알아야 한다.

2. 영상 두 장의 에피폴라 기하학

3D 물체점의 좌표를 알기 위해서는 반드시 2장 이상의 2D 영상이 필요하다. 특히 그림 3과 같이 2장의 2D 영상에서의 3D 물체점과 2D 영상점과의 기하학적인 관계를 에피폴라(Epipolar) 기하학이라고 한다[7].

OTNBBE_2021_v21n6_99_f0002.png 이미지

그림 2. 투영-n-점 문제

Fig. 2. Projective-n-Point problem

OTNBBE_2021_v21n6_99_f0003.png 이미지

그림 3. 에피폴라 기하학

Fig. 3. Epipolar geometry

그림 3에서, 동일한 3D 물체점 X에 대해서 2개의 카메라 C1과 C2의 각각의 영상면에 투영된 2D 영상 점을 각각 x1과 x2라고 한다. 이 때 상대편 영상면에 투영된 카메라 중심을 에피폴(epipole)이라고 하며 각각 e1과 e2이다. 또한 2D 영상점 x와 에피폴 e를 연결한 직선을 에 피폴라 선(epipolar line)이라고 한다. 에피폴과 에피폴라 선은 카메라 포즈를 구하거나, x1과 x2와 같이 해당점(correspondences)를 찾고 확인할 때 매우 유용하다. 에피폴라 기하학으로 관계식을 유도하면 다음 식(3)과 같다[7].

\(x_{2}^{T} F x_{1}=0\)       (3)

여기서 F는 기초 행렬(Fundamental Matrix)이다. F 행렬을 이용하여 2개의 영상면에 투영된 동일 3D 물체 점에 대한 2D 영상점의 관계를 구할 수 있다. 실제로는 2개의 영상면에서 먼저 수백개 이상의 특징점들을 각각 구하고, 그 중에서 일치되는 특징점들, 즉 해당점들을 이용하여  행렬을 구한다. 구하는 과정에서 오류에 의한 아웃 라이어 들을 제거하기 위한 Random Sample Consensus(RANSAC) 방식이 주로 사용된다[10,11].

또한 F 행렬에서 카메라 내부 파라미터 행렬 K가 제거된 기본 행렬(Essential Matrix) E를 구할 수도 있다. E=t x R의 관계이므로 이 식에서 이동 거리 t와 회전 행렬 R을 구한다[7].

그러나 카메라 회전 매트릭스 R을 이용하여 카메라의 회전각도 yaw- pitch-roll를 정확히 구할 수 있으나, 카메라 중심의 이동 거리 tx, ty, tz는 카메라 중심과 3D 물체점과의 거리 정보 Z를 모르므로 실제의 거리는 모르고 ∥t∥의 크기는 일관성을 위해 1로 정규화된다. 다만 tx, ty, tz의 비율을 구할 수 있으므로 카메라 중심의 이동 방향은 알 수 있다[7].

3. 3D 포인트의 재구성

PnP 알고리즘으로 카메라의 포즈를 추정하기 위해서는 3D 물체점의 세계 좌표를 알아야 하므로, 그림 3에서 C에서 x의 방향으로 각각 역투영을 하고 그 교차하는 점이 3D 물체점 X가 된다. 이런 방법을 삼각 측량 (triangulation)에 의한 3D 복원(reconstruction)이라고 한다. 2D 영상을 구성할 때 거리 정보가 소실되었으므로, 3D 물체점과의 거리 Z를 정확히 알 수는 없으나 상대적인 비율은 구할 수 있다.

Ⅲ. 카메라 중심의 이동 거리 추정법

기존에는 카메라 중심의 위치를 추정하거나 3D 물체 점의 거리를 추정하기 위하여, PnP 알고리즘을 비롯하여 3점 투영 포즈 추정법(3 point perspective pose estimation problem)[12], 신경망을 이용하는 방법[13] 등 많은 연구가 대수학적으로 또는 기하학적으로 오래전부터 진행되어 왔다.

본 논문에서는 새로운 방식의 기하학적 방법으로 카메라의 이동 거리를 추정하는 방식이 제안되었다. 기본 행렬(Essential Matrix) 를 이용하여 카메라 중심에 대한 회전 각도를 구하고, 또한 카메라 중심의 이동 방향을정확이 알 수 있는 점에 착안하였다. 그림 4에서 연속된 3장의 영상을 가정한다.

OTNBBE_2021_v21n6_99_f0004.png 이미지

그림 4. 제안된 새로운 카메라 중심의 이동 거리 추정

Fig. 4. Proposed novel camera center moving distance estimation method

모든 영상에는 동일한 3D 물체점 X에 대한 세 개의 2D 영상점 x1, x2, x3가 각각 있어야 한다. 먼저 첫 번째 영상에 대한 카메라 중심 C1이 세계 좌표계의 원점 O가 된다. 첫 번째 영상과 두 번째 영상에 대한 동일한 특징점들을 이용하여, E12를 구하고 이것을 이용하여두 번째 영상에 대한 카메라 원점 C2의 회전 행렬 R12 과 이동 거리 t12를 계산한다. t12의 크기는 정규화되어있고, 세 번째 영상에 대한 카메라 원점 C3의 이동 거리는 t12에 대한 비율로 계산된다. 또한 3D 복원으로 첫 번째 영상과 두 번째 영상으로 3D 물체점 X의 좌표를 추정한다.

그 다음으로, 첫 번째 영상과 세 번째 영상의 동일한 특징점들을 이용하여 E13를 구하고 마찬가지로 C3의 회전 행렬 R13와 이동 거리 t13를 계산한다. t13의 크기도 정규화 되어 있으므로 이동 방향만을 고려한다.

즉, C1을 기준으로 t13의 이동 방향으로 R13만큼 회전된 C3 좌표계와, C3에서 x3로 역투영된 직선을 함께 이동시킨다. C3의 어느 이동 지점에서 역투영된 직선은 앞에서 추정된 3D 물체점 X와 만나게 된다. x3도 X에서 투영된 것이므로 반드시 3개의 역투영된 선들이 만나는 점이 있다. 이때의 C3의 위치가 세 번째 영상에 대한 카메라 원점 위치에 해당한다. 이 새로운 알고리즘으로 t13의 이동 거리를 계산할 수 있다.

Ⅳ. 실험 및 결과

성능 검증을 위한 실험은 일반 스마트폰 카메라를 사용하였다. 스마트폰 카메라를 사용하여 X축으로만 이동한 경우, 및 Z축으로만 이동한 경우, yaw 각도로만 회전한 경우, X축으로 이동하면서 yaw 각도로 회전한 경우 등 총 4가지 경우에 대해서, 등간격으로 거리를 10 cm 씩 이동하거나 각도를 10도씩 회전하며 3장씩의 사진을 연속으로 촬영하였다. 또한 각각 장소가 다른 곳에서 동일한 방법으로 각각 12장씩의 사진 세트 1과 사진 세트 2를 촬영하였다. 영상처리는 OpenCV의 함수들을 이용하여 처리하였다[11].

OTNBBE_2021_v21n6_99_f0005.png 이미지

그림 5. 제안된 방법에 의한 3개의 3D 물체점 일치

Fig. 5. The three matching points of the 3D object points by the proposed method

각각 사진 세트 1과 사진 세트 2의 사진들을 사용하여 실제 카메라 중심 C3와 추정된 위치의 오차를 계산하였다.

그림 5는 카메라 렌즈 방향으로, 즉 +Z축 방향으로 카메라가 이동하면서 연속적으로 등간격으로 사진을 촬영한 경우에 대한 것이다. 제일 앞의 사진이 C3 위치에서 촬영한 것이며, t13의 이동 방향으로 C3를 이동시키면서 3개의 3D 물체점이 일치하는 지점을 찾은 것을 확인할 수 있다. 3개의 원안의 점들이 일치된 3D 물체 점들이다.

표 1은 본 논문에서 제안한 방법으로 카메라 원점의 이동 거리를 추정한 실험 결과이며, 평균 오차 8.3%의 정확도를 보이고 있다. 더 많은 3D 물체점들을 사용하고 잡음을 제거하는 알고리즘을 적용하면 정확도는 향상될 수 있을 것이다.

표 1. 제안된 이동 거리 추정 방식에 대한 오차 결과

OTNBBE_2021_v21n6_99_t0001.png 이미지

Table 1. The Estimated Error for the Proposed Method

Ⅴ. 결론

본 논문에서는 스마트폰 카메라와 같은 단안 카메라를 이용하여 수집된 영상 정보를 이용하여 카메라의 이동 위치를 추정하는 새로운 방법이 제안되었으며, 그 성능이 검증되었다. 향후에는 기존의 방법과 비교 분석 및 대수적 해법을 도출해야 할 것이다.

References

  1. Raul Mur-Artal, Jose Maria Martinez Montiel, Juan D. Tardos, "ORB-SLAM: A Versatile and Accurate Monocular SLAM System", IEEE Tr. Robotics, Vol. 31, No. 5, pp. 1147-1163, Aug. 2015. https://doi.org/10.1109/TRO.2015.2463671
  2. Huangying Zhan, Chamara S. Weerasekera, Jia-Wang Bian, Ian Reid, "Visual Odometry Revisited: What should be learnt?", IEEE Int. Conf. Robotics & Automation, pp. 4203-4210, May 2020. DOI: 10.1109/ICRA40945.2020.9197374
  3. Daeyun Shin, Zhile Ren, Erik B. Sudderth, Charless C. Fowlkes, "Multi-layer Depth and Epipolar Feature Transformers for 3D Scene Reconstruction", IEEE/CVF Conf. Comp. Vision & Pattern Recog. Workshops, pp. 39-43, 2019.
  4. Keunyoung Jung, Jongtaek Oh, "A Study on the Estimation of Smartphone Movement Distance using Optical Flow Technology on a Limited Screen", J. Inst. Internet, Broadcast. Comm., Vol. 19, No. 4, pp. 71-76, Aug. 2019.
  5. Huan Li, Mingyang, Byung H. Kim, Anastasios I. Mourikis, "Real-time Motion Tracking on a Cellphone using Inertial Sensing and a Rolling-shutter Camera", IEEE Int. Conf. Robotics & Automation, pp. 4712-4719, May 2013. DOI: 10.1109/ICRA.2013.6631248
  6. Cesar Debeunne, Damien Vivet, "A Review of Visual-LiDAR Fusion based Simultaneous Localization and Mapping", Sensors, Vol. 20, No. 7, p. 2068, 2020. doi.org/10.3390/s20072068
  7. Richard Hartley, Andrew Zisserman, Multiple View Geometry in Computer Vision, 2E, Cambridge University Press, 2004.
  8. Long Quan, Zhongdan Lan, "Linear N-point Camera Pose Determination", IEEE Tr. Pattern Analysis Machine Intelligence, Vol. 21, No. 8, pp. 774-780, 1999. https://doi.org/10.1109/34.784291
  9. David Nister, "An Efficient Solution to the Five-point Relative Pose Problem", IEEE Tr. Pattern Analysis Machine Intelligence, Vol. 26, No. 6, pp. 756-770, 2004. https://doi.org/10.1109/TPAMI.2004.17
  10. Kenichi Kanatani, Yasuyuki Sugaya, Yasushi Kanazawa, Guide to 3D Vision Computation, Springer, 2016.
  11. Adrian Kaehler, Gary Bradski, Learning OpenCV 3, O'Reilly, 2017.
  12. David Nister, Henrik Stewenius, "A Minimal Solution to the Generalised 3-point Pose Problem", J. Math. Imaging Vision, Vol. 27, No. 1, pp. 67-79, 2007. https://doi.org/10.1007/s10851-006-0450-y
  13. Mi Tian, Qiong Nie, Hao Shen, "3D Scene Geometry-aware Constraint for Camera Localization with Deep Learning", IEEE Int. Conf. Robotics Automation, pp. 4211-4217, Aug. 2020. DOI: 10.1109/ICRA40945.2020.9196940