카메라 장치
카메라 하드웨어를 이해하는 것은 올바른 센서를 선택하고, 어떤 알고리즘으로도 이후 단계에서 고칠 수 없는 계통적 오류를 인식하는 데 필수적입니다. SLAM 시스템이 보는 이미지는 특징이 검출되기 훨씬 전에 렌즈, 센서, 노출 설정에 의해 이미 형태가 결정되어 있습니다.
렌즈
렌즈는 시야각(FoV), 초점 심도, 왜곡을 결정합니다:
- 초점 길이: 초점 길이가 길수록 FoV가 좁아집니다. SLAM은 일반적으로 시차(parallax)를 최대화하고 회전 중에도 특징을 시야 내에 유지하기 위해 넓은 FoV를 주는 광각 렌즈를 사용합니다. 텔레센트릭 렌즈는 반대되는 특수 용도로, 깊이에 관계없이 배율이 일정하며 SLAM보다는 계측(metrology)에 사용됩니다.
- 조리개 (-값): 조리개가 클수록(즉 -값이 작을수록) 더 많은 빛을 받아 더 빠른 셔터 속도와 적은 모션 블러를 가능하게 하지만, 그 대가로 초점 심도가 얕아집니다 --- 서로 다른 깊이의 특징들이 흐려질 수 있습니다.
- 렌즈 MTF (Modulation Transfer Function): 각 공간 주파수에서 렌즈가 보존하는 대비의 양을 정량화합니다 --- 사실상 광학계의 해상력입니다. 고해상도 센서라도 MTF가 낮은 렌즈 뒤에 있으면 여전히 흐릿한 이미지를 만듭니다; 하드웨어를 지정할 때 MTF 곡선을 확인하세요.
- 어안 렌즈: 180°를 넘는 FoV를 가지지만 특수한 투영 모델(등거리, 등입체각)이 필요합니다.
이미지 센서: CCD 대 CMOS
- CCD: 역사적으로 더 높은 이미지 품질과 낮은 잡음을 제공; 더 비싸고 전력 소모가 큽니다. 여전히 고급 과학 카메라에서 사용됩니다.
- CMOS: 로보틱스에서 지배적입니다 --- 낮은 전력, 저렴한 비용, 온칩 처리. 현대의 CMOS는 CCD 품질에 근접합니다.
글로벌 셔터 대 롤링 셔터. 글로벌 셔터는 모든 픽셀을 동시에 노출하여 기하학적으로 일관된 스냅샷을 제공합니다. 롤링 셔터는 행(row)을 순차적으로 노출하여, 카메라나 장면이 빠르게 움직일 때 이미지를 왜곡시킵니다. 대부분의 저가 카메라는 롤링 셔터를 사용합니다; 동적인 플랫폼의 경우 글로벌 셔터를 구매하거나 모델에서 이를 보상해야 합니다.
노출, ISO, 해상도 트레이드오프
이미지 품질은 세 가지 요소 간의 절충입니다:
- 노출이 길수록 더 많은 빛을 모으지만 모션 블러가 추가됩니다 --- 플랫폼이 빠를수록 노출은 짧아야 합니다.
- 높은 ISO/게인은 짧은 노출을 보상하지만 잡음이 증가하며, 이는 특징 검출과 매칭을 저하시킵니다.
- 높은 해상도는 더 많은 디테일을 제공하지만 프레임당 처리 시간이 증가합니다; 많은 SLAM 시스템은 센서가 더 높은 해상도를 지원해도 640x480 또는 1280x720에서 동작합니다.
자동 노출은 프레임 간 이미지 밝기를 변화시켜 직접법의 밝기 항상성 가정을 깨뜨립니다 --- 고정 노출이나 광도 캘리브레이션이 도움이 됩니다. VIO 리그의 경우, 카메라가 하드웨어 트리거링/타임스탬핑을 지원하는지도 확인하세요: 소프트웨어 타임스탬프는 밀리초 단위로 지터가 발생하며, 이는 카메라-IMU 간의 정밀한 융합에 치명적입니다.
깊이 추정이 가능한 카메라 구성
- 스테레오 비전: 기선(baseline) 를 갖는 두 카메라; 시차(disparity) 로부터 깊이는 . 능동적이지 않아 야외에서 동작하지만, 텍스처가 없는 표면에서는 어려움을 겪습니다. 이므로, 고정된 시차 오차는 대략 에 비례하여 커지는 깊이 오차를 유발합니다: 기선은 사용 가능한 깊이 범위를 직접 결정하지만, 기선이 커지면 최소 측정 가능 깊이도 커지고 매칭도 더 어려워집니다.
- RGB-D / 구조광: IR 패턴을 투사하고 이를 삼각측량합니다 (예: Kinect v1). 실내에서 밀집 깊이를 제공; 햇빛에서는 실패합니다.
- 능동 IR 스테레오 / 비행시간(ToF): ToF 센서는 픽셀당 방출된 IR 광의 왕복 시간을 측정합니다. 소형이고 빠르지만, 범위 제한과 다중 경로(multi-path) 아티팩트가 있습니다.
시차 맵(disparity map) --- 일반적으로 semi-global matching (SGM)으로 계산되거나 RGB-D 센서에서 읽어들이는 픽셀별 스테레오 시차 맵 --- 은 표준적인 중간 산출물입니다; 시차 를 가진 각 픽셀은 스테레오 모델을 통해 3D 점이 됩니다.
SLAM을 위한 카메라 선택
실내 SLAM을 위한 합리적인 출발점은 광각 렌즈를 가진 640x480 또는 1280x720 글로벌 셔터 카메라입니다; 야외 고속 플랫폼의 경우 해상도보다 글로벌 셔터와 프레임 레이트를 우선하세요. 그런 다음 실제 성능을 좌우하는 세세하지만 중요한 사항들을 확인하세요: 고정된(또는 제어 가능한) 노출, 하드웨어 타임스탬프, 견고한 마운트, 그리고 캘리브레이션 도구가 지원하는 렌즈/모델 조합.
흔한 함정
- 하드웨어 아티팩트를 알고리즘의 문제로 오인: 롤링 셔터 왜곡, 자동 노출 플리커, 모션 블러는 모두 “추적 버그”처럼 보입니다.
- IR 간섭: 동일한 장면을 보는 여러 개의 구조광/ToF 카메라는 서로의 패턴을 손상시킵니다.
- 헐거운 마운트와 열: IMU에 대해 휘어지거나 가열되면서 내부 파라미터(intrinsics)가 변하는 카메라는 소리 없이 캘리브레이션을 무효화합니다.
- USB 대역폭: 하나의 버스에 여러 카메라가 연결되면 예측 불가능하게 프레임을 드롭합니다; 사양뿐 아니라 토폴로지도 확인하세요.
SLAM에서의 의미
센서 선택은 달성 가능한 정확도의 한계를 정합니다: 기선은 스테레오 깊이 정밀도를 결정하고, 셔터 방식은 얼마나 빠르게 움직일 수 있는지를 결정하며, 렌즈의 FoV/MTF는 얼마나 많은 사용 가능한 특징을 얻을지를 결정합니다. 실제로 많은 “알고리즘 버그”는 롤링 셔터 왜곡, 자동 노출 플리커, 모션 블러로 밝혀지는데, 이는 코드가 아니라 하드웨어와 설정 수준에서 해결되는 문제입니다.