1. Why DVS Rectification?
캘리브레이션은 렌즈 왜곡과 카메라의 배치를 측정해 보정에 필요한 값을 구하는 과정입니다. Rectify는 이 값을 실제 DVS 스트림에 적용해 이벤트 좌표를 보정합니다. 이 장에서는 왜 이 보정을 실시간으로 적용해야 하는지와, 보정된 좌표가 스테레오 매칭·특징점 매칭·AI 및 깊이 처리에서 어떤 의미를 가지는지 설명합니다.
1.1 Calibration measures; Rectify applies
캘리브레이션을 완료하면 렌즈와 카메라에 대한 보정값이 calibration.yaml에 저장됩니다. 하지만 이 파일이 존재하는 것만으로 카메라에서 들어오는 이벤트 좌표가 자동으로 바뀌지는 않습니다.
Rectify Setup에서는 이 값을 읽어 좌표 변환에 필요한 정보를 미리 준비합니다. 이후 라이브 스트림이 시작되면 들어오는 DVS 패킷의 이벤트 좌표에 실제 보정을 적용합니다.
calibration.yaml→Rectify Setup→Live DVS에 적용
1.2 Lens distortion changes actual event coordinates
실제 렌즈에서는 장면의 한 점이 이상적인 카메라 모델이 예측한 위치와 조금 다른 센서 좌표에 기록될 수 있습니다. 이 차이는 화면 가장자리로 갈수록 커질 수 있으며, 실제로 곧은 선도 이벤트 화면에서는 휘어진 것처럼 보일 수 있습니다.
Undistortion은 하나의 카메라(Mono)에서 캘리브레이션으로 얻은 렌즈 모델을 이용해 좌표 차이를 보정하는 과정입니다. Rectify는 스테레오에서 좌·우 카메라의 왜곡을 함께 보정하고, 같은 장면의 대응점이 가능한 한 같은 영상 행에 놓이도록 좌표를 정렬하는 과정입니다. NRV DVS에서는 새로운 밝기 영상을 만드는 것이 아니라, 각 이벤트가 사용될 위치를 보정된 좌표로 변경합니다.
1.3 Why rectification must happen in real time
저장된 DVS 데이터를 나중에 보정하는 것도 가능합니다. 하지만 그렇게 하면 이미 Preview, 스테레오 매칭, AI 추론 등에 사용된 라이브 데이터까지 다시 바꿀 수는 없습니다.
따라서 실시간 기능에서 보정된 좌표를 사용하려면, 해당 기능이 데이터를 받기 전에 Rectify를 적용해야 합니다.
1.3.1 Stereo matching searches a simpler correspondence
스테레오 깊이 추정은 왼쪽 영상에서 본 한 점과 오른쪽 영상의 같은 점을 찾는 과정에서 시작합니다. 정렬 전에는 같은 점이 좌우 영상에서 가로와 세로 방향으로 모두 어긋날 수 있어 주변의 2차원 영역을 함께 확인해야 합니다. 정렬을 적용하면 대응점이 가능한 한 같은 영상 행에 놓이므로 이후 매칭은 주로 수평 방향에서 수행할 수 있습니다.
예를 들어 세로 방향으로 ±4픽셀까지 확인하던 경우에는 9개의 행을 비교해야 하지만, 정렬 후 같은 행만 사용한다면 세로 방향 후보는 1개가 됩니다. 이는 탐색 후보 수를 설명하기 위한 예이며, 전체 스테레오 알고리즘이 항상 9배 빨라진다는 의미는 아닙니다.
1.3.2 Feature matching benefits from stable coordinates
특징점 매칭은 서로 다른 영상에서 같은 물체의 같은 지점을 찾는 과정입니다. 렌즈 왜곡이 있으면 화면 위치에 따라 같은 구조의 위치와 모양이 조금씩 달라질 수 있어 대응점을 찾기 어려워집니다. 먼저 좌표를 보정하면 이러한 위치에 따른 변형을 줄인 상태에서 특징점을 비교할 수 있습니다.
실제 연구에서도 방사 왜곡을 보정한 뒤 동일한 특징점을 다시 찾는 비율이 20%에서 36%로, 올바른 특징점 매칭 비율이 40%에서 74%로 증가한 결과가 보고되었습니다.
Source: sRD-SIFT: Keypoint Detection and Matching in Images With Radial Distortion.
1.3.3 Models trained with rectified images need rectified input
많은 스테레오 및 깊이 추정 모델은 렌즈 왜곡이 제거되거나 좌·우 영상이 정렬된 데이터를 사용해 학습합니다. 이 경우 모델은 학습 과정에서 본 것과 같은 카메라 좌표 관계가 실제 입력에서도 유지된다고 가정합니다.
그런데 정렬된 영상으로 학습한 모델에 렌즈 왜곡이 그대로 남은 영상을 입력하면, 같은 물체가 학습 때와 다른 위치와 형태로 들어오게 됩니다. 특히 스테레오 모델에서는 좌·우 대응점이 같은 행에 있다는 조건도 깨질 수 있어 깊이 추정 성능이 떨어질 수 있습니다.
따라서 NRV DVS의 Rectify는 기존의 보정·정렬된 영상을 기준으로 학습된 AI 및 Depth 모델에 라이브 DVS 데이터를 연결할 때, 모델이 기대하는 입력 형태에 맞춰 이벤트 좌표를 보정하는 역할을 합니다.
이런 차이는 실제 깊이 추정 성능에도 영향을 줄 수 있습니다. Depth Any Camera에서는 보정된 Perspective 영상 조건을 기준으로 한 모델에 왜곡된 fisheye 영상을 그대로 입력했을 때 Depth RMSE가 2.12에서 3.57로 증가했습니다.
Source: Depth Any Camera: Zero-Shot Metric Depth Estimation from Any Camera.
1.3.4 Calibration geometry is also an operating condition in vehicle systems
실제 차량의 ADAS나 자율주행 시스템에서도 카메라 캘리브레이션은 단순한 초기 설정으로 끝나지 않습니다. 카메라 장착 위치가 바뀌거나 캘리브레이션이 정상적으로 완료되지 않으면 일부 기능을 제한하거나 다시 캘리브레이션하도록 요구하는 사례가 있습니다.
즉 카메라 보정값은 저장만 해 두는 정보가 아니라 실제 운용 중 사용하는 영상의 위치 관계에 영향을 주는 조건입니다. 아래 그림은 자동차를 포함한 많은 실시간 카메라 시스템이 캘리브레이션 값을 실제 운용 데이터에 적용하는 단계를 거쳐야 함을 보여줍니다. 이 예시는 자동차가 NRV DVS와 동일한 Rectify 구현을 사용한다는 의미는 아닙니다.
Source: Tesla Model Y DIY — Calibrating Cameras.
NRV DVS에서도 캘리브레이션 결과를 실제 라이브 스트림에 실시간으로 적용할 수 있도록 Rectify 기능을 제공합니다. 이를 통해 Viewer의 Preview와 저장뿐 아니라, 이후 스테레오 매칭이나 AI 처리에서도 보정된 이벤트 데이터를 바로 사용할 수 있습니다.
1.4 Rectify is applied to DVS packets before Viewer processing
NRV DVS에서 들어온 원시 패킷은 Preview나 저장 기능으로 전달되기 전에 Rectify 모듈을 통과합니다.
Rectify는 Setup에서 준비한 좌표 맵을 이용해 이벤트 좌표를 보정한 뒤, 다시 일반 DVS 패킷 형식으로 Viewer에 전달합니다. 따라서 Preview, 저장, 후속 처리는 별도의 정렬 전용 데이터 형식 없이 같은 보정 데이터를 사용합니다.