기술 필드 노트 #13 · 2026년 11월

잘못된 캘리브레이션 파일: 다른 센서 모드용 스테레오 캘리브레이션을 어떻게 찾아냈나

기술노트 #13 · 다른 센서 모드용 스테레오 캘리브레이션 진단 (ODL-EGO S1 촬영 리그)

앞서 보낸 평가 패키지에 들어간 제조사 스테레오 캘리브레이션 파일이, 살펴보니 16:9 녹화 모드용이었습니다. 영상은 리그의 4:3 1600×1200 모드로 찍혀 있었습니다. 데이터 검토자가 이를 정확히 지적했습니다. 이 노트는 이 불일치가 어떻게 드러나고 어떻게 확인했는지 보여 줍니다. 데이터 없이 파일만 보는 7가지 검사로 드러나고, ChArUco 코너 112,538개에서 잘못된 파일은 에피폴라 거리 중앙값 2.40px, 리그의 1600×1200 모드 파일은 0.33px였습니다. 검토자가 본 실제 양손 작업 영상에서도 오차가 2.82px에서 0.73px로 줄었고, 1px 미만 매칭 비율은 10%에서 61%로 늘었습니다. 이제 모든 납품에 캘리브레이션 파일 이름, 녹화 모드, 그 납품 프레임으로 돌린 검증 결과를 함께 넣습니다.

게시 2026년 11월⏱ 9 분 분량상태 예비 결과 · 자동 분석공개 데이터 GitHub · Hugging Face · Kaggle
2.40 → 0.33px보드 코너 에피폴라 거리, 잘못된 파일 → 맞는 파일중앙값, 코너 112,538개검증됨 (자동 측정)
2.82 → 0.73px (3.9배 감소)실제 작업 영상 에피폴라 거리특징점 매칭 11,360개, 16프레임검증됨 (자동 측정)
10% → 61%1px 미만 매칭 비율같은 매칭, 두 파일검증됨 (자동 측정)
60.2 대 65.08mm두 파일의 좌우 간격 차이깊이 스케일 8.1% 차이검증됨 (파일 내용)

왜 중요한가

캘리브레이션 파일이 맞아도, 내 영상에는 틀릴 수 있다

스테레오 카메라는 해상도, 화면 비율, 자르기, 비닝이 다른 여러 녹화 모드를 지원하는 경우가 많습니다. 캘리브레이션은 계산한 그 모드에서만 유효합니다. 다른 모드의 파일도 오류 없이 불러와지고, 정류도 되고, 깊이도 나옵니다. 그냥 틀릴 뿐입니다. 세로로 수 픽셀 어긋나고, 미터 스케일이 수 % 틀어집니다.

우리는 앞선 평가 패키지에서 바로 이 실수를 했습니다. 이 노트는 그것을 재사용할 수 있는 검사 절차로 정리합니다. 파일에서 무엇을 보고, 잔차가 어떻게 나타나며, 영상 자체에서 맞는 파일을 어떻게 확인하는지입니다.

  • 지금 지키는 규칙: 캘리브레이션 파일은 녹화 모드와, 같은 납품 프레임으로 돌린 잔차 검사와 함께만 납품합니다.

구성

제조사 파일 두 개, 리그 하나, 녹화 모드 하나

리그: R8 스테레오+IMU, 녹화 모드 한쪽 1600×1200, 30fps, 어안 렌즈. 장비와 함께 캘리브레이션 파일 두 개를 받았습니다.

파일 A: 스테레오 JSON(핀홀 모델 + 왜곡 5항, 좌우 간격 60.2mm, 해상도 항목 없음). 앞선 패키지에 들어간 파일입니다. 파일 B: Kalibr camchain(equidistant 어안 모델, 800×600, 좌우 간격 65.08mm).

검사 데이터: (1) 2026-10-26 1600×1200 모드로 찍은 ChArUco 보드 녹화, 샘플 프레임 두 개 중 하나, 짝지어진 코너 112,538개. (2) 앞선 패키지의 120초 실제 양손 작업 영상(2026-10-21), 영상 전체에 고르게 뽑은 16프레임, 캘리브레이션을 쓰지 않는 느슨한 이상치 제거 후 SIFT 매칭 11,360개.

검사 1

데이터 없이 하는 7가지 검사

계산하기 전에 파일만 봐도 불일치가 드러납니다. 파일 A는 해상도가 적혀 있지 않고, 주점이 1600×1200 영상 중심에서 217px 떨어져 있으며, 주점을 2배 하면 약 2004×1044(16:9) 영상이 됩니다. 초점거리도 파일 B보다 34% 깁니다. 파일 B는 800×600, 즉 녹화 모드의 정확히 절반이 적혀 있고, 2배 하면 주점이 중심에서 15px 안에 들어옵니다.

표 1. 데이터 없이 하는 7가지 검사
검사 (데이터 불필요)파일 A파일 B의미
파일에 적힌 해상도적혀 있지 않음800×600 (1600×1200의 정확히 ½)해상도가 없는 파일은 어떤 모드에도 믿고 쓸 수 없음
주점(px)(1002, 522)(807, 613) (×2 후)1600×1200 센서라면 (800, 600) 근처여야 함
주점과 1600×1200 중심의 거리217 px15 px100px 넘으면 경고 신호
주점 ×2로 추정한 영상 크기~2004 x 1044~1615 x 1226A는 약 16:9 영상을 뜻함, 실제 영상은 4:3
초점거리(px)646482초점거리가 34% 다르면 자르기나 배율이 다른 모드
렌즈 모델핀홀 + 5항equidistant 어안광각 렌즈는 가장자리에서 어안 모델이 필요
좌우 간격(mm)60.265.08깊이는 좌우 간격에 비례: 8% 차이는 8% 깊이 오차

검사 2

형상을 아는 타깃에서 잔차 보기

보드 코너 112,538개에서 파일 A의 에피폴라 거리 중앙값은 2.40px(90%값 7.89px), 파일 B는 0.33px(1.04px)였습니다. 내부 파라미터를 고정하면 파일 A는 보드 자체도 제대로 재현하지 못했습니다. 재투영 중앙값이 1.63px로, 파일 B의 0.28px와 큰 차이가 납니다.

특징적인 모양은 이렇습니다. 파일 A는 화면 중앙에서부터 오차가 크고(2.1px) 중심에서 400–550px 떨어진 곳에서 가장 큽니다. 파일 B는 0.25px에서 시작해 어안 바깥쪽으로 갈수록 서서히 커집니다.

두 캘리브레이션 파일의 반경별 에피폴라 거리 막대 그래프
그림 1. 화면 중심으로부터의 반경별 에피폴라 거리 중앙값, ChArUco 녹화, 두 파일.
표 2. 형상을 아는 타깃에서 잔차 보기
검사데이터파일 A (16:9 모드)파일 B (1600×1200 모드)
에피폴라 거리 중앙값ChArUco 녹화, 112,538 코너2.40 px0.33 px
에피폴라 거리 90%값같음7.89 px1.04 px
왼쪽 재투영 중앙값(내부 파라미터 고정)같음1.63 px0.28 px
에피폴라 거리 중앙값실제 양손 작업 영상, 11,360 특징점 매칭2.82 px0.73 px
1px 미만 매칭 비율같음10%61%

검사 3

타깃 없이 실제 영상에서 확인하기

구매자 쪽 영상에는 보통 타깃이 없습니다. 좌우 프레임의 특징점 매칭만으로 충분합니다. 캘리브레이션이 맞으면 짝지어진 점은 에피폴라 선 위에 있어야 합니다. 실제 작업 영상에서 파일 A는 매칭을 선에서 중앙값 2.82px, 파일 B는 0.73px 떨어뜨렸습니다. 1px 이내에 든 매칭은 파일 B 61%, 파일 A 10%였습니다.

파일 B도 어안 화면의 극단적인 구석에서는 완벽하지 않고, 두 파일 모두 큰 값을 보입니다(기술노트 #11이 타깃으로 같은 바깥쪽 한계를 측정했습니다). 중요한 비교는 작업이 일어나는 중앙 시야입니다.

약 0.7px과 2.8px에 중심이 있는 두 에피폴라 거리 히스토그램
그림 2. 같은 매칭 11,360개의 파일별 에피폴라 거리(로그 눈금).
두 캘리브레이션 파일의 화면 칸별 에피폴라 거리 히트맵
그림 3. 실제 작업 영상에서 200px 칸별 에피폴라 거리 중앙값. 빈칸은 매칭 25개 미만.

해석

우리 절차에서 바뀐 것

검증됨: 파일 B는 타깃과 실제 영상 모두에서 1600×1200 녹화 모드와 맞고, 파일 A는 맞지 않습니다. 해석: 파일 A는 같은 카메라 계열의 16:9 모드에서 만들어진 것으로 보이며, 패키지에 넣으면 안 되는 파일이었습니다. 60.2mm 좌우 간격을 그대로 썼다면 모든 깊이가 약 8% 틀어졌을 것입니다.

절차 변경: 모든 납품에 캘리브레이션 파일, 그 파일의 녹화 모드, 만든 장비를 명시하고, 7가지 파일 검사와 그 납품 프레임으로 돌린 에피폴라 검사를 함께 넣습니다. 같은 불일치가 다시 조용히 넘어갈 수 없게 했습니다.

  • 캘리브레이션 파일을 쓰기 전에 해상도 항목과 주점부터 확인합니다.
  • 모든 납품에서 몇 프레임으로 특징점 에피폴라 검사를 돌립니다. 이 리그에서 화면 중앙 중앙값이 약 1px을 넘으면 멈춥니다.
  • 파일 이름이나 공급사 설명만으로 녹화 모드를 판단하지 않습니다.

범위와 한계

연구의 한계

이 노트가 보여주지 않는 것을 먼저 밝힙니다.

  • R8 스테레오+IMU 장비 1대, 실내 사무실 1곳, 하루(2026-10-26) 측정 결과이며 다른 장비 전체를 대표하지 않습니다.
  • 모든 측정은 자동 처리(OpenCV 검출·삼각측량·피팅)입니다. 사람이 독립적으로 다시 측정하지 않았으므로 알고리즘 기반 예비 분석(AI-only preliminary analysis)입니다.
  • 공장 캘리브레이션 파일은 제3자 자료이므로 평가에만 사용하고 재배포하지 않습니다. 원본 영상은 사람과 사무실 내부가 찍혀 있어 공개하지 않습니다.
  • 실제 영상의 특징점 매칭에는 잘못된 매칭이 일부 섞여 있어, 평균이 아니라 중앙값과 1px 미만 비율로 보고합니다.
  • 실제 영상 검사는 120초 영상 1개의 16프레임, 보드 검사는 하루치 녹화를 사용했습니다.
  • 파일 A의 출처(어느 장비의 어느 모드인지)는 파라미터로 추정한 것이며, 제조사가 확인하지 않았습니다.

FAQ

데이터 구매자가 묻는 질문

Q01스테레오 캘리브레이션이 내 녹화 모드와 맞는지 어떻게 아나요?
파일에 같은 해상도(또는 정확한 배율)가 적혀 있는지, 주점이 영상 중심 근처에 있는지, 내 영상에서 좌우 특징점 매칭이 에피폴라 선에서 약 1px 이내에 드는지 확인합니다.
Q02이번에 무슨 일이 있었나요?
16:9 모드용 캘리브레이션을 1600×1200 영상에 썼습니다. 같은 실제 작업 영상에서 그 파일은 에피폴라 오차 중앙값 2.82px, 리그의 1600×1200 모드 캘리브레이션은 0.73px였습니다.
Q03영상에 캘리브레이션 타깃이 없어도 검사할 수 있나요?
네. 좌우 영상의 특징점 매칭만으로 에피폴라 오차를 잴 수 있습니다. 타깃은 미터 스케일을 잴 때만 필요합니다.
Q04잘못된 캘리브레이션 파일은 깊이 스케일에도 영향을 주나요?
네. 이번 두 파일은 좌우 간격이 8.1%(60.2 대 65.08mm) 달라, 모든 깊이가 같은 비율로 달라집니다.
Q05바로잡은 캘리브레이션은 완벽한가요?
아닙니다. 중앙 시야에서는 일관되고, 어안 구석으로 갈수록 나빠집니다. 기술노트 #09와 #11에서 측정했습니다.

공개 데이터와 코드

근거 자료를 직접 확인하세요

이 노트의 모든 수치는 검증할 수 있습니다. 가공 데이터, 분석 코드, 그림, 실행 가능한 노트북을 공개합니다.

Kaggle에서 노트북 실행

라이선스: CC BY 4.0 (데이터·그림) · MIT (코드)

이 노트 인용하기

Origin Data Lab (2026). 기술노트 #13: 다른 센서 모드용 스테레오 캘리브레이션 진단. https://origindatalab.io/ko/technical-field-notes/stereo-calibration-sensor-mode-mismatch-diagnosis.html

이 수준으로 측정된 실세계 데이터가 필요하신가요?

오리진데이터랩은 피지컬 AI·로봇 팀을 위해 에고센트릭, 스테레오+IMU, 현장 영상 수집을 설계·운영하고 품질 검증을 문서로 제공합니다.