영상 전체에서 4초 간격으로 좌우 동시 프레임 추출
기술 필드 노트 #04 · 2026년 10월
일반 촬영 영상으로 스테레오 캘리브레이션 검증하기
타깃 없이 광각 스테레오 장비를 검증하는 방법과, 정상적인 캘리브레이션을 나쁘게 보이게 할 수 있는 두 가지 측정상의 함정
스테레오 영상과 캘리브레이션 파일은 있지만 타깃이 없는 경우, 해당 파일이 실제 장비와 촬영 모드에 맞는지 검증할 수 있을까요? Field Note #03의 120초 촬영 영상으로 두 캘리브레이션을 비교했습니다. 내부 파라미터·왜곡·스테레오 회전의 일치도를 평가하며 베이스라인 길이, 실측 깊이, 카메라–IMU 캘리브레이션은 검증하지 않습니다.
문제
캘리브레이션 타깃 없이 검증하는 이유
캘리브레이션 파일의 자체 재투영 RMS가 낮더라도 현재 촬영 데이터에는 맞지 않을 수 있습니다. 장비 개체, 해상도, 크롭·비닝 모드가 다르거나 운송 중 장비가 변형됐을 수 있습니다. 실제 좌우 동시 프레임의 특징점 대응은 캘리브레이션이 예측하는 에피폴라 제약을 충족해야 하므로, 일반 촬영 영상만으로도 유용한 일치도 검사를 수행할 수 있습니다.
- 촬영 영상
- 120초 헤드마운트 스테레오 촬영, 좌우 1600×1200·30fps, 광각 렌즈, 실내 작업대
- 캘리브레이션 A
- Kalibr pinhole + equidistant(어안) 모델. 같은 1600×1200 모드에서 AprilGrid 촬영 후 정확히 0.5배 축소하여 계산
- 캘리브레이션 B
- 같은 카메라 계열의 1920×1080(16:9) 모드에서 생성된 pinhole + rational(8계수) 모델
- A를 원본 해상도로 환산
- f′ = 2f, c′ = 2c + 0.5(OpenCV 픽셀 중심 규약). 왜곡·외부 파라미터는 유지
방법
필터링하지 않은 대응점의 각도 기반 에피폴라 오차
SIFT 비율 검사만 적용. RANSAC으로 이상 대응점을 제거하지 않음
왜곡 모델을 뉴턴 반복으로 역변환하여 픽셀을 단위 광선으로 변환
에피폴라 평면까지의 각도를 영상 중심 초점거리 기준 픽셀로 환산 (이 사례에서 1° = 8.42px)
E = [t]× R # from the calibration, x_right = R·x_left + t
n = normalize(E · ray_left) # normal of the epipolar plane, in the right camera
err_deg = asin(|n · ray_right|) # angle between the right ray and that plane
err_px = err_deg · f · π/180 # f = focal length at the image centre
이 측정은 내부 파라미터·왜곡·스테레오 회전·베이스라인 방향의 결합 일치도를 검사합니다. 베이스라인 길이는 에피폴라 제약식에 포함되지 않아 검증할 수 없습니다.
결과
촬영 모드에 맞는 캘리브레이션과 불일치하는 캘리브레이션


| 시야각 | 대응점 | Median | p90 |
|---|---|---|---|
| 0–20° | 1,373 | 0.48 px | 1.89 px |
| 20–40° | 5,777 | 0.41 px | 1.59 px |
| 40–55° | 4,330 | 0.31 px | 1.56 px |
| 55–65° | 2,873 | 0.42 px | 2.03 px |
| 65–75° | 3,784 | 0.45 px | 1.68 px |
| 75–90° | 1,249 | 0.46 px | 1.80 px |
| 전체, A | 19,386 | 0.41 px | 1.69 px |
| 전체, B | 19,386 | 1.83 px | 4.17 px |
중앙값 약 0.4px은 SIFT 대응점 위치 추정 오차 수준에 가깝고, 중심부터 75°를 넘는 주변부까지 유사한 수준을 유지합니다. 캘리브레이션 B는 자체 세션에서 낮은 RMS(0.36px)를 보였지만, 16:9 모드에서 생성된 파라미터이므로 이번 4:3 촬영에 그대로 사용할 수 없습니다.
민감도
작은 회전 오차에 대한 민감도
교대로 선택한 프레임 쌍으로 스테레오 회전의 3자유도 보정을 적합하고 나머지 쌍에서 평가했습니다. 필요한 보정은 x/y/z축 각각 −0.011°/−0.008°/−0.006°로 작았습니다. 알려진 0.1° 회전 교란을 가하면 평가 오차가 눈에 띄게 증가했습니다.

주의점 1
정렬 영상의 수직 잔차는 가장자리에서 커질 수 있습니다
정렬한 영상에서 대응점의 행 차이를 측정하는 일반적인 방법은 광각 광선을 평면 영상으로 투영합니다. 넓은 시야의 가장자리에서는 투영 배율이 커져 같은 각도 오차라도 픽셀 단위 수직 잔차가 크게 보일 수 있습니다.

어안 또는 광각 스테레오의 캘리브레이션 일치도를 평가할 때는 각도 기반 오차를 사용하거나, 정렬 영상의 수직 잔차는 중앙 시야로 범위를 제한해 해석해야 합니다.
주의점 2
OpenCV 기본 어안 역투영의 각도 제한 주의
등거리 어안 모델에서 왜곡 각도는 θd = θ(1 + k₁θ² + k₂θ⁴ + k₃θ⁶ + k₄θ⁸)입니다. 이 렌즈의 양의 k₁(0.12)에서는 실제 광선각 약 74°에서 θd가 π/2에 도달합니다. 테스트한 OpenCV 5.0 환경과 이 렌즈 계수·기본 설정에서는 그 이후 각도의 역투영 결과가 실제 광선각과 달라졌습니다. 모든 렌즈나 OpenCV 환경에 일반화할 수 있는 결론은 아닙니다.

어안 역투영 결과를 신뢰하기 전에 사용 중인 렌즈 계수와 OpenCV 버전에서 투영–역투영 왕복 검사를 수행하세요. 실패한다면 θd(θ)를 직접 뉴턴 반복으로 역변환하거나 유효 각도 밖의 점을 제외해야 합니다.
검증 범위
이 검증으로 확인할 수 없는 항목
베이스라인 길이
베이스라인 길이는 에피폴라 제약에서 결정되지 않습니다. 여기서는 캘리브레이션 값 65.08mm가 렌즈 중심 간 자 측정과 대략 일치했지만 정밀 측정은 아닙니다.
실측 깊이 정확도
실측 거리의 타깃이 필요하며, 이 노트에서는 측정하지 않았습니다.
카메라–IMU 캘리브레이션
시간 이동과 외부 파라미터는 별도 시험이 필요합니다. 자연스러운 머리 움직임만으로 밀리초 수준까지 확정하지 못했습니다.
기술 요약
핵심 기술 결과
120초 길이의 1600×1200 헤드마운트 스테레오 영상에서 같은 촬영 모드의 Kalibr pinhole-equidistant 캘리브레이션은 필터링하지 않은 SIFT 대응점 19,386개에 대해 각도 기반 에피폴라 오차 중앙값 0.41px을 기록했습니다. 모드가 다른 캘리브레이션의 중앙값은 1.83px이었습니다. 이 결과는 해당 영상에서의 에피폴라 일치도를 뒷받침하지만 생산용 전체 성능 인증은 아닙니다.
동일한 대응점에서 정렬 영상의 수직 잔차는 중심부 0.50px에서 가장자리 4.05px까지 증가했지만, 각도 기반 잔차는 주변부에서도 약 0.46px이었습니다. 이 렌즈와 테스트한 OpenCV 5.0 기본 설정에서는 약 74°를 넘는 어안 역투영에 주의가 필요했습니다.
인용 방법
관련 기술 노트
스테레오 데이터 검증
장비와 촬영 모드별 검증
Origin Data Lab은 스테레오 데이터 생산 시 장비와 촬영 모드에 맞는 캘리브레이션과 실제 납품 영상에서의 검증을 함께 제공합니다. 기술 평가 자료와 검증 범위는 별도로 문의해 주세요.