DEV Community

Richard Minsoo Go
Richard Minsoo Go

Posted on

Calibration Engineering — Ch.06: Camera Calibration [KR]

STATERA Library · Series 07 · Volume 10 · Chapter 06 · KR
Source: https://github.com/Statera-Library/07_Vol_10_Calibration_Engineering/blob/main/Chapter_06_Camera_Calibration/Chapter_06_Camera_Calibration_KR.md

Volume 10 Calibration Engineering

Chapter 06. Camera Calibration

06.01. Zhang Checkerboard Method

장(Zhang)의 체커보드 방법(checkerboard method)은 서로 다른 방향에서 관찰한 평면 체커보드(planar checkerboard)의 여러 영상을 이용하여 카메라 내부 파라미터(intrinsic camera parameters)를 추정하는 실용적인 카메라 캘리브레이션(camera calibration) 기법이다. 캘리브레이션 타깃(calibration target)이 평면이고 사각형의 기하학적 구조가 알려져 있기 때문에, 정밀하게 제작된 3차원 캘리브레이션 지그(three-dimensional calibration fixture) 없이도 정확한 기하학적 제약조건(geometric constraints)을 확보할 수 있다.

캘리브레이션 타깃(calibration target)은 강성이 있는 평면 위에 검은색과 흰색 사각형이 교대로 배열된 형태로 구성된다. 계산 과정에서는 일반적으로 보드의 외곽 모서리가 아니라 체커보드 내부 코너(internal checkerboard corners)를 기준점으로 사용한다. 각 사각형의 실제 크기를 알고 있으므로 기준점의 물리 좌표(physical coordinates)를 Z = 0인 평면에 정의하고, 인접한 점 사이의 미터 단위 간격(metric spacing)을 설정할 수 있다.

캘리브레이션(calibration)은 카메라에 대한 체커보드의 위치와 방향을 변화시키면서 여러 영상을 촬영하는 것으로 시작한다. 영상은 거의 동일한 정면 시점만 반복해서 촬영하기보다 기울기(tilt), 회전(rotation), 거리(distance), 영상 내 위치(image location)를 의미 있게 변화시켜야 한다. 이러한 다양성은 카메라의 내부 특성과 캘리브레이션 타깃의 자세(pose)를 분리하여 추정하는 데 필요한 기하학적 정보를 제공한다.

각각의 유효한 영상에서 체커보드 코너(checkerboard corners)를 검출하고, 그 영상 좌표(image coordinates)를 서브픽셀 정밀도(subpixel precision)로 측정한다. 이러한 2차원 관측값(two-dimensional observations)은 체커보드 좌표계(checkerboard coordinate system)의 대응점과 연결된다. 코너 위치 검출 오차는 최적화 과정 전체로 전파되어 초점거리(focal length), 주점(principal point), 왜곡(distortion), 자세(pose) 추정값에 영향을 줄 수 있으므로 검출 품질이 중요하다.

이 방법의 수학적 기반은 체커보드 평면과 영상 평면 사이의 평면 투영 변환(planar projective transformation), 즉 호모그래피(homography)이다. 모든 기준점이 Z = 0 평면에 존재하므로 각각의 캘리브레이션 영상은 알려진 평면 좌표와 관측된 픽셀 좌표(pixel coordinates)를 연결하는 하나의 호모그래피를 제공한다. 서로 다른 보드 자세에서 얻은 여러 호모그래피는 카메라 내부 행렬(camera intrinsic matrix)을 추정하기 위한 제약조건을 형성한다.

내부 행렬(intrinsic matrix)은 카메라 내부의 기하학적 특성을 표현한다. 주요 파라미터에는 영상의 수평 및 수직 방향 초점거리(focal lengths)와 주점 좌표(principal point coordinates)가 포함된다. 스큐 파라미터(skew parameter)도 표현할 수 있지만 현대적인 카메라에서는 일반적으로 0으로 가정한다. 이러한 내부 파라미터는 카메라 설정이 변경되지 않는 한 모든 캘리브레이션 영상에서 공통으로 유지된다.

각 체커보드 영상은 카메라에 대해 서로 다른 자세를 가지므로 각각 고유한 외부 파라미터(extrinsic parameters)를 갖는다. 회전(rotation)과 병진(translation)은 체커보드 좌표 프레임(checkerboard coordinate frame)과 카메라 좌표 프레임(camera coordinate frame) 사이의 변환을 나타낸다. 초기 내부 행렬이 추정되면 각 영상의 호모그래피를 분해하여 이러한 자세 파라미터의 초기값을 얻을 수 있다.

실제 렌즈(real lens)는 이상적인 핀홀 카메라 모델(pinhole camera model)에서 벗어나므로 실용적인 캘리브레이션에서는 렌즈 왜곡(lens distortion)을 고려해야 한다. 방사 왜곡(radial distortion)은 일반적으로 영상 가장자리로 갈수록 직선을 휘어지게 하며, 접선 왜곡(tangential distortion)은 렌즈 요소의 불완전한 정렬에서 발생할 수 있다. 따라서 장 캘리브레이션(Zhang calibration)은 핀홀 투영 파라미터와 왜곡 계수(distortion coefficients)를 함께 사용하여 정밀화한다.

호모그래피 제약조건을 통해 얻은 초기 파라미터 추정값은 일반적으로 비선형 최적화(nonlinear optimization)를 통해 정밀화된다. 최적화 과정에서는 현재의 내부 파라미터, 왜곡 파라미터, 회전 및 병진 값을 이용하여 알려진 체커보드 점을 모든 영상에 투영한다. 이후 예측된 영상 위치와 실제 검출된 코너 위치 사이의 차이가 최소가 되도록 각 파라미터를 반복적으로 조정한다.

재투영 오차(reprojection error)는 캘리브레이션 일관성을 평가하는 대표적인 수치 지표이다. 각 체커보드 코너에 대해 캘리브레이션된 카메라 모델이 예측한 투영 위치와 실제 측정된 영상 위치를 비교한다. 이렇게 얻은 잔차(residuals)는 개별 영상과 전체 데이터셋에 대해 요약할 수 있으며, 불량한 코너 검출, 부적절한 자세 또는 일관성이 부족한 관측값을 식별하는 데 활용된다.

그러나 평균 재투영 오차가 낮다는 사실만으로 강건한 캘리브레이션(robust calibration)이 보장되는 것은 아니다. 특히 렌즈 왜곡이 강해지는 영상 가장자리에서도 모델이 충분히 제약되도록 캘리브레이션 영상은 카메라 시야(field of view)의 넓은 영역을 포함해야 한다. 또한 제한된 자세만 사용하면 수집된 영상에는 잘 맞지만 새로운 조건에서는 정확도가 떨어질 수 있으므로 다양한 크기와 방향으로 체커보드를 촬영해야 한다.

캘리브레이션 타깃의 품질은 캘리브레이션 정확도(calibration accuracy)에 직접적인 영향을 미친다. 체커보드는 평탄하고 치수 안정성이 높으며 명확하게 인쇄되어야 하고, 사용하려는 작업 거리에서 코너를 안정적으로 관측할 수 있을 만큼 충분히 커야 한다. 종이 타깃의 휨, 잘못된 사각형 치수, 모션 블러(motion blur), 초점 불량, 반사광(glare), 부분적인 코너 모호성은 수학적 최적화만으로 완전히 보정하기 어려운 기하학적 오차를 발생시킨다.

카메라 설정(camera configuration)은 전체 캘리브레이션 데이터셋에서 동일하게 유지되어야 한다. 초점(focus), 줌(zoom), 해상도(resolution), 디지털 크롭(digital cropping), 영상 스케일링(image scaling), 광학 구성(optical configuration)이 변경되면 유효 내부 파라미터가 달라질 수 있으며, 모든 영상이 하나의 카메라 모델을 공유한다는 기본 가정이 깨질 수 있다. 따라서 로보틱스(robotics) 응용에서는 실제 인지 시스템이 사용하는 센서 모드와 정확히 일치하는 조건으로 캘리브레이션 데이터를 관리해야 한다.

검증(validation)은 가능하면 파라미터 추정에만 사용된 관측값과 독립적인 데이터를 활용하는 것이 바람직하다. 왜곡 보정 영상(undistorted images)을 통해 직선의 일관성을 확인할 수 있으며, 별도의 체커보드 영상에 대해 재투영 오차를 평가할 수도 있다. 특정 영역에서 큰 잔차나 체계적인 오차 패턴이 나타난다면 왜곡 모델 부족, 부정확한 코너 검출, 타깃 변형 또는 부적절한 캘리브레이션 데이터셋을 의심할 수 있다.

로보틱스 캘리브레이션 워크플로(robotics calibration workflow)에서 장의 방법은 다양한 상위 수준 비전 작업을 수행하기 전에 필요한 카메라 내부 기하학의 기반을 제공한다. 신뢰할 수 있는 초점거리, 주점, 왜곡 파라미터는 미터 단위 재구성(metric reconstruction), 스테레오 처리(stereo processing), 시각적 위치추정(visual localization), 객체 측정(object measurement), 카메라와 다른 센서 사이의 정렬(camera-to-sensor alignment)을 지원한다. 따라서 내부 캘리브레이션(intrinsic calibration)은 통제되고 추적 가능한 센서 구성(sensor configuration)으로 관리되어야 한다.

이 방법의 중요한 장점은 단순한 캘리브레이션 하드웨어(calibration hardware)와 수학적으로 잘 정의된 추정 절차를 결합한다는 점이다. 실제 정확도는 복잡한 장비 자체보다는 타깃의 정밀한 제작, 다양한 영상 획득, 정확한 코너 추출(corner extraction), 최적화(optimization), 독립적인 검증에 크게 좌우된다. 이러한 조건을 적절히 관리하면 체커보드 캘리브레이션(checkerboard calibration)은 로봇 카메라 시스템(robotic camera systems)을 위한 반복 가능하고 신뢰성 높은 기준선을 제공한다.

06.02. Lens Distortion Model

렌즈 왜곡(lens distortion)은 이상적인 핀홀 카메라 투영(ideal pinhole camera projection)과 실제 광학 시스템(real optical system)이 형성하는 영상 사이에서 발생하는 체계적인 편차를 의미한다. 이상적인 모델에서는 3차원 점이 하나의 광학 중심(optical center)을 통과하여 영상 평면(image plane)에 투영된다. 그러나 실제 렌즈는 광선을 완벽하게 굴절시키지 못하므로 측정된 픽셀 위치(pixel position)가 이론적으로 예측된 위치에서 벗어나게 된다.

왜곡(distortion)은 영상 좌표(image coordinates)와 실제 물리적 방향 사이의 정확한 관계에 의존하는 로보틱스(robotics)에서 특히 중요하다. 비교적 작은 픽셀 변위(pixel displacement)라도 시각적 위치추정(visual localization), 스테레오 재구성(stereo reconstruction), 객체 측정(object measurement), 특징점 정합(feature matching), 카메라-센서 캘리브레이션(camera-to-sensor calibration)에 영향을 줄 수 있다. 광각 카메라(wide-angle camera)는 일반적으로 시야(field of view)의 경계로 갈수록 더 강한 왜곡을 나타낸다.

왜곡 모델(distortion model)은 일반적으로 핀홀 투영(pinhole projection)으로부터 얻어진 정규화 영상 좌표(normalized image coordinates)에 적용된다. 카메라 좌표 프레임(camera coordinate frame)으로 표현된 3차원 점은 먼저 수평 및 수직 좌표를 깊이(depth)로 나누어 정규화 좌표로 변환된다. 이후 렌즈 왜곡이 이 정규화 좌표를 변경하고, 내부 카메라 행렬(intrinsic camera matrix)이 이를 최종 픽셀 좌표로 변환한다.

방사 왜곡(radial distortion)은 렌즈 왜곡의 주요 구성 요소 중 하나이며 광학축(optical axis)을 중심으로 대략 대칭적인 형태를 가진다. 일반적으로 영상의 중심 영역에서 방사 방향 거리(radial distance)가 증가할수록 왜곡의 크기도 증가한다. 이러한 왜곡은 흔히 k1, k2, k3와 같은 다항식 계수(polynomial coefficients)로 표현되며, 영상 중심에서 멀어질수록 나타나는 고차 변화(higher-order changes)를 단계적으로 모델링한다.

방사 왜곡의 대표적인 두 가지 형태는 배럴 왜곡(barrel distortion)과 핀쿠션 왜곡(pincushion distortion)이다. 배럴 왜곡은 영상 주변부로 갈수록 배율(image magnification)이 감소하여 직선이 이상적인 투영에 비해 바깥쪽으로 휘어 보이게 한다. 핀쿠션 왜곡은 반대 특성을 가지며 영상 가장자리로 갈수록 배율이 증가하여 직선 구조가 안쪽으로 휘어 보이게 한다.

접선 왜곡(tangential distortion)은 주로 광학 요소(optical elements)와 이미지 센서(image sensor) 사이의 불완전한 정렬로 인해 발생하는 비대칭 영상 변위를 나타낸다. 렌즈 구성 요소가 센서 평면(sensor plane)에 대해 약간 중심에서 벗어나거나 기울어진 경우 영상의 점은 수평 및 수직 방향으로 이동할 수 있다. 접선 왜곡은 일반적으로 정규화 영상 좌표와 함께 p1과 p2 같은 계수를 사용하여 파라미터화(parameterization)한다.

따라서 일반적인 카메라 모델(camera model)은 이상적인 핀홀 투영과 방사 왜곡 및 접선 왜곡 항을 결합한다. 전체 파라미터 집합(parameter set)에는 일반적으로 초점거리(focal lengths), 주점 좌표(principal point coordinates), 왜곡 계수(distortion coefficients), 그리고 각각의 캘리브레이션 관측과 관련된 외부 변환(extrinsic transformation)이 포함된다. 이러한 값들은 실제 카메라의 영상 형성 동작(image formation behavior)을 모델이 재현할 수 있도록 함께 추정된다.

체커보드 기반 캘리브레이션(checkerboard-based calibration) 과정에서는 영상의 다양한 위치에서 알려진 타깃 점(target points)을 관측한다. 캘리브레이션 알고리즘은 현재의 카메라 및 왜곡 파라미터에 따라 각 점이 나타나야 할 위치를 예측하고, 이를 실제로 검출된 코너 위치(corner locations)와 비교한다. 이후 비선형 최적화(nonlinear optimization)를 통해 모든 캘리브레이션 영상에서 누적된 재투영 오차(reprojection error)가 감소하도록 파라미터를 조정한다.

신뢰할 수 있는 왜곡 추정(distortion estimation)을 위해서는 영상 영역의 충분한 커버리지(image coverage)가 특히 중요하다. 영상 중심 부근에 집중된 캘리브레이션 점은 해당 영역에서 방사 변위가 일반적으로 작기 때문에 왜곡에 대한 정보가 상대적으로 부족하다. 따라서 체커보드는 정확한 특징점 검출을 유지하면서 사용 가능한 영상 영역의 왼쪽, 오른쪽, 위쪽, 아래쪽 및 모서리까지 관측되도록 배치해야 한다.

렌즈의 종류에 따라 서로 다른 복잡도의 왜곡 모델이 필요할 수 있다. 표준 방사-접선 모델(radial-tangential model)은 보통 중간 정도의 시야를 가진 일반적인 원근 카메라(perspective camera)에 적합하지만, 어안 렌즈(fisheye lens)나 매우 넓은 화각을 가진 렌즈는 특수한 투영 모델(specialized projection model)이 필요할 수 있다. 그러나 불필요한 계수를 추가하면 물리적으로 의미 있는 캘리브레이션 정확도를 향상시키기보다 파라미터 상관관계(parameter correlation)와 과적합(overfitting)을 증가시킬 수 있다.

왜곡 보정(undistortion)은 추정된 렌즈 모델을 사용하여 왜곡된 측정값을 이상적인 기하학적 위치로 매핑한다. 영상 처리(image processing)에서는 보정된 영상의 픽셀과 원본 영상의 대응 위치 사이에 매핑(mapping)을 생성하는 방식으로 구현할 수 있다. 이후 직접적인 순방향 매핑(forward mapping)에서 발생할 수 있는 빈 영역을 방지하면서 보정된 밝기 값(intensity values)을 얻기 위해 보간(interpolation)을 수행한다.

영상을 보정하면 사용 가능한 시야가 변경되고 영상 경계 부근에 빈 영역(blank regions)이 발생할 수 있다. 엄격하게 크롭된 출력(tightly cropped output)은 원본 영상에서 유효하게 지원되는 픽셀만 유지하는 반면, 더 넓은 출력은 일부 무효 영역을 허용하는 대신 주변부 정보를 더 많이 보존할 수 있다. 따라서 로보틱스 소프트웨어(robotics software)는 선택된 보정 영상 기하학(corrected image geometry)과 이에 대응하는 카메라 행렬(camera matrix) 사이의 일관성을 유지해야 한다.

많은 인지 파이프라인(perception pipeline)에서는 완전히 왜곡이 제거된 영상(undistorted image)을 명시적으로 생성하는 것이 항상 필요한 것은 아니다. 대신 개별 특징점 좌표(feature coordinates), 광선(rays), 또는 측정점(measurement points)을 캘리브레이션된 왜곡 모델을 이용하여 수학적으로 보정할 수 있다. 이러한 방식은 불필요한 영상 리샘플링(image resampling)을 줄이고 원본 센서 데이터를 보존하면서도 위치추정이나 재구성 알고리즘에 필요한 기하학적으로 보정된 좌표를 제공할 수 있다.

왜곡 파라미터(distortion parameters)는 해당 파라미터를 캘리브레이션할 때 사용한 광학 및 영상 구성(optical and imaging configuration)에 대해서만 유효하다. 초점(focus), 줌(zoom), 렌즈 장착 상태(lens mounting), 센서 해상도(sensor resolution), 크로핑(cropping), 비닝(binning), 영상 스케일링(image scaling)이 변경되면 유효 카메라 기하학(effective camera geometry)이 달라질 수 있다. 따라서 캘리브레이션 메타데이터(calibration metadata)는 각 파라미터 집합과 연관된 카메라, 렌즈, 해상도, 동작 모드 및 관련 설정을 명확하게 식별해야 한다.

검증(validation)은 하나의 전체 재투영 오차(global reprojection error) 값만을 확인하는 수준을 넘어야 한다. 영상 전체에 분포된 잔차 벡터(residual vectors)를 분석하면 불충분한 왜곡 모델, 부정확한 주점, 타깃 변형(target deformation), 또는 조건이 불량한 캘리브레이션 데이터(poorly conditioned calibration data)를 나타내는 체계적인 패턴을 발견할 수 있다. 영상 전체에 걸쳐 관찰되는 실제 직선 구조도 왜곡 보정이 일관되게 수행되는지를 확인하는 유용한 정성적 기준(qualitative reference)이 된다.

로봇 시스템(robotic systems)에서 신뢰할 수 있는 렌즈 왜곡 모델은 카메라 측정값을 실제 물리 환경과 연결하는 기하학적 기반(geometric foundation)의 일부를 구성한다. 정확한 왜곡 보상(distortion compensation)은 투영(projection), 재구성(reconstruction), 위치추정(localization), 스테레오 대응(stereo correspondence), 다중 센서 정렬(multi-sensor alignment)의 일관성을 향상시킨다. 따라서 렌즈 왜곡 모델은 센서 수명주기(sensor lifecycle) 전체에 걸쳐 카메라 내부 파라미터(intrinsic parameters)와 함께 캘리브레이션하고 검증하며 버전 관리(version control)하고 유지해야 한다.

06.03. Stereo Camera Calibration

스테레오 카메라 캘리브레이션(stereo camera calibration)은 서로 다른 시점에서 동일한 3차원 장면을 관찰하는 두 카메라 사이의 기하학적 관계를 결정하는 과정이다. 스테레오 시스템(stereo system)은 각 카메라의 정확한 내부 파라미터(intrinsic parameters)와 두 카메라 사이의 정확한 상대 자세(relative pose)를 필요로 한다. 이러한 파라미터를 이용하면 대응하는 영상점을 기하학적 광선(geometric rays)으로 변환하고, 광선의 교차 관계를 통해 3차원 위치와 깊이(depth) 정보를 계산할 수 있다.

각 카메라는 먼저 수평 및 수직 초점거리(focal lengths), 주점 좌표(principal point coordinates), 렌즈 왜곡 계수(lens distortion coefficients)를 포함하는 독립적인 내부 모델(intrinsic model)로 표현된다. 이러한 파라미터는 왼쪽 및 오른쪽 카메라에서 3차원 광선이 픽셀로 어떻게 매핑되는지를 각각 정의한다. 따라서 신뢰할 수 있는 스테레오 캘리브레이션은 두 광학 채널(optical channels)에 대한 정확한 단안 카메라 캘리브레이션(monocular calibration)과 적절한 왜곡 모델링(distortion modeling)에 의존한다.

스테레오 카메라 쌍(stereo pair)을 정의하는 핵심 파라미터는 두 카메라 좌표 프레임(camera coordinate frames) 사이의 회전(rotation)과 병진(translation)이다. 회전은 두 카메라 사이의 상대적인 각도 정렬(angular alignment)을 나타내고, 병진은 두 광학 중심(optical centers) 사이의 위치 차이를 나타낸다. 이 병진 벡터의 크기는 일반적으로 스테레오 베이스라인(stereo baseline)이라 하며, 측정 가능한 깊이 범위와 삼각측량 정확도(triangulation accuracy)에 큰 영향을 준다.

평면 체커보드(planar checkerboard)는 두 카메라가 동일하고 정확하게 정의된 코너점(corner points)을 관찰할 수 있기 때문에 캘리브레이션 타깃(calibration target)으로 널리 사용된다. 보드의 위치, 방향, 거리 및 시야(field of view) 내 위치를 변화시키면서 여러 개의 동기화되거나 거의 동시에 촬영된 영상 쌍(image pairs)을 획득한다. 허용되는 모든 영상 쌍에서는 두 카메라가 타깃의 충분히 넓은 공통 영역을 관찰할 수 있어야 한다.

검출된 체커보드 코너(checkerboard corners)는 알려진 타깃 좌표(target coordinates)와 두 카메라에서 측정된 영상 좌표(image coordinates) 사이의 대응관계(correspondence)를 형성한다. 작은 위치 검출 오차도 삼각측량 이후 상당한 깊이 오차를 발생시킬 수 있으므로 일반적으로 서브픽셀 코너 정밀화(subpixel corner refinement)를 사용한다. 따라서 부정확한 코너 검출, 모션 블러(motion blur), 반사(reflections), 불완전한 타깃 가시성(partial target visibility), 일관되지 않은 코너 인덱싱(corner indexing)을 포함하는 영상은 파라미터 최적화 전에 제외해야 한다.

캘리브레이션은 왼쪽 및 오른쪽 카메라의 내부 파라미터를 각각 독립적으로 추정하는 것으로 시작할 수 있다. 이후 여러 관측에 대해 각 카메라를 기준으로 한 체커보드의 자세(pose)를 추정한다. 동일한 물리적 체커보드를 두 카메라가 공통으로 관찰하므로 이러한 관측값은 두 카메라 좌표계(camera coordinate systems) 사이의 일관된 강체 변환(rigid-body transformation)을 추정하기 위한 제약조건을 제공한다.

스테레오 변환(stereo transformation)은 일반적으로 회전 행렬(rotation matrix) R과 병진 벡터(translation vector) t로 표현된다. 왼쪽 카메라를 기준 좌표 프레임(reference coordinate frame)으로 선택하면 이 파라미터들은 왼쪽 및 오른쪽 카메라 프레임 사이에서 기하학적 정보를 변환한다. 두 카메라 사이의 기계적 관계(mechanical relationship)가 변경되지 않는 한 이 변환은 일정하게 유지되어야 한다.

비선형 최적화(nonlinear optimization)는 수집된 영상 쌍 전체에서 재투영 오차(reprojection errors)를 최소화하여 스테레오 캘리브레이션 파라미터를 정밀화하는 데 사용된다. 캘리브레이션 전략에 따라 단안 캘리브레이션 이후 내부 파라미터를 고정하거나 스테레오 외부 파라미터(stereo extrinsics)와 함께 다시 최적화할 수 있다. 공동 최적화(joint optimization)는 일관성을 향상시킬 수 있지만 불안정한 해를 방지하려면 충분한 관측값과 적절한 파라미터 제약조건이 필요하다.

스테레오 기하학(stereo geometry)에는 한 카메라에서 관찰된 점의 대응점이 다른 영상의 특정 에피폴라 선(epipolar line) 위에 존재해야 한다는 에피폴라 제약조건(epipolar constraint)이 존재한다. 상대 회전, 병진 및 내부 파라미터가 이러한 기하학적 관계를 결정한다. 따라서 캘리브레이션 품질은 재투영 오차뿐만 아니라 예상되는 에피폴라 관계(epipolar relationships)와의 일관성을 통해서도 평가할 수 있다.

스테레오 정류(stereo rectification)는 캘리브레이션된 왼쪽 및 오른쪽 영상을 변환하여 대응하는 에피폴라 선이 일반적으로 수평 영상 행(horizontal image rows)을 따라 정렬되도록 하는 과정이다. 정류 이후에는 정합 알고리즘(matching algorithms)이 주로 하나의 영상 차원을 따라 대응점을 탐색할 수 있으므로 대응점 검색이 크게 단순화된다. 잔류 수직 오정렬(residual vertical misalignment)은 스테레오 정합의 신뢰성을 직접 저하시키므로 정확한 캘리브레이션이 필수적이다.

대응점이 식별되면 시차(disparity)는 정류된 두 영상에서 대응점 사이의 수평 위치 차이를 나타낸다. 이상적인 정류 스테레오 구성(rectified stereo configuration)에서 깊이는 시차에 반비례하며 초점거리와 베이스라인에 의해 결정된다. 큰 시차는 일반적으로 가까운 객체를 의미하고, 작은 시차는 더 먼 거리에 해당하며 픽셀 수준의 정합 불확실성(pixel-level matching uncertainty)에 점점 더 민감해진다.

스테레오 베이스라인은 목표 동작 거리(intended operating range)에 맞게 선택해야 한다. 짧은 베이스라인은 컴팩트한 기계적 통합(mechanical integration)과 근거리 객체의 효과적인 측정을 지원하지만 먼 거리의 타깃에 대해서는 충분한 시차를 제공하기 어렵다. 긴 베이스라인은 장거리에서 깊이 민감도(depth sensitivity)를 향상시키지만 공통 시야(common field of view)가 감소하고 두 카메라가 장면을 더 다른 관점에서 관찰하기 때문에 대응점 검색이 어려워질 수 있다.

각 단안 카메라의 캘리브레이션이 이미 정확한 경우에도 캘리브레이션 영상의 다양성(image diversity)은 중요하다. 체커보드는 서로 다른 깊이와 방향에서 나타나야 하며 영상 중심에만 머무르지 않고 두 카메라의 공통 시야 영역(shared field of view)을 폭넓게 포함해야 한다. 기하학적으로 다양한 관측은 상대 회전과 병진에 대한 더 강한 제약조건을 제공하고 개별 측정 오차에 대한 민감도를 감소시킨다.

캘리브레이션 이후에는 기계적 안정성(mechanical stability)이 기본적인 요구사항이 된다. 진동(vibration), 충격(impact), 열팽창(thermal expansion), 카메라 교체(camera replacement), 브래킷 변형(bracket deformation), 유지보수(maintenance)로 인한 변화는 상대적인 스테레오 자세를 변경할 수 있다. 작은 각도 변화라도 장거리에서는 상당한 대응점 오차를 발생시킬 수 있으므로 스테레오 캘리브레이션 파라미터는 실제 카메라 어셈블리(physical camera assembly)와 연계하여 관리하고 관련 기계적 변경 이후 다시 검증해야 한다.

시간 동기화(temporal synchronization)는 기하학적 캘리브레이션과 별개의 문제이지만 스테레오 카메라 쌍이 움직이는 장면을 관찰할 때 매우 중요해진다. 왼쪽과 오른쪽 영상이 서로 다른 시점에 촬영되면 움직이는 객체나 카메라 자체의 운동으로 인해 대응 픽셀이 동일한 물리적 상태를 나타낸다는 가정이 깨질 수 있다. 따라서 동적 로봇 응용(dynamic robotic applications)에서는 하드웨어 트리거링(hardware triggering), 동기화된 타임스탬프(synchronized timestamps), 또는 충분히 제어된 영상 획득 타이밍(acquisition timing)이 필요할 수 있다.

검증(validation)에서는 재투영 오차, 에피폴라 정렬(epipolar alignment), 정류 영상의 일관성(rectified image consistency), 재구성된 기하학(reconstructed geometry)을 함께 평가해야 한다. 정류된 영상에서 체커보드 코너는 최소한의 수직 시차(vertical disparity)를 보여야 하며, 알려진 거리나 치수를 재구성하여 미터 단위 정확도(metric accuracy)를 평가할 수 있다. 영상 전체에서 나타나는 잔차 패턴(residual patterns)은 왜곡 오차, 부족한 캘리브레이션 자세, 기계적 오정렬(mechanical misalignment)을 검출하는 데 특히 유용하다.

로보틱스(robotics)에서 스테레오 카메라 캘리브레이션은 수동형 깊이 인지(passive depth perception), 장애물 검출(obstacle detection), 조작(manipulation), 내비게이션(navigation), 시각 오도메트리(visual odometry), 3차원 재구성(three-dimensional reconstruction), 객체 위치추정(object localization)을 위한 기하학적 기반을 제공한다. 신뢰성 높은 동작을 위해서는 내부 캘리브레이션, 왜곡 보상(distortion compensation), 스테레오 외부 파라미터 추정(stereo extrinsic estimation), 정류(rectification), 동기화(synchronization), 검증을 센서 시스템 수명주기(sensor system lifecycle) 전체에서 하나의 일관된 캘리브레이션 체인(calibration chain)으로 관리해야 한다.

06.04. Rolling Shutter Calibration

롤링 셔터 캘리브레이션(rolling shutter calibration)은 전체 프레임(frame)을 한 순간에 촬영하는 대신 영상의 행(row)을 순차적으로 노출하고 판독하는 카메라의 시간적 영상 형성 특성(temporal imaging behavior)을 규명하는 과정이다. 롤링 셔터 센서(rolling shutter sensor)에서는 서로 다른 행이 조금씩 다른 노출 시점(exposure time)에 대응한다. 이 시간 동안 카메라나 관찰 대상이 움직이면 기존의 글로벌 셔터 카메라 모델(global shutter camera model)만으로 설명할 수 없는 기하학적 변형(geometric deformation)이 영상에 발생한다.

글로벌 셔터 모델(global shutter model)은 하나의 영상에 포함된 모든 픽셀이 동일한 타임스탬프(timestamp)의 장면을 나타낸다고 가정한다. 롤링 셔터 영상은 영상의 첫 번째 센서 행에서 마지막 행으로 진행하면서 유효 촬영 시점(effective capture time)이 점진적으로 변화하기 때문에 이러한 가정을 만족하지 않는다. 시간 차이가 작더라도 높은 각속도(angular velocity), 빠른 병진 운동(translation), 진동(vibration), 고속 이동 객체가 존재하면 기하학적 영향이 크게 나타날 수 있다.

대표적인 롤링 셔터 아티팩트(rolling shutter artifacts)에는 기울어짐(skew), 늘어남(stretching), 압축(compression), 흔들림(wobble), 그리고 실제로는 직선인 구조가 곡선으로 표현되는 현상이 포함된다. 예를 들어 카메라가 수평 방향으로 움직이면 영상의 위쪽과 아래쪽 행이 서로 다른 카메라 자세(camera pose)에서 기록되기 때문에 수직 구조물이 기울어져 보일 수 있다. 회전 운동(rotational motion)에서는 센서가 판독되는 동안 시선 방향(viewing direction)이 지속적으로 변하므로 더욱 복잡한 변형이 발생할 수 있다.

기본적인 시간 파라미터(temporal parameter)는 행 판독 시간(row readout time)이며, 경우에 따라 전체 프레임 판독 시간(total frame readout time)으로 표현하기도 한다. 영상에 N개의 행이 있고 연속된 행 사이의 시간 간격이 Δt라면 행 r의 유효 타임스탬프는 대략 t(r) = t0 + rΔt로 나타낼 수 있다. 캘리브레이션은 영상 측정값을 실제 획득 시점의 카메라 자세와 연결할 수 있을 정도로 이러한 시간 관계를 정확하게 결정하는 것을 목표로 한다.

노출 시간(exposure time)과 판독 시간(readout time)은 서로 다른 특성을 나타내므로 혼동해서는 안 된다. 노출 시간은 개별 행 또는 픽셀 영역이 입사광(incoming light)을 얼마나 오랫동안 적분하는지를 결정하는 반면, 판독 타이밍(readout timing)은 영상의 서로 다른 영역이 상대적으로 언제 샘플링되는지를 결정한다. 카메라가 모션 블러(motion blur)를 줄이기 위해 짧은 노출 시간을 사용하더라도 전체 프레임 판독 구간이 길다면 상당한 롤링 셔터 왜곡이 발생할 수 있다.

롤링 셔터 캘리브레이션은 기존의 내부 카메라 캘리브레이션(intrinsic camera calibration)에 사용되는 체커보드(checkerboard)와 같이 기하학적 구조가 정확하게 알려진 타깃을 이용하여 수행할 수 있다. 카메라 또는 타깃이 제어된 운동(controlled motion)을 수행하는 동안 여러 영상을 촬영한다. 타깃의 기하학적 구조를 알고 있으므로 예상 투영 위치와 실제 측정된 특징점 위치 사이의 편차를 이용하여 기존 카메라 파라미터와 시간적 판독 특성을 함께 추정할 수 있다.

유용한 캘리브레이션 운동(calibration motion)은 과도한 모션 블러나 특징점 검출 실패를 발생시키지 않으면서 관측 가능한 롤링 셔터 효과를 만들어야 한다. 특히 회전 운동은 카메라 방향의 변화가 영상의 행에 따라 명확한 변형을 생성하기 때문에 유용한 정보를 제공한다. 시간 파라미터가 제한적이거나 조건이 좋지 않은 특정 운동 패턴에 의해서만 결정되지 않도록 여러 운동 방향과 속도를 포함한 캘리브레이션 데이터를 확보해야 한다.

정확한 특징점 타이밍(feature timing)을 위해서는 타임스탬프 기준(timestamp convention)을 명확하게 정의해야 한다. 프레임 타임스탬프(frame timestamp)는 노출 시작(start of exposure), 판독 시작(start of readout), 노출 중앙(center of exposure) 또는 하드웨어에 따라 정의되는 다른 이벤트를 나타낼 수 있다. 따라서 캘리브레이션 모델은 보고된 영상 타임스탬프와 개별 행의 타임스탬프가 어떻게 연결되는지를 정의해야 한다. 이러한 정의가 없으면 추정된 판독 시간 간격을 외부 센서나 운동 추정값과 신뢰성 있게 통합할 수 없다.

롤링 셔터 카메라 모델(rolling shutter camera model)은 하나의 영상이 형성되는 동안 카메라 자세가 변화할 수 있도록 기존 투영 모델(conventional projection model)을 확장한다. 모든 관측점에 하나의 회전과 병진 값을 사용하는 대신 해당 점이 위치한 영상 행의 획득 시점에 맞추어 카메라 자세를 평가한다. 따라서 투영 위치는 카메라 내부 파라미터(camera intrinsics), 렌즈 왜곡(lens distortion), 운동(motion), 시간적 판독 파라미터(temporal readout parameters)에 동시에 의존한다.

영상이 형성되는 동안의 운동은 캘리브레이션 시스템에 따라 여러 방식으로 표현할 수 있다. 단순한 모델에서는 한 프레임 동안 일정한 병진 속도(translational velocity)와 각속도(angular velocity)를 가정할 수 있으며, 보다 발전된 방법에서는 연속 궤적(continuous trajectory)으로부터 카메라 자세를 보간(interpolation)할 수 있다. 관성측정장치(IMU) 측정값, 엔코더 정보(encoder information), 시각적 운동 추정(visual motion estimates), 정밀하게 제어된 타깃 운동은 시간에 따라 변화하는 자세에 추가적인 제약조건을 제공할 수 있다.

최적화(optimization)는 측정된 특징점 위치와 시간 의존적 카메라 모델(time-dependent camera model)이 예측한 위치 사이의 차이를 최소화하여 롤링 셔터 파라미터를 추정한다. 파라미터 집합에는 내부 파라미터, 왜곡 계수(distortion coefficients), 타깃 자세(target poses), 운동 변수(motion variables), 행 타이밍(row timing), 시간 오프셋(temporal offsets)이 포함될 수 있다. 이러한 변수들은 서로 강하게 상호작용하므로 안정적인 해를 얻기 위해서는 적절한 초기값과 충분히 다양한 운동이 중요하다.

롤링 셔터 캘리브레이션은 시각-관성 시스템(visual-inertial systems)의 카메라-IMU 시간 캘리브레이션(camera-to-IMU temporal calibration)과 밀접하게 관련된다. IMU는 카메라 프레임이 순차적으로 획득되는 동안 초당 수백 또는 수천 회의 각속도와 가속도 정보를 측정할 수 있다. 각각의 영상 행을 관성 시간축(inertial timeline)에 정확하게 연결하면 운동 보상(motion compensation)이 가능해지고 시간 오차가 기하학적 외부 또는 내부 파라미터 오차로 잘못 해석되는 것을 방지할 수 있다.

하드웨어 트리거링(hardware triggering)과 동기화된 클록(synchronized clocks)은 타임스탬프의 일관성을 향상시키지만 롤링 셔터 특성을 자동으로 제거하지는 않는다. 트리거는 프레임 획득이 시작되는 시점을 정확하게 정의할 수 있지만 개별 행은 여전히 서로 다른 시점에 노출된다. 따라서 물리적 동기화(physical synchronization), 타임스탬프 캘리브레이션(timestamp calibration), 롤링 셔터 판독 캘리브레이션은 전체 센서 타이밍 모델(sensor timing model)을 구성하는 서로 연관되어 있지만 구별되는 요소로 다루어야 한다.

검증(validation)은 파라미터 추정에 사용한 운동 시퀀스와 다른 조건의 시퀀스를 이용하는 것이 바람직하다. 보정된 투영(corrected projections)에서는 영상의 위쪽에서 아래쪽으로 나타나는 체계적인 잔차 변화(systematic residual variation)가 감소해야 하며, 직선 또는 강체 구조(rigid structures)는 운동 중에도 기하학적으로 일관된 형태를 유지해야 한다. 영상 행에 따른 재투영 잔차(reprojection residuals)를 분석하면 남아 있는 타이밍 오차나 부적절한 운동 모델을 검출하는 데 특히 유용하다.

롤링 셔터 효과의 심각도는 판독 시간(readout duration)과 장면 또는 카메라의 동적 특성(dynamics) 사이의 관계에 따라 달라진다. 천천히 이동하는 실내 로봇은 일반적인 동작에서 왜곡이 제한적일 수 있지만 드론(drones), 모바일 매니퓰레이터(mobile manipulators), 고속 차량(high-speed vehicles), 진동 플랫폼(vibrating platforms), 움직이는 기계 주변에 장착된 카메라에서는 상당한 오차가 발생할 수 있다. 따라서 캘리브레이션 요구사항은 예상되는 운용 운동 범위(operational motion envelope)를 기반으로 결정해야 한다.

기계적 진동(mechanical vibration)은 고주파 회전 운동(high-frequency rotational motion)이 특징적인 물결 형태 또는 진동성 영상 변형을 발생시킬 수 있으므로 특별히 고려해야 한다. 진동 주파수가 행 판독 시퀀스(row readout sequence)가 표현할 수 있는 시간 해상도에 근접하거나 이를 초과하면 단순한 일정 속도 모델(constant-velocity model)이 충분하지 않을 수 있다. 이러한 경우 기계적 절연(mechanical isolation), 더 짧은 판독 시간, 더 높은 주기의 운동 측정 또는 글로벌 셔터 센서(global shutter sensor)가 보다 강건한 해결책이 될 수 있다.

로봇 인지 시스템(robotic perception systems)에서 롤링 셔터 캘리브레이션은 영상 기하학(image geometry)을 물리적 시간(physical time)과 연결한다. 정확한 모델링은 시각 오도메트리(visual odometry), 시각-관성 추정(visual-inertial estimation), 특징점 추적(feature tracking), 3차원 재구성(three-dimensional reconstruction), 센서 융합(sensor fusion), 카메라-센서 정렬(camera-to-sensor alignment)의 정확성을 향상시킨다. 추정된 시간 파라미터는 내부 캘리브레이션 데이터와 함께 저장하고 카메라 모드, 해상도, 판독 구성, 동기화 또는 센서 하드웨어가 변경될 때마다 다시 검증해야 한다.

06.05. Camera Calibration Tools

카메라 캘리브레이션 도구(camera calibration tools)는 카메라 파라미터(camera parameters)를 추정하고, 검증하고, 저장하고, 적용하기 위한 실용적인 소프트웨어 환경을 제공한다. 이러한 도구는 타깃 검출(target detection), 내부 파라미터 추정(intrinsic estimation), 왜곡 모델링(distortion modeling), 스테레오 캘리브레이션(stereo calibration), 최적화(optimization), 시각화(visualization)를 결합하여 캘리브레이션 이론을 반복 가능한 엔지니어링 워크플로(engineering workflow)로 변환한다. 도구를 선택할 때는 카메라 유형, 로보틱스 프레임워크(robotics framework), 자동화 요구사항, 배포 환경(deployment environment)을 고려해야 한다.

OpenCV는 로보틱스(robotics)와 컴퓨터 비전(computer vision) 분야에서 카메라 캘리브레이션에 가장 널리 사용되는 소프트웨어 라이브러리 중 하나이다. OpenCV의 캘리브레이션 기능은 체커보드(checkerboard)와 기타 평면 타깃(planar targets), 내부 파라미터 추정, 방사 및 접선 왜곡 모델(radial and tangential distortion models), 스테레오 캘리브레이션, 정류(rectification), 영상 왜곡 보정(image undistortion)을 지원한다. OpenCV는 C++과 Python에서 사용할 수 있으므로 동일한 캘리브레이션 원리를 개발 도구, 테스트 스크립트 및 양산 소프트웨어에 통합할 수 있다.

일반적인 OpenCV 워크플로는 알려진 3차원 타깃 좌표(three-dimensional target coordinates)를 정의하고 이에 대응하는 2차원 영상점(two-dimensional image points)을 검출하는 것으로 시작한다. 여러 관측값을 캘리브레이션 솔버(calibration solver)에 입력하면 카메라 행렬(camera matrix), 왜곡 계수(distortion coefficients), 자세 정보(pose information)를 추정한다. 이후 결과 파라미터는 재투영 오차(reprojection error)를 통해 평가할 수 있으며, 후속 영상 처리를 위한 왜곡 보정 또는 정류 매핑(rectification mappings)을 생성하는 데 사용할 수 있다.

체커보드 코너 검출(checkerboard corner detection)은 검출된 특징점의 품질이 최종 캘리브레이션 결과에 큰 영향을 미치기 때문에 많은 캘리브레이션 도구의 기본적인 기능이다. 소프트웨어는 일반적으로 내부 코너 패턴(internal corner pattern)을 식별한 후 해당 좌표를 서브픽셀 정확도(subpixel accuracy)로 정밀화한다. 특히 블러(blur), 반사(reflections), 불량한 조명(poor illumination), 부분적인 타깃 가시성(partial target visibility)이 존재하는 경우 자동으로 허용된 모든 프레임이 유효하다고 가정하지 말고 검출 결과를 직접 확인해야 한다.

기존 체커보드의 검출이 어려운 환경에서는 대체 캘리브레이션 타깃(alternative calibration targets)을 사용하여 강건성(robustness)을 향상시킬 수 있다. ChArUco 타깃(ChArUco targets)은 체스보드 기하학(chessboard geometry)과 고유하게 식별 가능한 마커(markers)를 결합하여 보드의 일부가 가려져 있어도 유용한 관측값을 확보할 수 있도록 한다. 마커 기반 타깃(marker-based targets)은 대응관계 식별도 단순화할 수 있지만, 타깃 선택은 카메라 시스템의 정확도, 작업 거리(working distance), 시야(field of view) 요구사항과 일관되어야 한다.

MATLAB은 대화형 엔지니어링 분석(interactive engineering analysis)과 알고리즘 개발에 유용한 통합 캘리브레이션 환경(integrated calibration environment)을 제공한다. 카메라 캘리브레이션 애플리케이션과 컴퓨터 비전 기능을 이용하여 내부 파라미터, 렌즈 왜곡(lens distortion), 스테레오 기하학(stereo geometry) 및 관련 값을 추정하면서 관측값과 오차를 그래픽 방식으로 확인할 수 있다. 이러한 대화형 도구는 자동화된 양산 프로세스를 구현하기 전에 엔지니어가 캘리브레이션 품질을 분석해야 할 때 특히 유용하다.

ROS 및 ROS 2 카메라 시스템에서는 일반적으로 캘리브레이션 유틸리티(calibration utilities)를 표준화된 카메라 정보 메시지(camera information messages)와 함께 사용한다. 캘리브레이션 파라미터는 카메라 행렬, 왜곡 계수, 정류 행렬(rectification matrices), 투영 행렬(projection matrices)로 표현하여 후속 인지 노드(perception nodes)에 제공할 수 있다. 이를 통해 영상 정류, 스테레오 처리, 시각적 위치추정(visual localization) 등의 알고리즘이 각각 별도의 캘리브레이션을 반복하지 않고 일관된 카메라 모델을 사용할 수 있다.

카메라 캘리브레이션 파일(camera calibration file)은 캘리브레이션 환경에서 실제 로봇으로 파라미터를 신뢰성 있게 전달해야 한다는 점에서 캘리브레이션 알고리즘만큼 중요하다. 저장된 구성(configuration)에는 영상 크기(image dimensions), 내부 행렬(intrinsic matrix), 왜곡 모델(distortion model), 왜곡 계수와 필요한 정류 또는 투영 행렬이 명시되어야 한다. 또한 메타데이터(metadata)를 이용하여 해당 파라미터를 올바른 물리적 카메라 및 운용 구성(operating configuration)과 연결해야 한다.

스테레오 캘리브레이션 도구(stereo calibration tools)는 두 개의 캘리브레이션된 카메라 사이의 강체 변환(rigid transformation)을 추정함으로써 단안 카메라 워크플로(monocular workflow)를 확장한다. 일반적으로 스테레오 최적화(stereo optimization), 에피폴라 기하학(epipolar geometry) 계산, 정류 변환(rectification transformations), 리매핑 테이블(remapping tables) 생성을 제공한다. 검증에서는 정류된 영상의 대응 특징점이 최소한의 수직 시차(vertical disparity)를 나타내고 재구성된 치수가 알려진 실제 기하학과 일치하는지를 확인해야 한다.

로봇이 카메라와 관성측정장치(IMU)를 결합하거나 정밀한 시간 캘리브레이션(temporal calibration)을 필요로 하는 경우에는 특수화된 캘리브레이션 프레임워크(specialized calibration frameworks)가 더 적합할 수 있다. 이러한 시스템은 카메라 내부 파라미터, 카메라-IMU 외부 파라미터(camera-to-IMU extrinsics), 시간 오프셋(time offsets), 경우에 따라 롤링 셔터 타이밍(rolling shutter timing)을 하나의 통합된 최적화 과정에서 추정할 수 있다. 이러한 기능은 시각-관성 오도메트리(visual-inertial odometry), 드론(drones), 모바일 로봇 및 기하학과 시간이 긴밀하게 결합된 플랫폼에 유용하다.

캘리브레이션 도구는 단순히 파라미터 파일을 반환하는 것에 그치지 않고 수치적인 품질 지표(numerical quality indicators)를 제공해야 한다. 재투영 오차는 일반적으로 전체 및 개별 영상 단위로 보고되며, 보다 상세한 워크플로에서는 센서 전체 영역에 걸친 잔차 분포(residual distributions)를 분석한다. 비정상적으로 큰 오차를 가진 프레임은 부정확한 특징점 검출, 타깃 변형(target deformation), 부족한 자세 다양성(pose diversity), 모션 블러 또는 부적절한 왜곡 모델을 나타낼 수 있다.

시각화(visualization) 역시 중요하다. 일부 캘리브레이션 실패는 수치만으로 확인하는 것보다 기하학적으로 확인하는 것이 더 쉽기 때문이다. 유용한 검증에는 검출된 코너 표시, 관측점과 재투영점(reprojected points)의 비교, 왜곡 보정된 직선의 확인, 정류된 스테레오 영상 쌍의 검토, 캘리브레이션 관측값의 공간적 분포 확인 등이 포함된다. 전체 오차 값이 작더라도 체계적인 잔차 패턴(systematic residual patterns)에 대한 검토를 대신할 수는 없다.

캘리브레이션이 실험실 개발 단계에서 로봇 제조 단계로 이동하면 자동화(automation)가 중요해진다. 양산 도구(production tool)는 영상 획득을 제어하고, 타깃 가시성을 확인하고, 불량한 관측값을 제거하고, 파라미터를 추정하고, 허용 기준(acceptance thresholds)을 평가하고, 캘리브레이션 데이터를 장치 식별자(device identifier)에 할당하고, 결과를 자동으로 저장할 수 있다. 이를 통해 작업자 의존성을 감소시키고 많은 수의 카메라와 로봇에서 반복성(repeatability)을 향상시킬 수 있다.

캘리브레이션 소프트웨어는 파라미터 추정(parameter estimation)과 합격 판정(acceptance decisions)을 분리해야 한다. 최적화기는 수집된 데이터셋의 기하학적 조건이 좋지 않은 경우에도 일반적으로 수치적인 해를 반환할 수 있다. 따라서 강건한 엔지니어링 도구는 캘리브레이션 성공을 선언하기 전에 영상 커버리지(image coverage), 자세 다양성, 특징점 수(feature count), 잔차 크기(residual magnitude), 파라미터의 타당성(parameter plausibility), 검증 결과를 확인해야 한다. 실패한 데이터셋은 의심스러운 파라미터를 저장하는 대신 데이터를 다시 획득하도록 처리해야 한다.

캘리브레이션 파라미터가 실제 로봇 시스템의 일부로 배포되면 버전 관리(version control)와 추적성(traceability)이 필수적이다. 저장된 기록에는 캘리브레이션 도구와 관련 소프트웨어 버전, 타깃 정의(target definition), 카메라 모드(camera mode), 해상도(resolution), 파라미터 집합(parameter set), 검증 결과(validation result), 캘리브레이션 날짜 또는 구성 개정(configuration revision)을 명시해야 한다. 이러한 정보는 엔지니어가 결과를 재현하고 하드웨어 또는 소프트웨어 변경 이후 재캘리브레이션(recalibration)이 필요한지를 판단할 수 있도록 한다.

복잡한 인지 시스템(perception systems)에서는 도구 간 상호운용성(tool interoperability)이 특히 중요하다. 한 환경에서 추정된 파라미터는 OpenCV 애플리케이션, ROS 노드, 스테레오 라이브러리, 시각-관성 추정기(visual-inertial estimators), 시뮬레이션 환경(simulation environments), 독점 인지 소프트웨어(proprietary perception software)에서 사용될 수 있다. 따라서 좌표계 규약(coordinate conventions), 왜곡 모델, 행렬 정의(matrix definitions), 영상 스케일링, 변환 방향(transformation direction)의 차이를 동일하다고 가정하지 말고 명시적으로 처리해야 한다.

로보틱스 엔지니어링(robotics engineering)에서 카메라 캘리브레이션 도구는 일회성 실험실 유틸리티가 아니라 센서 수명주기(sensor lifecycle)의 일부로 다루어야 한다. 완전한 워크플로는 타깃 준비(target preparation), 데이터 획득(data acquisition), 특징점 검출(feature detection), 최적화, 검증, 파라미터 저장(parameter storage), 배포(deployment), 주기적 확인(periodic verification)을 하나로 연결한다. 잘 설계된 도구 체계는 캘리브레이션의 재현성(reproducibility)과 추적성을 확보하여 카메라 기하학(camera geometry)이 인지(perception)와 센서 융합(sensor fusion)을 위한 신뢰할 수 있는 기반으로 지속적으로 유지되도록 한다.


저자: Richard Minsoo Go

LinkedIn: Richard Minsoo Go

Top comments (0)