Cameras and input extensions
이 글에서는 물리 카메라의 카메라 모델, 파라미터 및 기타 사용 시 주의점과 사용자 정의 카메라를 사용한 입력 확장 방법을 소개합니다.

Input frame
Input frame은 AR의 기본 데이터 단위로, 카메라나 다른 데이터 소스에서 캡처한 단일 프레임의 모든 관련 정보를 나타냅니다. 일반적으로 input frame은 다음을 포함합니다:
- 원시 이미지 데이터(camera image)
- 카메라 파라미터(내부 파라미터 등)
- 타임스탬프
- 월드 좌표계에서의 카메라 변환 행렬
- 추적 상태(tracking status)
이 정보들은 AR 알고리즘이 위치 추정, 추적, 렌더링 등에 필요한 시공간적 컨텍스트 데이터를 제공합니다.
Physical cameras
현재 전자 기기에서 사용되는 카메라는 일반적으로 여러 개의 렌즈와 반사경으로 구성됩니다. 그러나 실제 광학 구조를 사용하여 카메라 모델을 구축하지 않고 단순화된 모델을 주로 사용합니다.
Pinhole camera model

가장 일반적으로 사용되는 단순한 모델로, 빛이 작은 구멍을 통해 180도 회전된 상을 형성합니다. 다만 카메라 출력 데이터에서는 상이 바로 세워집니다. 이 모델을 설명하기 위해 6개의 파라미터가 필요합니다: 픽셀 너비/높이 \(w, h\), 픽셀 초점 거리 \(f_x, f_y\), 주점 픽셀 위치 \(c_x, c_y\). 픽셀 너비/높이가 스케일링될 때 픽셀 초점 거리와 주점 위치도 동일하게 스케일링되면 상의 위치가 유지됨을 알 수 있습니다.
OpenCV camera model
일부 카메라에서는 현저한 방사 왜곡과 접선 왜곡이 발생할 수 있습니다. OpenCV camera model은 핀홀 모델에 고차 파라미터를 추가하여 방사 왜곡(\(k_1, k_2, k_3, \cdots\))과 접선 왜곡(\(p_1, p_2\))을 설명합니다.
참고
일부 추적기는 OpenCV camera model을 지원하지 않습니다.
OpenCV fisheye camera model
어안 카메라는 넓은 시야각의 내용을 작은 영상 영역에 압축하기 위해 원근 투영을 사용합니다. OpenCV fisheye camera model은 왜곡 보정 없이 핀홀 모델의 6개 파라미터에 $k_1, k_2, k_3, k_4, \cdots$를 사용하여 설명합니다.
참고
일부 추적기는 OpenCV fisheye camera model을 지원하지 않습니다.

Camera orientation and image orientation
휴대폰에서 일반적으로 가로로 들고(일반 세로 방향에서 시계 반대 방향으로 90도 회전) 화면 표시 방향도 가로인 경우, 후면 카메라 출력 영상은 화면에 표시될 때 실제 장면과 일치합니다. 화면 물리적 방향을 변경하지 않고 화면 표시 방향만 변경해도 물리 카메라 출력 영상 방향은 변하지 않습니다. 일반 세로 방향으로 들고 화면 표시 방향도 세로인 경우, 후면 카메라 출력 영상은 실제 장면과 일치하도록 화면에 표시하기 전에 시계 방향으로 90도 회전되어야 합니다. 화면 표시 방향이 회전할 때 렌더링된 카메라 영상은 실제 장면과 일치하도록 반대 방향의 회전 보상이 필요합니다.
카메라 방향과 영상 방향은 일반적으로 기기의 자연 방향(natural orientation)을 기준으로 정의됩니다:
- 휴대폰
- Android Android는 자연 방향을 정의하며(일반 세로 방향), 관성 측정 장치(IMU)도 이 방향을 기준으로 합니다. 이 방향에 대한 카메라 출력 영상의 회전 각도는 카메라 파라미터로 획득 가능합니다.
- iOS iOS에서는 명시적으로 정의되지는 않았지만, IMU는 Android와 동일한 기준을 사용합니다.
- 태블릿 태블릿의 자연 방향은 일부는 가로, 일부는 휴대폰과 같은 세로 방향입니다.
- 안경 안경의 자연 방향은 일반적으로 가로 방향입니다.
카메라 영상 렌더링 시 카메라 방향과 화면 방향을 종합하여 렌더링합니다.
Camera types and camera flipping
휴대폰에는 일반적으로 후면 카메라와 전면 카메라가 있습니다. 전면 카메라 출력 영상은 거울처럼 보이도록 화면에 표시하기 전에 좌우 반전이 필요합니다. 좌우 반전을 하지 않으면 매우 어색해 보입니다.
Input extensions
EasyAR는 사용자 정의 카메라를 통한 입력 확장을 지원합니다. 사용자 정의 카메라를 통해 외부에서 input frame을 얻어 AR 시스템으로 전송하여 추적기가 사용할 수 있습니다. 사용자 정의 카메라의 이미지 데이터 획득은 직접 구현할 수 있습니다.
Platform-specific guides
카메라 및 입력 확장 사용은 플랫폼과 밀접하게 연관되어 있습니다. 대상 플랫폼에 따라 아래 가이드를 참고하여 개발하세요: