Camera Calibrator

1 개요

카메라의 내부, 외부 파라미터를 추정하여 카메라의 왜곡된 시점을 보정하는 알고리즘입니다.
카메라 렌즈에 의해 발생한 왜곡을 보정하는데 사용됩니다.
왜곡이 보정된 이미지로 정확한 측정 및 검사를 하기위해 사용됩니다.

2 알고리즘 상세 설명

Source Image Calibration Result Undistorted Image
Source Image Calibration Image Undistorted Image
Fig. Camera Calibrator

내부 파라미터에 해당하는 카메라의 초점거리, 렌즈의 비틀림 등의 데이터와 외부 파라미터인 카메라의 위치 및 각도를 추정합니다.
일반적으로 체스보드 또는 점 형태의 격자 이미지를 사용하여 캘리브레이션을 진행합니다. 이외에도 십자형태의 격자, 사각형 격자 이미지도 지원합니다.

Source Image Calibration Result
Source Image Calibration Image
Fig. Camera Calibrator With ROI

영역을 특정하지 않고 처리할 수 있지만, 영역을 특정하여 보정할 수 있습니다.
노이즈같은 이미지 상태에 따라 자동 검출이 되지 않을 경우 영역을 특정하여 사용합니다.

3 파라미터 설정 및 사용 방법

4 예제 코드

CCameraCalibrator calibrator;
//////////////////////////////////
// 공통 파라미터 설정
//////////////////////////////////

//////////////////////////////////
// 추가 옵션 설정
//////////////////////////////////

// 캘리브레이션 계산합니다.
calibrator.Calibrate();

// 카메라 파라미터를 가져옵니다.
CCameraCalibrator::SIntrinsicParameters cameraParams;
calibrator.GetResultIntrinsicParameters(cameraParams);

// 왜곡을 보정합니다.
calibrator.Execute();
CCameraCalibrator calibrator = new CCameraCalibrator();
//////////////////////////////////
// 공통 파라미터 설정
//////////////////////////////////

//////////////////////////////////
// 추가 옵션 설정
//////////////////////////////////

// 캘리브레이션 계산합니다.
calibrator.Calibrate();

// 카메라 파라미터를 가져옵니다.
CCameraCalibrator.SIntrinsicParameters cameraParams = calibrator.GetResultIntrinsicParameters();

// 왜곡을 보정합니다.
calibrator.Execute();
calibrator = CCameraCalibrator()
"""
// 공통 파라미터 설정
"""

"""
// 추가 옵션 설정
"""

# 캘리브레이션 계산합니다.
calibrator.Calibrate()

# 카메라 파라미터를 가져옵니다.
cameraParams = calibrator.GetResultIntrinsicParameters()

# 왜곡을 보정합니다.
calibrator.Execute()

5 관련 알고리즘

COrthogonalCalibrator, CChessBoardDetector, CGridOfDotsDetector, CGridOfCrossDetector, CGridOfRectangleDetector