Stereo Calibrator 3D

1 개요

스테레오 캘리브레이션 및 이미지 쌍 Rectification을 수행하는 알고리즘입니다.

2 알고리즘 상세 설명

패턴이 있는 보드를 스테레오 카메라로 찍은 이미지 쌍들로 스테레오 Calibration을 진행할 수 있습니다. 사용되는 이미지 쌍의 개수가 많을수록 Calibration의 오류를 줄일 수 있습니다.
현재 Calibration에 지원하는 패턴은 체스보드, 점의 격자, 십자가 격자, 직사각형 격자입니다.
Calibration 실행 후 각 카메라의 내부 및 외부 Parameter를 얻을 수 있습니다. 이렇게 추출한 스테레오 Calibration 정보로 같은 스테레오 카메라로 찍은 이미지를 정류 및 보정할 수 있습니다.

Source Left Image Source Right Image Destination Left Model Destination Right Model
Source Image Source Image Destination Model Destination Model
Fig. Pair of Source Images and Pair of Destination Images

보드 이미지 두 쌍을 이용하여 Calibration을 진행하는 Auto Calibration과 유저가 각각 카메라의 내부, 외곡 변수와 두 카메라 간의 회전과 이동을 입력하여 Calibration을 진행하는 Manual Calibration을 지원합니다.
두 카메라의 이동값 중 X의 값이 높으면 Horizontal, Y의 값이 높으면 Vertical Rectification을 진행합니다.
GUI에서 Auto Calibration으로 알고리즘 동작 시 보드가 확인 여부와 각각 두 이미지에 서로 대응되는 점을 표시합니다.
보드가 확인되지 않는 경우 Quad ROI로 설정하여 인식이 가능합니다.
보드 이미지 쌍 중 두 이미지에서 보드가 모두 인식되지 않거나 찾은 점의 수가 다른 경우 해당 데이터는 Calibration에 사용되지 않습니다.

3 예제 코드

다음 코드로 기본 설정 및 Auto Calibration 진행이 가능합니다.

// 객체 생성
CStereoCalibrator3D stereoCalibrator3D;

// 첫 입력 이미지 설정
CFLImage fliLearnImage;
stereoCalibrator3D.SetLearnImage(fliLearnImage);

// 두 번째 입력 이미지 설정
CFLImage fliLearnImage2;
stereoCalibrator3D.SetLearnImage2(fliLearnImage2);

// 결과 목표 정확도 설정
double f64OptimalSolAcc = 0.00001;
stereoCalibrator3D.SetOptimalSolutionAccuracy(f64OptimalSolAcc);

// Calibration에 사용되는 Type 설정
CStereoCalibrator3D::EGridType eGridType = CStereoCalibrator3D::EGridType_ChessBoard;
stereoCalibrator3D.SetGridType(eGridType);

// Calibrate 진행
stereoCalibrator3D.Calibrate();
// 객체 생성
CStereoCalibrator3D stereoCalibrator3D = new CStereoCalibrator3D();

// 첫 입력 이미지 설정
CFLImage fliLearnImage = new CFLImage();
stereoCalibrator3D.SetLearnImage(ref fliLearnImage);

// 두 번째 입력 이미지 설정
CFLImage fliLearnImage2 = new CFLImage();
stereoCalibrator3D.SetLearnImage2(ref fliLearnImage2);

// 결과 목표 정확도 설정
double f64OptimalSolAcc = 0.00001;
stereoCalibrator3D.SetOptimalSolutionAccuracy(f64OptimalSolAcc);

// Calibration에 사용되는 Type 설정
CStereoCalibrator3D.EGridType eGridType = CStereoCalibrator3D.EGridType.ChessBoard;
stereoCalibrator3D.SetGridType(eGridType);

// Calibrate 진행
stereoCalibrator3D.Calibrate();
# 객체 생성
stereoCalibrator3D = CStereoCalibrator3D()

# 첫 입력 이미지 설정
fliLearnImage = CFLImage()
stereoCalibrator3D.SetLearnImage(fliLearnImage)

# 두 번째 입력 이미지 설정
fliLearnImage2 = CFLImage()
stereoCalibrator3D.SetLearnImage2(fliLearnImage2)

# 결과 목표 정확도 설정
f64OptimalSolAcc = 0.00001
stereoCalibrator3D.SetOptimalSolutionAccuracy(f64OptimalSolAcc)

# Calibration에 사용되는 Type 설정
eGridType = CStereoCalibrator3D.EGridType.ChessBoard
stereoCalibrator3D.SetGridType(eGridType)

# Calibrate 진행
stereoCalibrator3D.Calibrate()

다음 코드로 기본 설정 및 Manual Calibration 진행이 가능합니다.

// 객체 생성
CStereoCalibrator3D stereoCalibrator3D;

// 내부 파라미터 생성
CStereoCalibrator3D::CIntrinsicParameters intrinsicParam;
CStereoCalibrator3D::CIntrinsicParameters intrinsicParam2;

double f64FocalLengthX = 0;
double f64FocalLengthY = 0;
double f64PrincipalPointX = 0;
double f64PrincipalPointY = 0;
double f64Skew = 0;

intrinsicParam.f64FocalLengthX = f64FocalLengthX;
intrinsicParam.f64FocalLengthY = f64FocalLengthY;
intrinsicParam.f64PrincipalPointX = f64PrincipalPointX;
intrinsicParam.f64PrincipalPointY = f64PrincipalPointY;
intrinsicParam.f64Skew = f64Skew;

intrinsicParam2.f64FocalLengthX = f64FocalLengthX;
intrinsicParam2.f64FocalLengthY = f64FocalLengthY;
intrinsicParam2.f64PrincipalPointX = f64PrincipalPointX;
intrinsicParam2.f64PrincipalPointY = f64PrincipalPointY;
intrinsicParam2.f64Skew = f64Skew;

// 내부 파라미터 설정
stereoCalibrator3D.SetIntrinsicParameters(intrinsicParam);
stereoCalibrator3D.SetIntrinsicParameters2(intrinsicParam2);

// 외곡 파라미터 생성
CStereoCalibrator3D::CDistortionCoefficients distortionParam;
CStereoCalibrator3D::CDistortionCoefficients distortionParam2;

double f64K1 = 0;
double f64K2 = 0;
double f64P1 = 0;
double f64P2 = 0;
double f64K3 = 0;

distortionParam.f64K1 = f64K1;
distortionParam.f64K2 = f64K2;
distortionParam.f64P1 = f64P1;
distortionParam.f64P2 = f64P2;
distortionParam.f64K3 = f64K3;

distortionParam2.f64K1 = f64K1;
distortionParam2.f64K2 = f64K2;
distortionParam2.f64P1 = f64P1;
distortionParam2.f64P2 = f64P2;
distortionParam2.f64K3 = f64K3;

// 외곡 파라미터 설정
stereoCalibrator3D.SetDistortionCoefficients(distortionParam);
stereoCalibrator3D.SetDistortionCoefficients2(distortionParam2);

// 회전 파라미터 생성
CStereoCalibrator3D::CRotationParameters rotationParam;

double f64R0 = 0;
double f64R1 = 0;
double f64R2 = 0;
double f64R3 = 0;
double f64R4 = 0;
double f64R5 = 0;
double f64R6 = 0;
double f64R7 = 0;
double f64R8 = 0;

rotationParam.f64R0 = f64R0;
rotationParam.f64R1 = f64R1;
rotationParam.f64R2 = f64R2;
rotationParam.f64R3 = f64R3;
rotationParam.f64R4 = f64R4;
rotationParam.f64R5 = f64R5;
rotationParam.f64R6 = f64R6;
rotationParam.f64R7 = f64R7;
rotationParam.f64R8 = f64R8;

// 회전 파라미터 설정
stereoCalibrator3D.SetRotationParameters(rotationParam);

// 이동 파라미터 생성
CStereoCalibrator3D::CTranslationParameters translationParam;

double f64X = 0;
double f64Y = 0;
double f64Z = 0;

translationParam.f64X = f64X;
translationParam.f64Y = f64Y;
translationParam.f64Z = f64Z;

// 이동 파라미터 설정
stereoCalibrator3D.SetTranslationParameters(translationParam);

// Manual 값으로 Calibration 진행
stereoCalibrator3D.Calibrate();
// 객체 생성
CStereoCalibrator3D stereoCalibrator3D = new CStereoCalibrator3D();

// 내부 파라미터 생성
CStereoCalibrator3D.CIntrinsicParameters intrinsicParam = new CStereoCalibrator3D.CIntrinsicParameters();
CStereoCalibrator3D.CIntrinsicParameters intrinsicParam2 = new CStereoCalibrator3D.CIntrinsicParameters();

double f64FocalLengthX = 0;
double f64FocalLengthY = 0;
double f64PrincipalPointX = 0;
double f64PrincipalPointY = 0;
double f64Skew = 0;

intrinsicParam.f64FocalLengthX = f64FocalLengthX;
intrinsicParam.f64FocalLengthY = f64FocalLengthY;
intrinsicParam.f64PrincipalPointX = f64PrincipalPointX;
intrinsicParam.f64PrincipalPointY = f64PrincipalPointY;
intrinsicParam.f64Skew = f64Skew;

intrinsicParam2.f64FocalLengthX = f64FocalLengthX;
intrinsicParam2.f64FocalLengthY = f64FocalLengthY;
intrinsicParam2.f64PrincipalPointX = f64PrincipalPointX;
intrinsicParam2.f64PrincipalPointY = f64PrincipalPointY;
intrinsicParam2.f64Skew = f64Skew;

// 내부 파라미터 설정
stereoCalibrator3D.SetIntrinsicParameters(intrinsicParam);
stereoCalibrator3D.SetIntrinsicParameters2(intrinsicParam2);

// 외곡 파라미터 생성
CStereoCalibrator3D.CDistortionCoefficients distortionParam = new CStereoCalibrator3D.CDistortionCoefficients();
CStereoCalibrator3D.CDistortionCoefficients distortionParam2 = new CStereoCalibrator3D.CDistortionCoefficients();

double f64K1 = 0;
double f64K2 = 0;
double f64P1 = 0;
double f64P2 = 0;
double f64K3 = 0;

distortionParam.f64K1 = f64K1;
distortionParam.f64K2 = f64K2;
distortionParam.f64P1 = f64P1;
distortionParam.f64P2 = f64P2;
distortionParam.f64K3 = f64K3;

distortionParam2.f64K1 = f64K1;
distortionParam2.f64K2 = f64K2;
distortionParam2.f64P1 = f64P1;
distortionParam2.f64P2 = f64P2;
distortionParam2.f64K3 = f64K3;

// 외곡 파라미터 설정
stereoCalibrator3D.SetDistortionCoefficients(distortionParam);
stereoCalibrator3D.SetDistortionCoefficients2(distortionParam2);

// 회전 파라미터 생성
CStereoCalibrator3D.CRotationParameters rotationParam = new CStereoCalibrator3D.CRotationParameters();

double f64R0 = 0;
double f64R1 = 0;
double f64R2 = 0;
double f64R3 = 0;
double f64R4 = 0;
double f64R5 = 0;
double f64R6 = 0;
double f64R7 = 0;
double f64R8 = 0;

rotationParam.f64R0 = f64R0;
rotationParam.f64R1 = f64R1;
rotationParam.f64R2 = f64R2;
rotationParam.f64R3 = f64R3;
rotationParam.f64R4 = f64R4;
rotationParam.f64R5 = f64R5;
rotationParam.f64R6 = f64R6;
rotationParam.f64R7 = f64R7;
rotationParam.f64R8 = f64R8;

// 회전 파라미터 설정
stereoCalibrator3D.SetRotationParameters(rotationParam);

// 이동 파라미터 생성
CStereoCalibrator3D.CTranslationParameters translationParam = new CStereoCalibrator3D.CTranslationParameters();

double f64X = 0;
double f64Y = 0;
double f64Z = 0;

translationParam.f64X = f64X;
translationParam.f64Y = f64Y;
translationParam.f64Z = f64Z;

// 이동 파라미터 설정
stereoCalibrator3D.SetTranslationParameters(translationParam);

// Manual 값으로 Calibration 진행
stereoCalibrator3D.Calibrate();
# 객체 생성
stereoCalibrator3D = CStereoCalibrator3D()

# 내부 파라미터 생성
intrinsicParam = CStereoCalibrator3D.CIntrinsicParameters()
intrinsicParam2 = CStereoCalibrator3D.CIntrinsicParameters()

f64FocalLengthX = 0
f64FocalLengthY = 0
f64PrincipalPointX = 0
f64PrincipalPointY = 0
f64Skew = 0

intrinsicParam.f64FocalLengthX = f64FocalLengthX
intrinsicParam.f64FocalLengthY = f64FocalLengthY
intrinsicParam.f64PrincipalPointX = f64PrincipalPointX
intrinsicParam.f64PrincipalPointY = f64PrincipalPointY
intrinsicParam.f64Skew = f64Skew

intrinsicParam2.f64FocalLengthX = f64FocalLengthX
intrinsicParam2.f64FocalLengthY = f64FocalLengthY
intrinsicParam2.f64PrincipalPointX = f64PrincipalPointX
intrinsicParam2.f64PrincipalPointY = f64PrincipalPointY
intrinsicParam2.f64Skew = f64Skew

# 내부 파라미터 설정
stereoCalibrator3D.SetIntrinsicParameters(intrinsicParam)
stereoCalibrator3D.SetIntrinsicParameters2(intrinsicParam2)

# 외곡 파라미터 생성
distortionParam = CStereoCalibrator3D.CDistortionCoefficients()
distortionParam2 = CStereoCalibrator3D.CDistortionCoefficients()

f64K1 = 0
f64K2 = 0
f64P1 = 0
f64P2 = 0
f64K3 = 0

distortionParam.f64K1 = f64K1
distortionParam.f64K2 = f64K2
distortionParam.f64P1 = f64P1
distortionParam.f64P2 = f64P2
distortionParam.f64K3 = f64K3

distortionParam2.f64K1 = f64K1
distortionParam2.f64K2 = f64K2
distortionParam2.f64P1 = f64P1
distortionParam2.f64P2 = f64P2
distortionParam2.f64K3 = f64K3

# 외곡 파라미터 설정
stereoCalibrator3D.SetDistortionCoefficients(distortionParam)
stereoCalibrator3D.SetDistortionCoefficients2(distortionParam2)

# 회전 파라미터 생성
rotationParam = CStereoCalibrator3D.CRotationParameters()

f64R0 = 0
f64R1 = 0
f64R2 = 0
f64R3 = 0
f64R4 = 0
f64R5 = 0
f64R6 = 0
f64R7 = 0
f64R8 = 0

rotationParam.f64R0 = f64R0
rotationParam.f64R1 = f64R1
rotationParam.f64R2 = f64R2
rotationParam.f64R3 = f64R3
rotationParam.f64R4 = f64R4
rotationParam.f64R5 = f64R5
rotationParam.f64R6 = f64R6
rotationParam.f64R7 = f64R7
rotationParam.f64R8 = f64R8

# 회전 파라미터 설정
stereoCalibrator3D.SetRotationParameters(rotationParam)

# 이동 파라미터 생성
translationParam = CStereoCalibrator3D.CTranslationParameters()

f64X = 0
f64Y = 0
f64Z = 0

translationParam.f64X = f64X
translationParam.f64Y = f64Y
translationParam.f64Z = f64Z

# 이동 파라미터 설정
stereoCalibrator3D.SetTranslationParameters(translationParam)

# Manual 값으로 Calibration 진행
stereoCalibrator3D.Calibrate()

다음 코드는 Calibrate 이후 같은 카메라로 찍은 이미지를 Rectify 하는 코드입니다.

// 객체 생성
CStereoCalibrator3D stereoCalibrator3D;

// 첫 번째 Rectify 할 이미지 설정
CFLImage fliSourceImage;
stereoCalibrator3D.SetSourceImage(fliSourceImage);

// 두 번째 Rectify 할 이미지 설정
CFLImage fliSourceImage2;
stereoCalibrator3D.SetSourceImage2(fliSourceImage2);

// 첫 번째 결과 이미지 설정
CFLImage fliDestinationImage;
stereoCalibrator3D.SetDestinationImage(fliDestinationImage);

// 두 번째 결과 이미지 설정
CFLImage fliDestinationImage2;
stereoCalibrator3D.SetDestinationImage2(fliDestinationImage2);

// Batch Processing 설정
bool bBatchProcessing = false;
stereoCalibrator3D.EnableBatchProcessing(bBatchProcessing);

// Interpolation Method 설정
EInterpolationMethod eInterMethod = EInterpolationMethod_Bicubic;
stereoCalibrator3D.SetInterpolationMethod(eInterMethod);

// 알고리즘 실행
stereoCalibrator3D.Execute();
// 객체 생성
CStereoCalibrator3D stereoCalibrator3D = new CStereoCalibrator3D();

// 첫 번째 Rectify 할 이미지 설정
CFLImage fliSourceImage = new CFLImage();
stereoCalibrator3D.SetSourceImage(ref fliSourceImage);

// 두 번째 Rectify 할 이미지 설정
CFLImage fliSourceImage2 = new CFLImage();
stereoCalibrator3D.SetSourceImage2(ref fliSourceImage2);

// 첫 번째 결과 이미지 설정
CFLImage fliDestinationImage = new CFLImage();
stereoCalibrator3D.SetDestinationImage(ref fliDestinationImage);

// 두 번째 결과 이미지 설정
CFLImage fliDestinationImage2 = new CFLImage();
stereoCalibrator3D.SetDestinationImage2(ref fliDestinationImage2);

// Batch Processing 설정
bool bBatchProcessing = false;
stereoCalibrator3D.EnableBatchProcessing(bBatchProcessing);

// Interpolation Method 설정
EInterpolationMethod eInterMethod = EInterpolationMethod.Bicubic;
stereoCalibrator3D.SetInterpolationMethod(eInterMethod);

// 알고리즘 실행
stereoCalibrator3D.Execute();
# 객체 생성
stereoCalibrator3D = CStereoCalibrator3D()

# 첫 번째 Rectify 할 이미지 설정
fliSourceImage = CFLImage()
stereoCalibrator3D.SetSourceImage(fliSourceImage)

# 두 번째 Rectify 할 이미지 설정
fliSourceImage2 = CFLImage()
stereoCalibrator3D.SetSourceImage2(fliSourceImage2)

# 첫 번째 결과 이미지 설정
fliDestinationImage = CFLImage()
stereoCalibrator3D.SetDestinationImage(fliDestinationImage)

# 두 번째 결과 이미지 설정
fliDestinationImage2 = CFLImage()
stereoCalibrator3D.SetDestinationImage2(fliDestinationImage2)

# Batch Processing 설정
bBatchProcessing = False
stereoCalibrator3D.EnableBatchProcessing(bBatchProcessing)

# Interpolation Method 설정
eInterMethod = EInterpolationMethod.Bicubic
stereoCalibrator3D.SetInterpolationMethod(eInterMethod)

# 알고리즘 실행
stereoCalibrator3D.Execute()

다음 코드로 전에 Calibrate 한 Parameter의 로드가 가능합니다.

// 객체 생성
CStereoCalibrator3D stereoCalibrator3D;

// 데이터 파일 위치
CFLString<wchar_t> strLoad;

// 데이터 불러오기
stereoCalibrator3D.Load(strLoad);
// 객체 생성
CStereoCalibrator3D stereoCalibrator3D = new CStereoCalibrator3D();

// 데이터 파일 위치
string strLoad = "";

// 데이터 불러오기
stereoCalibrator3D.Load(strLoad);
# 객체 생성
stereoCalibrator3D = CStereoCalibrator3D()

# 데이터 파일 위치
strLoad = ""

# 데이터 불러오기
stereoCalibrator3D.Load(strLoad)

다음 코드로 전에 Calibrate 한 Parameter의 저장이 가능합니다.
Calibrate 정상 동작 이후 Parameter 저장이 가능합니다.

// 객체 생성
CStereoCalibrator3D stereoCalibrator3D;

// 데이터 파일 위치
CFLString<wchar_t> strSave;

// 데이터 불러오기
stereoCalibrator3D.Save(strSave);
// 객체 생성
CStereoCalibrator3D stereoCalibrator3D = new CStereoCalibrator3D();

// 데이터 파일 위치
string strSave = "";

// 데이터 불러오기
stereoCalibrator3D.Save(strSave);
# 객체 생성
stereoCalibrator3D = CStereoCalibrator3D()

# 데이터 파일 위치
strSave = ""

# 데이터 불러오기
stereoCalibrator3D.Save(strSave)

4 추가 함수 설명

Calibration 전 파라미터 설정 및 가져오기

// 객체 생성
CStereoCalibrator3D stereoCalibrator3D;

// 입력되는 이미지 Type
CStereoCalibrator3D::EGridType eGridType = CStereoCalibrator3D::EGridType_ChessBoard;

// 체스보드 타입
eGridType = CStereoCalibrator3D::EGridType_ChessBoard;
// 격자 점판 타입
eGridType = CStereoCalibrator3D::EGridType_GridOfDots;
// 격자 십자가 타입
eGridType = CStereoCalibrator3D::EGridType_GridOfCross;
// 격자 사각형 타입
eGridType = CStereoCalibrator3D::EGridType_GridOfRectangle;

CStereoCalibrator3D::EGridType eSetGridType = eGridType;

// Calibration 이미지 형식을 설정합니다.
stereoCalibrator3D.SetGridType(eSetGridType);

CStereoCalibrator3D::EGridType eGetGridType = eGridType;

// Calibration 이미지 형식을 가져옵니다.
eGetGridType = stereoCalibrator3D.GetGridType();
// 객체 생성
CStereoCalibrator3D stereoCalibrator3D = new CStereoCalibrator3D();

// 입력되는 이미지 Type
CStereoCalibrator3D.EGridType eGridType = CStereoCalibrator3D.EGridType.ChessBoard;

// 체스보드 타입
eGridType = CStereoCalibrator3D.EGridType.ChessBoard;
// 격자 점판 타입
eGridType = CStereoCalibrator3D.EGridType.GridOfDots;
// 격자 십자가 타입
eGridType = CStereoCalibrator3D.EGridType.GridOfCross;
// 격자 사각형 타입
eGridType = CStereoCalibrator3D.EGridType.GridOfRectangle;

CStereoCalibrator3D.EGridType eSetGridType = eGridType;

// Calibration 이미지 형식을 설정합니다.
stereoCalibrator3D.SetGridType(eSetGridType);

CStereoCalibrator3D.EGridType eGetGridType = eGridType;

// Calibration 이미지 형식을 가져옵니다.
eGetGridType = stereoCalibrator3D.GetGridType();
# 객체 생성
stereoCalibrator3D = CStereoCalibrator3D()

# 입력되는 이미지 Type
eGridType = CStereoCalibrator3D.EGridType.ChessBoard

# 체스보드 타입
eGridType = CStereoCalibrator3D.EGridType.ChessBoard
# 격자 점판 타입
eGridType = CStereoCalibrator3D.EGridType.GridOfDots
# 격자 십자가 타입
eGridType = CStereoCalibrator3D.EGridType.GridOfCross
# 격자 사각형 타입
eGridType = CStereoCalibrator3D.EGridType.GridOfRectangle

eSetGridType = eGridType

# Calibration 이미지 형식을 설정합니다.
stereoCalibrator3D.SetGridType(eSetGridType)

eGetGridType = eGridType

# Calibration 이미지 형식을 가져옵니다.
eGetGridType = stereoCalibrator3D.GetGridType()

CStereoCalibrator3D::EGridType은 CStereoCalibrator3D 알고리즘의 Calibration에 사용되는 패턴의 설정이 저장됩니다.
함수 SetGridType으로 입력 패턴의 설정이 가능합니다.
함수 GetGridType으로 설정된 입력 패턴을 가져올 수 있습니다.
찍은 보드와 다른 패턴을 설정할 때 함수가 동작하지 않거나 결과 오류가 발생할 확률이 높습니다.

Default: EGridType_ChessBoard

// 객체 생성
CStereoCalibrator3D stereoCalibrator3D;

// 설정된 Optimal Solution Accuracy를 설정합니다.
double f64SetOptimalSolutionAcc = 0.00001;

stereoCalibrator3D.SetOptimalSolutionAccuracy(f64SetOptimalSolutionAcc);

// 설정된 Optimal Solution Accuracy를 가져옵니다.
double f64GetOptimalSolutionAcc = stereoCalibrator3D.GetOptimalSolutionAccuracy();
// 객체 생성
CStereoCalibrator3D stereoCalibrator3D = new CStereoCalibrator3D();

// 설정된 Optimal Solution Accuracy를 설정합니다.
double f64SetOptimalSolutionAcc = 0.00001;

stereoCalibrator3D.SetOptimalSolutionAccuracy(f64SetOptimalSolutionAcc);

// 설정된 Optimal Solution Accuracy를 가져옵니다.
double f64GetOptimalSolutionAcc = stereoCalibrator3D.GetOptimalSolutionAccuracy();
# 객체 생성
stereoCalibrator3D = CStereoCalibrator3D()

# 설정된 Optimal Solution Accuracy를 설정합니다.
f64SetOptimalSolutionAcc = 0.00001

stereoCalibrator3D.SetOptimalSolutionAccuracy(f64SetOptimalSolutionAcc)

# 설정된 Optimal Solution Accuracy를 가져옵니다.
f64GetOptimalSolutionAcc = stereoCalibrator3D.GetOptimalSolutionAccuracy()

함수 SetOptimalSolutionAccuracy로 Optimal Solution Accuracy를 설정할 수 있습니다. 함수 GetOptimalSolutionAccuracy로 설정된 Optimal Solution Accuracy를 가져올 수 있습니다.

// 객체 생성
CStereoCalibrator3D stereoCalibrator3D;

// 내부 파라미터 생성
CStereoCalibrator3D::CIntrinsicParameters intrinsicSetParam;
CStereoCalibrator3D::CIntrinsicParameters intrinsicSetParam2;
CMatrix<double> matIntrinsicSet;
CMatrix<double> matIntrinsicSet2;

double f64FocalLengthX = 0;
double f64FocalLengthY = 0;
double f64PrincipalPointX = 0;
double f64PrincipalPointY = 0;
double f64Skew = 0;

intrinsicSetParam.f64FocalLengthX = f64FocalLengthX;
intrinsicSetParam.f64FocalLengthY = f64FocalLengthY;
intrinsicSetParam.f64PrincipalPointX = f64PrincipalPointX;
intrinsicSetParam.f64PrincipalPointY = f64PrincipalPointY;
intrinsicSetParam.f64Skew = f64Skew;

intrinsicSetParam2.f64FocalLengthX = f64FocalLengthX;
intrinsicSetParam2.f64FocalLengthY = f64FocalLengthY;
intrinsicSetParam2.f64PrincipalPointX = f64PrincipalPointX;
intrinsicSetParam2.f64PrincipalPointY = f64PrincipalPointY;
intrinsicSetParam2.f64Skew = f64Skew;

matIntrinsicSet.Create(3, 3);
matIntrinsicSet2.Create(3, 3);

matIntrinsicSet.SetValue(0, 0, f64FocalLengthX);
matIntrinsicSet.SetValue(1, 1, f64FocalLengthY);
matIntrinsicSet.SetValue(0, 2, f64PrincipalPointX);
matIntrinsicSet.SetValue(1, 2, f64PrincipalPointY);
matIntrinsicSet.SetValue(0, 1, f64Skew);

matIntrinsicSet2.SetValue(0, 0, f64FocalLengthX);
matIntrinsicSet2.SetValue(1, 1, f64FocalLengthY);
matIntrinsicSet2.SetValue(0, 2, f64PrincipalPointX);
matIntrinsicSet2.SetValue(1, 2, f64PrincipalPointY);
matIntrinsicSet2.SetValue(0, 1, f64Skew);

// 내부 파라미터 설정
stereoCalibrator3D.SetIntrinsicParameters(intrinsicSetParam);
stereoCalibrator3D.SetIntrinsicParameters2(intrinsicSetParam2);
stereoCalibrator3D.SetIntrinsicMatrix(matIntrinsicSet);
stereoCalibrator3D.SetIntrinsicMatrix2(matIntrinsicSet2);

// 내부 파라미터 생성
CStereoCalibrator3D::CIntrinsicParameters intrinsicGetParam;
CStereoCalibrator3D::CIntrinsicParameters intrinsicGetParam2;
CMatrix<double> matIntrinsicGet;
CMatrix<double> matIntrinsicGet2;

// 내부 파라미터 확인
stereoCalibrator3D.GetIntrinsicParameters(intrinsicGetParam);
stereoCalibrator3D.GetIntrinsicParameters2(intrinsicGetParam2);
stereoCalibrator3D.GetIntrinsicMatrix(matIntrinsicGet);
stereoCalibrator3D.GetIntrinsicMatrix2(matIntrinsicGet2);
// 객체 생성
CStereoCalibrator3D stereoCalibrator3D = new CStereoCalibrator3D();

// 내부 파라미터 생성
CStereoCalibrator3D.CIntrinsicParameters intrinsicSetParam = new CStereoCalibrator3D.CIntrinsicParameters();
CStereoCalibrator3D.CIntrinsicParameters intrinsicSetParam2 = new CStereoCalibrator3D.CIntrinsicParameters();
CMatrix<double> matIntrinsicSet = new CMatrix<double>();
CMatrix<double> matIntrinsicSet2 = new CMatrix<double>();

double f64FocalLengthX = 0;
double f64FocalLengthY = 0;
double f64PrincipalPointX = 0;
double f64PrincipalPointY = 0;
double f64Skew = 0;

intrinsicSetParam.f64FocalLengthX = f64FocalLengthX;
intrinsicSetParam.f64FocalLengthY = f64FocalLengthY;
intrinsicSetParam.f64PrincipalPointX = f64PrincipalPointX;
intrinsicSetParam.f64PrincipalPointY = f64PrincipalPointY;
intrinsicSetParam.f64Skew = f64Skew;

intrinsicSetParam2.f64FocalLengthX = f64FocalLengthX;
intrinsicSetParam2.f64FocalLengthY = f64FocalLengthY;
intrinsicSetParam2.f64PrincipalPointX = f64PrincipalPointX;
intrinsicSetParam2.f64PrincipalPointY = f64PrincipalPointY;
intrinsicSetParam2.f64Skew = f64Skew;

matIntrinsicSet.Create(3, 3);
matIntrinsicSet2.Create(3, 3);

matIntrinsicSet.SetValue(0, 0, f64FocalLengthX);
matIntrinsicSet.SetValue(1, 1, f64FocalLengthY);
matIntrinsicSet.SetValue(0, 2, f64PrincipalPointX);
matIntrinsicSet.SetValue(1, 2, f64PrincipalPointY);
matIntrinsicSet.SetValue(0, 1, f64Skew);

matIntrinsicSet2.SetValue(0, 0, f64FocalLengthX);
matIntrinsicSet2.SetValue(1, 1, f64FocalLengthY);
matIntrinsicSet2.SetValue(0, 2, f64PrincipalPointX);
matIntrinsicSet2.SetValue(1, 2, f64PrincipalPointY);
matIntrinsicSet2.SetValue(0, 1, f64Skew);

// 내부 파라미터 설정
stereoCalibrator3D.SetIntrinsicParameters(intrinsicSetParam);
stereoCalibrator3D.SetIntrinsicParameters2(intrinsicSetParam2);
stereoCalibrator3D.SetIntrinsicMatrix(matIntrinsicSet);
stereoCalibrator3D.SetIntrinsicMatrix2(matIntrinsicSet2);

// 내부 파라미터 생성
CStereoCalibrator3D.CIntrinsicParameters intrinsicGetParam = new CStereoCalibrator3D.CIntrinsicParameters();
CStereoCalibrator3D.CIntrinsicParameters intrinsicGetParam2 = new CStereoCalibrator3D.CIntrinsicParameters();
CMatrix<double> matIntrinsicGet = new CMatrix<double>();
CMatrix<double> matIntrinsicGet2 = new CMatrix<double>();

// 내부 파라미터 확인
stereoCalibrator3D.GetIntrinsicParameters(ref intrinsicGetParam);
stereoCalibrator3D.GetIntrinsicParameters2(ref intrinsicGetParam2);
stereoCalibrator3D.GetIntrinsicMatrix(ref matIntrinsicGet);
stereoCalibrator3D.GetIntrinsicMatrix2(ref matIntrinsicGet2);
# 객체 생성
stereoCalibrator3D = CStereoCalibrator3D()

# 내부 파라미터 생성
intrinsicSetParam = CStereoCalibrator3D.CIntrinsicParameters()
intrinsicSetParam2 = CStereoCalibrator3D.CIntrinsicParameters()
matIntrinsicSet = CMatrix[Double]()
matIntrinsicSet2 = CMatrix[Double]()

f64FocalLengthX = 0
f64FocalLengthY = 0
f64PrincipalPointX = 0
f64PrincipalPointY = 0
f64Skew = 0

intrinsicSetParam.f64FocalLengthX = f64FocalLengthX
intrinsicSetParam.f64FocalLengthY = f64FocalLengthY
intrinsicSetParam.f64PrincipalPointX = f64PrincipalPointX
intrinsicSetParam.f64PrincipalPointY = f64PrincipalPointY
intrinsicSetParam.f64Skew = f64Skew

intrinsicSetParam2.f64FocalLengthX = f64FocalLengthX
intrinsicSetParam2.f64FocalLengthY = f64FocalLengthY
intrinsicSetParam2.f64PrincipalPointX = f64PrincipalPointX
intrinsicSetParam2.f64PrincipalPointY = f64PrincipalPointY
intrinsicSetParam2.f64Skew = f64Skew

matIntrinsicSet.Create(3, 3)
matIntrinsicSet2.Create(3, 3)

matIntrinsicSet.SetValue(0, 0, f64FocalLengthX)
matIntrinsicSet.SetValue(1, 1, f64FocalLengthY)
matIntrinsicSet.SetValue(0, 2, f64PrincipalPointX)
matIntrinsicSet.SetValue(1, 2, f64PrincipalPointY)
matIntrinsicSet.SetValue(0, 1, f64Skew)

matIntrinsicSet2.SetValue(0, 0, f64FocalLengthX)
matIntrinsicSet2.SetValue(1, 1, f64FocalLengthY)
matIntrinsicSet2.SetValue(0, 2, f64PrincipalPointX)
matIntrinsicSet2.SetValue(1, 2, f64PrincipalPointY)
matIntrinsicSet2.SetValue(0, 1, f64Skew)

# 내부 파라미터 설정
stereoCalibrator3D.SetIntrinsicParameters(intrinsicSetParam)
stereoCalibrator3D.SetIntrinsicParameters2(intrinsicSetParam2)
stereoCalibrator3D.SetIntrinsicMatrix(matIntrinsicSet)
stereoCalibrator3D.SetIntrinsicMatrix2(matIntrinsicSet2)

# 내부 파라미터 생성
intrinsicGetParam = CStereoCalibrator3D.CIntrinsicParameters()
intrinsicGetParam2 = CStereoCalibrator3D.CIntrinsicParameters()
matIntrinsicGet = CMatrix[Double]()
matIntrinsicGet2 = CMatrix[Double]()

# 내부 파라미터 확인
stereoCalibrator3D.GetIntrinsicParameters(intrinsicGetParam)
stereoCalibrator3D.GetIntrinsicParameters2(intrinsicGetParam2)
stereoCalibrator3D.GetIntrinsicMatrix(matIntrinsicGet)
stereoCalibrator3D.GetIntrinsicMatrix2(matIntrinsicGet2)

함수 SetIntrinsicParameters, SetIntrinsicParameters2을 사용하여 내부 파라미터를 전용 객채로 설정이 가능합니다.
함수 SetIntrinsicMatrix, SetIntrinsicMatrix2을 사용하여 내부 파라미터를 행렬로 설정이 가능합니다.
함수 GetIntrinsicParameters, GetIntrinsicParameters2을 사용하여 내부 파라미터를 전용 객채로 설정을 가져옵니다.
함수 GetIntrinsicMatrix, GetIntrinsicMatrix2을 사용하여 내부 파라미터를 행렬로 설정을 가져옵니다.
해당 내부 파라이터는 알고리즘이 수동 캘리브레이션으로 동작 시 사용됩니다.

// 객체 생성
CStereoCalibrator3D stereoCalibrator3D;

// 외곡 파라미터 생성
CStereoCalibrator3D::CDistortionCoefficients distortionSetParam;
CStereoCalibrator3D::CDistortionCoefficients distortionSetParam2;
CFLArray<double> flaDistortionSet;
CFLArray<double> flaDistortionSet2;

double f64K1 = 0;
double f64K2 = 0;
double f64P1 = 0;
double f64P2 = 0;
double f64K3 = 0;

distortionSetParam.f64K1 = f64K1;
distortionSetParam.f64K2 = f64K2;
distortionSetParam.f64P1 = f64P1;
distortionSetParam.f64P2 = f64P2;
distortionSetParam.f64K3 = f64K3;

distortionSetParam2.f64K1 = f64K1;
distortionSetParam2.f64K2 = f64K2;
distortionSetParam2.f64P1 = f64P1;
distortionSetParam2.f64P2 = f64P2;
distortionSetParam2.f64K3 = f64K3;

flaDistortionSet.PushBack(f64K1);
flaDistortionSet.PushBack(f64K2);
flaDistortionSet.PushBack(f64P1);
flaDistortionSet.PushBack(f64P2);
flaDistortionSet.PushBack(f64K3);

flaDistortionSet2.PushBack(f64K1);
flaDistortionSet2.PushBack(f64K2);
flaDistortionSet2.PushBack(f64P1);
flaDistortionSet2.PushBack(f64P2);
flaDistortionSet2.PushBack(f64K3);

// 외곡 파라미터 설정
stereoCalibrator3D.SetDistortionCoefficients(distortionSetParam);
stereoCalibrator3D.SetDistortionCoefficients2(distortionSetParam2);
stereoCalibrator3D.SetDistortionCoefficients(flaDistortionSet);
stereoCalibrator3D.SetDistortionCoefficients2(flaDistortionSet2);

// 외곡 파라미터 생성
CStereoCalibrator3D::CDistortionCoefficients distortionGetParam;
CStereoCalibrator3D::CDistortionCoefficients distortionGetParam2;
CFLArray<double> flaDistortionGet;
CFLArray<double> flaDistortionGet2;

// 외곡 파라미터 확인
stereoCalibrator3D.GetDistortionCoefficients(distortionGetParam);
stereoCalibrator3D.GetDistortionCoefficients2(distortionGetParam2);
stereoCalibrator3D.GetDistortionCoefficients(flaDistortionGet);
stereoCalibrator3D.GetDistortionCoefficients2(flaDistortionGet2);
// 객체 생성
CStereoCalibrator3D stereoCalibrator3D = new CStereoCalibrator3D();

// 외곡 파라미터 생성
CStereoCalibrator3D.CDistortionCoefficients distortionSetParam = new CStereoCalibrator3D.CDistortionCoefficients();
CStereoCalibrator3D.CDistortionCoefficients distortionSetParam2 = new CStereoCalibrator3D.CDistortionCoefficients();
List<double> flaDistortionSet = new List<double>();
List<double> flaDistortionSet2 = new List<double>();

double f64K1 = 0;
double f64K2 = 0;
double f64P1 = 0;
double f64P2 = 0;
double f64K3 = 0;

distortionSetParam.f64K1 = f64K1;
distortionSetParam.f64K2 = f64K2;
distortionSetParam.f64P1 = f64P1;
distortionSetParam.f64P2 = f64P2;
distortionSetParam.f64K3 = f64K3;

distortionSetParam2.f64K1 = f64K1;
distortionSetParam2.f64K2 = f64K2;
distortionSetParam2.f64P1 = f64P1;
distortionSetParam2.f64P2 = f64P2;
distortionSetParam2.f64K3 = f64K3;

flaDistortionSet.Add(f64K1);
flaDistortionSet.Add(f64K2);
flaDistortionSet.Add(f64P1);
flaDistortionSet.Add(f64P2);
flaDistortionSet.Add(f64K3);

flaDistortionSet2.Add(f64K1);
flaDistortionSet2.Add(f64K2);
flaDistortionSet2.Add(f64P1);
flaDistortionSet2.Add(f64P2);
flaDistortionSet2.Add(f64K3);

// 외곡 파라미터 설정
stereoCalibrator3D.SetDistortionCoefficients(distortionSetParam);
stereoCalibrator3D.SetDistortionCoefficients2(distortionSetParam2);
stereoCalibrator3D.SetDistortionCoefficients(flaDistortionSet);
stereoCalibrator3D.SetDistortionCoefficients2(flaDistortionSet2);

// 외곡 파라미터 생성
CStereoCalibrator3D.CDistortionCoefficients distortionGetParam = new CStereoCalibrator3D.CDistortionCoefficients();
CStereoCalibrator3D.CDistortionCoefficients distortionGetParam2 = new CStereoCalibrator3D.CDistortionCoefficients();
List<double> flaDistortionGet = new List<double>();
List<double> flaDistortionGet2 = new List<double>();

// 외곡 파라미터 확인
stereoCalibrator3D.GetDistortionCoefficients(ref distortionGetParam);
stereoCalibrator3D.GetDistortionCoefficients2(ref distortionGetParam2);
stereoCalibrator3D.GetDistortionCoefficients(ref flaDistortionGet);
stereoCalibrator3D.GetDistortionCoefficients2(ref flaDistortionGet2);
# 객체 생성
stereoCalibrator3D = CStereoCalibrator3D()

# 외곡 파라미터 생성
distortionSetParam = CStereoCalibrator3D.CDistortionCoefficients()
distortionSetParam2 = CStereoCalibrator3D.CDistortionCoefficients()
flaDistortionSet = List[Double]()
flaDistortionSet2 = List[Double]()

f64K1 = 0
f64K2 = 0
f64P1 = 0
f64P2 = 0
f64K3 = 0

distortionSetParam.f64K1 = f64K1
distortionSetParam.f64K2 = f64K2
distortionSetParam.f64P1 = f64P1
distortionSetParam.f64P2 = f64P2
distortionSetParam.f64K3 = f64K3

distortionSetParam2.f64K1 = f64K1
distortionSetParam2.f64K2 = f64K2
distortionSetParam2.f64P1 = f64P1
distortionSetParam2.f64P2 = f64P2
distortionSetParam2.f64K3 = f64K3

flaDistortionSet.Add(f64K1)
flaDistortionSet.Add(f64K2)
flaDistortionSet.Add(f64P1)
flaDistortionSet.Add(f64P2)
flaDistortionSet.Add(f64K3)

flaDistortionSet2.Add(f64K1)
flaDistortionSet2.Add(f64K2)
flaDistortionSet2.Add(f64P1)
flaDistortionSet2.Add(f64P2)
flaDistortionSet2.Add(f64K3)

# 외곡 파라미터 설정
stereoCalibrator3D.SetDistortionCoefficients(distortionSetParam)
stereoCalibrator3D.SetDistortionCoefficients2(distortionSetParam2)
stereoCalibrator3D.SetDistortionCoefficients(flaDistortionSet)
stereoCalibrator3D.SetDistortionCoefficients2(flaDistortionSet2)

# 외곡 파라미터 생성
distortionGetParam = CStereoCalibrator3D.CDistortionCoefficients()
distortionGetParam2 = CStereoCalibrator3D.CDistortionCoefficients()
flaDistortionGet = List[Double]()
flaDistortionGet2 = List[Double]()

# 외곡 파라미터 확인
stereoCalibrator3D.GetDistortionCoefficients(distortionGetParam)
stereoCalibrator3D.GetDistortionCoefficients2(distortionGetParam2)
stereoCalibrator3D.GetDistortionCoefficients(flaDistortionGet)
stereoCalibrator3D.GetDistortionCoefficients2(flaDistortionGet2)

함수 SetDistortionCoefficients, SetDistortionCoefficients2을 사용하여 외곡 파라미터를 전용 객채와 배열로 설정이 가능합니다.
함수 GetDistortionCoefficients, GetDistortionCoefficients2을 사용하여 외곡 파라미터를 전용 객채와 배열로 설정을 가져옵니다.
해당 외곡 파라이터는 알고리즘이 수동 캘리브레이션으로 동작 시 사용됩니다.

// 객체 생성
CStereoCalibrator3D stereoCalibrator3D;

// 회전 파라미터 생성
CStereoCalibrator3D::CRotationParameters rotationSetParam;
CMatrix<double> matRotationSet = CMatrix<double>(3, 3);
CFLArray<double> flaRotationSet;

double f64R0 = 1;
double f64R1 = 0;
double f64R2 = 0;
double f64R3 = 0;
double f64R4 = 1;
double f64R5 = 0;
double f64R6 = 0;
double f64R7 = 0;
double f64R8 = 1;

double f64RX = 0;
double f64RY = 0;
double f64RZ = 0;

rotationSetParam.f64R0 = f64R0;
rotationSetParam.f64R1 = f64R1;
rotationSetParam.f64R2 = f64R2;
rotationSetParam.f64R3 = f64R3;
rotationSetParam.f64R4 = f64R4;
rotationSetParam.f64R5 = f64R5;
rotationSetParam.f64R6 = f64R6;
rotationSetParam.f64R7 = f64R7;
rotationSetParam.f64R8 = f64R8;

matRotationSet.SetValue(0, 0, f64R0);
matRotationSet.SetValue(0, 1, f64R1);
matRotationSet.SetValue(0, 2, f64R2);
matRotationSet.SetValue(1, 0, f64R3);
matRotationSet.SetValue(1, 1, f64R4);
matRotationSet.SetValue(1, 2, f64R5);
matRotationSet.SetValue(2, 0, f64R6);
matRotationSet.SetValue(2, 1, f64R7);
matRotationSet.SetValue(2, 2, f64R8);

flaRotationSet.PushBack(f64RX);
flaRotationSet.PushBack(f64RY);
flaRotationSet.PushBack(f64RZ);

// 회전 파라미터 설정
stereoCalibrator3D.SetRotationParameters(rotationSetParam);
stereoCalibrator3D.SetRotationMatrix(matRotationSet);
stereoCalibrator3D.SetRotationVector(flaRotationSet);

// 회전 파라미터 생성
CStereoCalibrator3D::CRotationParameters rotationGetParam;
CMatrix<double> matRotationGet;
CFLArray<double> flaRotationGet;

// 회전 파라미터 확인
stereoCalibrator3D.GetRotationParameters(rotationGetParam);
stereoCalibrator3D.GetRotationMatrix(matRotationGet);
stereoCalibrator3D.GetRotationVector(flaRotationGet);
// 객체 생성
CStereoCalibrator3D stereoCalibrator3D = new CStereoCalibrator3D();

// 회전 파라미터 생성
CStereoCalibrator3D.CRotationParameters rotationSetParam = new CStereoCalibrator3D.CRotationParameters();
CMatrix<double> matRotationSet = new CMatrix<double>(3, 3);
List<double> flaRotationSet = new List<double>();

double f64R0 = 1;
double f64R1 = 0;
double f64R2 = 0;
double f64R3 = 0;
double f64R4 = 1;
double f64R5 = 0;
double f64R6 = 0;
double f64R7 = 0;
double f64R8 = 1;

double f64RX = 0;
double f64RY = 0;
double f64RZ = 0;

rotationSetParam.f64R0 = f64R0;
rotationSetParam.f64R1 = f64R1;
rotationSetParam.f64R2 = f64R2;
rotationSetParam.f64R3 = f64R3;
rotationSetParam.f64R4 = f64R4;
rotationSetParam.f64R5 = f64R5;
rotationSetParam.f64R6 = f64R6;
rotationSetParam.f64R7 = f64R7;
rotationSetParam.f64R8 = f64R8;

matRotationSet.SetValue(0, 0, f64R0);
matRotationSet.SetValue(0, 1, f64R1);
matRotationSet.SetValue(0, 2, f64R2);
matRotationSet.SetValue(1, 0, f64R3);
matRotationSet.SetValue(1, 1, f64R4);
matRotationSet.SetValue(1, 2, f64R5);
matRotationSet.SetValue(2, 0, f64R6);
matRotationSet.SetValue(2, 1, f64R7);
matRotationSet.SetValue(2, 2, f64R8);

flaRotationSet.Add(f64RX);
flaRotationSet.Add(f64RY);
flaRotationSet.Add(f64RZ);

// 회전 파라미터 설정
stereoCalibrator3D.SetRotationParameters(rotationSetParam);
stereoCalibrator3D.SetRotationMatrix(matRotationSet);
stereoCalibrator3D.SetRotationVector(flaRotationSet);

// 회전 파라미터 생성
CStereoCalibrator3D.CRotationParameters rotationGetParam = new CStereoCalibrator3D.CRotationParameters();
CMatrix<double> matRotationGet = new CMatrix<double>();
List<double> flaRotationGet = new List<double>();

// 회전 파라미터 확인
stereoCalibrator3D.GetRotationParameters(ref rotationGetParam);
stereoCalibrator3D.GetRotationMatrix(ref matRotationGet);
stereoCalibrator3D.GetRotationVector(ref flaRotationGet);
# 객체 생성
stereoCalibrator3D = CStereoCalibrator3D()

# 회전 파라미터 생성
rotationSetParam = CStereoCalibrator3D.CRotationParameters()
matRotationSet = CMatrix[Double](3, 3)
flaRotationSet = List[Double]()

f64R0 = 1
f64R1 = 0
f64R2 = 0
f64R3 = 0
f64R4 = 1
f64R5 = 0
f64R6 = 0
f64R7 = 0
f64R8 = 1

f64RX = 0
f64RY = 0
f64RZ = 0

rotationSetParam.f64R0 = f64R0
rotationSetParam.f64R1 = f64R1
rotationSetParam.f64R2 = f64R2
rotationSetParam.f64R3 = f64R3
rotationSetParam.f64R4 = f64R4
rotationSetParam.f64R5 = f64R5
rotationSetParam.f64R6 = f64R6
rotationSetParam.f64R7 = f64R7
rotationSetParam.f64R8 = f64R8

matRotationSet.SetValue(0, 0, f64R0)
matRotationSet.SetValue(0, 1, f64R1)
matRotationSet.SetValue(0, 2, f64R2)
matRotationSet.SetValue(1, 0, f64R3)
matRotationSet.SetValue(1, 1, f64R4)
matRotationSet.SetValue(1, 2, f64R5)
matRotationSet.SetValue(2, 0, f64R6)
matRotationSet.SetValue(2, 1, f64R7)
matRotationSet.SetValue(2, 2, f64R8)

flaRotationSet.Add(f64RX)
flaRotationSet.Add(f64RY)
flaRotationSet.Add(f64RZ)

# 회전 파라미터 설정
stereoCalibrator3D.SetRotationParameters(rotationSetParam)
stereoCalibrator3D.SetRotationMatrix(matRotationSet)
stereoCalibrator3D.SetRotationVector(flaRotationSet)

# 회전 파라미터 생성
rotationGetParam = CStereoCalibrator3D.CRotationParameters()
matRotationGet = CMatrix[Double]()
flaRotationGet = List[Double]()

# 회전 파라미터 확인
stereoCalibrator3D.GetRotationParameters(rotationGetParam)
stereoCalibrator3D.GetRotationMatrix(matRotationGet)
stereoCalibrator3D.GetRotationVector(flaRotationGet)

함수 SetRotationParameters을 사용하여 회전 파라미터를 전용 객채로 설정이 가능합니다.
함수 SetRotationMatrix을 사용하여 회전 파라미터를 행렬로 설정이 가능합니다.
함수 SetRotationVector을 사용하여 회전 파라미터를 벡터로 설정이 가능합니다.
함수 GetRotationParameters을 사용하여 회전 파라미터를 전용 객채로 설정을 가져옵니다.
함수 GetRotationMatrix을 사용하여 회전 파라미터를 행렬로 설정을 가져옵니다.
함수 GetRotationVector을 사용하여 회전 파라미터를 벡터로 설정을 가져옵니다.
해당 내부 파라이터는 알고리즘이 수동 캘리브레이션으로 동작 시 사용됩니다.

// 객체 생성
CStereoCalibrator3D stereoCalibrator3D;

// 이동 파라미터 생성
CStereoCalibrator3D::CTranslationParameters translationSetParam;
CFLArray<double> flaTranslationSet;

double f64X = 0;
double f64Y = 0;
double f64Z = 0;

translationSetParam.f64X = f64X;
translationSetParam.f64Y = f64Y;
translationSetParam.f64Z = f64Z;

flaTranslationSet.PushBack(f64X);
flaTranslationSet.PushBack(f64Y);
flaTranslationSet.PushBack(f64Z);

// 이동 파라미터 설정
stereoCalibrator3D.SetTranslationParameters(translationSetParam);
stereoCalibrator3D.SetTranslationVector(flaTranslationSet);

// 이동 파라미터 생성
CStereoCalibrator3D::CTranslationParameters translationGetParam;
CFLArray<double> flaTranslationGet;

// 이동 파라미터 확인
stereoCalibrator3D.GetTranslationParameters(translationGetParam);
stereoCalibrator3D.GetTranslationVector(flaTranslationGet);
// 객체 생성
CStereoCalibrator3D stereoCalibrator3D = new CStereoCalibrator3D();

// 이동 파라미터 생성
CStereoCalibrator3D.CTranslationParameters translationSetParam = new CStereoCalibrator3D.CTranslationParameters();
List<double> flaTranslationSet = new List<double>();

double f64X = 0;
double f64Y = 0;
double f64Z = 0;

translationSetParam.f64X = f64X;
translationSetParam.f64Y = f64Y;
translationSetParam.f64Z = f64Z;

flaTranslationSet.Add(f64X);
flaTranslationSet.Add(f64Y);
flaTranslationSet.Add(f64Z);

// 이동 파라미터 설정
stereoCalibrator3D.SetTranslationParameters(translationSetParam);
stereoCalibrator3D.SetTranslationVector(flaTranslationSet);

// 이동 파라미터 생성
CStereoCalibrator3D.CTranslationParameters translationGetParam = new CStereoCalibrator3D.CTranslationParameters();
List<double> flaTranslationGet = new List<double>();

// 이동 파라미터 확인
stereoCalibrator3D.GetTranslationParameters(ref translationGetParam);
stereoCalibrator3D.GetTranslationVector(ref flaTranslationGet);
# 객체 생성
stereoCalibrator3D = CStereoCalibrator3D()

# 이동 파라미터 생성
translationSetParam = CStereoCalibrator3D.CTranslationParameters()
flaTranslationSet = List[Double]()

f64X = 0
f64Y = 0
f64Z = 0

translationSetParam.f64X = f64X
translationSetParam.f64Y = f64Y
translationSetParam.f64Z = f64Z

flaTranslationSet.Add(f64X)
flaTranslationSet.Add(f64Y)
flaTranslationSet.Add(f64Z)

# 이동 파라미터 설정
stereoCalibrator3D.SetTranslationParameters(translationSetParam)
stereoCalibrator3D.SetTranslationVector(flaTranslationSet)

# 이동 파라미터 생성
translationGetParam = CStereoCalibrator3D.CTranslationParameters()
flaTranslationGet = List[Double]()

# 이동 파라미터 확인
stereoCalibrator3D.GetTranslationParameters(translationGetParam)
stereoCalibrator3D.GetTranslationVector(flaTranslationGet)

함수 SetTranslationParameters을 사용하여 이동 파라미터를 전용 객채로 설정이 가능합니다.
함수 SetTranslationVector을 사용하여 이동 파라미터를 벡터로 설정이 가능합니다.
함수 GetTranslationParameters을 사용하여 이동 파라미터를 전용 객채로 설정을 가져옵니다.
함수 GetTranslationVector을 사용하여 이동 파라미터를 벡터로 설정을 가져옵니다.
해당 내부 파라이터는 알고리즘이 수동 캘리브레이션으로 동작 시 사용됩니다.

Execute 후 파라미터 설정 및 가져오기

// 객체 생성
CStereoCalibrator3D stereoCalibrator3D;

// 내부 파라미터 생성
CStereoCalibrator3D::CIntrinsicParameters intrinsicGetParam;
CStereoCalibrator3D::CIntrinsicParameters intrinsicGetParam2;
CMatrix<double> matIntrinsicGet;
CMatrix<double> matIntrinsicGet2;

// 내부 파라미터 확인
stereoCalibrator3D.GetResultCalibratedIntrinsicParameters(intrinsicGetParam);
stereoCalibrator3D.GetResultCalibratedIntrinsicParameters2(intrinsicGetParam2);
stereoCalibrator3D.GetResultCalibratedIntrinsicMatrix(matIntrinsicGet);
stereoCalibrator3D.GetResultCalibratedIntrinsicMatrix2(matIntrinsicGet2);
// 객체 생성
CStereoCalibrator3D stereoCalibrator3D = new CStereoCalibrator3D();

// 내부 파라미터 생성
CStereoCalibrator3D.CIntrinsicParameters intrinsicGetParam = new CStereoCalibrator3D.CIntrinsicParameters();
CStereoCalibrator3D.CIntrinsicParameters intrinsicGetParam2 = new CStereoCalibrator3D.CIntrinsicParameters();
CMatrix<double> matIntrinsicGet = new CMatrix<double>();
CMatrix<double> matIntrinsicGet2 = new CMatrix<double>();

// 내부 파라미터 확인
stereoCalibrator3D.GetResultCalibratedIntrinsicParameters(ref intrinsicGetParam);
stereoCalibrator3D.GetResultCalibratedIntrinsicParameters2(ref intrinsicGetParam2);
stereoCalibrator3D.GetResultCalibratedIntrinsicMatrix(ref matIntrinsicGet);
stereoCalibrator3D.GetResultCalibratedIntrinsicMatrix2(ref matIntrinsicGet2);
# 객체 생성
stereoCalibrator3D = CStereoCalibrator3D()

# 내부 파라미터 생성
intrinsicGetParam = CStereoCalibrator3D.CIntrinsicParameters()
intrinsicGetParam2 = CStereoCalibrator3D.CIntrinsicParameters()
matIntrinsicGet = CMatrix[Double]()
matIntrinsicGet2 = CMatrix[Double]()

# 내부 파라미터 확인
stereoCalibrator3D.GetResultCalibratedIntrinsicParameters(intrinsicGetParam)
stereoCalibrator3D.GetResultCalibratedIntrinsicParameters2(intrinsicGetParam2)
stereoCalibrator3D.GetResultCalibratedIntrinsicMatrix(matIntrinsicGet)
stereoCalibrator3D.GetResultCalibratedIntrinsicMatrix2(matIntrinsicGet2)

함수 GetResultCalibratedIntrinsicParameters, GetResultCalibratedIntrinsicParameters2을 사용하여 내부 파라미터의 예측 값을 고유 객체로 반환합니다. 함수 GetResultCalibratedIntrinsicMatrix, GetResultCalibratedIntrinsicMatrix2을 사용하여 내부 파라미터의 예측 값을 행렬로 반환합니다. 수동 켈리브래이션 사용 시 SetIntrinsic~으로 설정한 내부 파라미터와 같은 값을 반환합니다.

// 객체 생성
CStereoCalibrator3D stereoCalibrator3D;

// 외곡 파라미터 생성
CStereoCalibrator3D::CDistortionCoefficients distortionGetParam;
CStereoCalibrator3D::CDistortionCoefficients distortionGetParam2;
CFLArray<double> flaDistortionGet;
CFLArray<double> flaDistortionGet2;

// 외곡 파라미터 확인
stereoCalibrator3D.GetResultCalibratedDistortionCoefficients(distortionGetParam);
stereoCalibrator3D.GetResultCalibratedDistortionCoefficients2(distortionGetParam2);
stereoCalibrator3D.GetResultCalibratedDistortionCoefficients(flaDistortionGet);
stereoCalibrator3D.GetResultCalibratedDistortionCoefficients2(flaDistortionGet2);
// 객체 생성
CStereoCalibrator3D stereoCalibrator3D = new CStereoCalibrator3D();

// 외곡 파라미터 생성
CStereoCalibrator3D.CDistortionCoefficients distortionGetParam = new CStereoCalibrator3D.CDistortionCoefficients();
CStereoCalibrator3D.CDistortionCoefficients distortionGetParam2 = new CStereoCalibrator3D.CDistortionCoefficients();
List<double> flaDistortionGet = new List<double>();
List<double> flaDistortionGet2 = new List<double>();

// 외곡 파라미터 확인
stereoCalibrator3D.GetResultCalibratedDistortionCoefficients(ref distortionGetParam);
stereoCalibrator3D.GetResultCalibratedDistortionCoefficients2(ref distortionGetParam2);
stereoCalibrator3D.GetResultCalibratedDistortionCoefficients(ref flaDistortionGet);
stereoCalibrator3D.GetResultCalibratedDistortionCoefficients2(ref flaDistortionGet2);
# 객체 생성
stereoCalibrator3D = CStereoCalibrator3D()

# 외곡 파라미터 생성
distortionGetParam = CStereoCalibrator3D.CDistortionCoefficients()
distortionGetParam2 = CStereoCalibrator3D.CDistortionCoefficients()
flaDistortionGet = List[Double]()
flaDistortionGet2 = List[Double]()

# 외곡 파라미터 확인
stereoCalibrator3D.GetResultCalibratedDistortionCoefficients(distortionGetParam)
stereoCalibrator3D.GetResultCalibratedDistortionCoefficients2(distortionGetParam2)
stereoCalibrator3D.GetResultCalibratedDistortionCoefficients(flaDistortionGet)
stereoCalibrator3D.GetResultCalibratedDistortionCoefficients2(flaDistortionGet2)

함수 GetResultCalibratedDistortionCoefficients, GetResultCalibratedDistortionCoefficients2을 사용하여 외곡 파라미터의 예측 값을 고유 객체와 배열로 반환합니다. 수동 켈리브래이션 사용 시 SetDistortion~으로 설정한 외곡 파라미터와 같은 값을 반환합니다.

// 객체 생성
CStereoCalibrator3D stereoCalibrator3D;

// 회전 파라미터 생성
CStereoCalibrator3D::CRotationParameters rotationGetParam;
CMatrix<double> matRotationGet;
CFLArray<double> flaRotationGet;

// 회전 파라미터 확인
stereoCalibrator3D.GetResultCalibratedRotationParameters(rotationGetParam);
stereoCalibrator3D.GetResultCalibratedRotationMatrix(matRotationGet);
stereoCalibrator3D.GetResultCalibratedRotationVector(flaRotationGet);
// 객체 생성
CStereoCalibrator3D stereoCalibrator3D = new CStereoCalibrator3D();

// 회전 파라미터 생성
CStereoCalibrator3D.CRotationParameters rotationGetParam = new CStereoCalibrator3D.CRotationParameters();
CMatrix<double> matRotationGet = new CMatrix<double>();
List<double> flaRotationGet = new List<double>();

// 회전 파라미터 확인
stereoCalibrator3D.GetResultCalibratedRotationParameters(ref rotationGetParam);
stereoCalibrator3D.GetResultCalibratedRotationMatrix(ref matRotationGet);
stereoCalibrator3D.GetResultCalibratedRotationVector(ref flaRotationGet);
# 객체 생성
stereoCalibrator3D = CStereoCalibrator3D()

# 회전 파라미터 생성
rotationGetParam = CStereoCalibrator3D.CRotationParameters()
matRotationGet = CMatrix[Double]()
flaRotationGet = List[Double]()

# 회전 파라미터 확인
stereoCalibrator3D.GetResultCalibratedRotationParameters(rotationGetParam)
stereoCalibrator3D.GetResultCalibratedRotationMatrix(matRotationGet)
stereoCalibrator3D.GetResultCalibratedRotationVector(flaRotationGet)

함수 GetResultCalibratedRotationParameters을 사용하여 회전 파라미터의 예측 값을 고유 객체로 반환합니다. 함수 GetResultCalibratedRotationMatrix을 사용하여 회전 파라미터의 예측 값을 행렬로 반환합니다. 함수 GetResultCalibratedRotationVector을 사용하여 회전 파라미터의 예측 값을 벡터로 반환합니다. 수동 켈리브래이션 사용 시 SetRotation~으로 설정한 회전 파라미터와 같은 값을 반환합니다.

// 객체 생성
CStereoCalibrator3D stereoCalibrator3D;

// 이동 파라미터 생성
CStereoCalibrator3D::CTranslationParameters translationGetParam;
CFLArray<double> flaTranslationGet;

// 이동 파라미터 확인
stereoCalibrator3D.GetResultCalibratedTranslationParameters(translationGetParam);
stereoCalibrator3D.GetResultCalibratedTranslationVector(flaTranslationGet);
// 객체 생성
CStereoCalibrator3D stereoCalibrator3D = new CStereoCalibrator3D();

// 이동 파라미터 생성
CStereoCalibrator3D.CTranslationParameters translationGetParam = new CStereoCalibrator3D.CTranslationParameters();
List<double> flaTranslationGet = new List<double>();

// 이동 파라미터 확인
stereoCalibrator3D.GetResultCalibratedTranslationParameters(ref translationGetParam);
stereoCalibrator3D.GetResultCalibratedTranslationVector(ref flaTranslationGet);
# 객체 생성
stereoCalibrator3D = CStereoCalibrator3D()

# 이동 파라미터 생성
translationGetParam = CStereoCalibrator3D.CTranslationParameters()
flaTranslationGet = List[Double]()

# 이동 파라미터 확인
stereoCalibrator3D.GetResultCalibratedTranslationParameters(translationGetParam)
stereoCalibrator3D.GetResultCalibratedTranslationVector(flaTranslationGet)

함수 GetResultCalibratedTranslationParameters을 사용하여 이동 파라미터의 예측 값을 고유 객체로 반환합니다. 함수 GetResultCalibratedTranslationVector을 사용하여 이동 파라미터의 예측 값을 벡터로 반환합니다. 수동 켈리브래이션 사용 시 SetTranslation~으로 설정한 이동 파라미터와 같은 값을 반환합니다.

// 객체 생성
CStereoCalibrator3D stereoCalibrator3D;

// 내부 파라미터 생성
CStereoCalibrator3D::CIntrinsicParameters intrinsicGetParam;
CStereoCalibrator3D::CIntrinsicParameters intrinsicGetParam2;
CMatrix<double> matIntrinsicGet;
CMatrix<double> matIntrinsicGet2;

// 내부 파라미터 확인
stereoCalibrator3D.GetResultRectifiedIntrinsicParameters(intrinsicGetParam);
stereoCalibrator3D.GetResultRectifiedIntrinsicParameters2(intrinsicGetParam2);
stereoCalibrator3D.GetResultRectifiedIntrinsicMatrix(matIntrinsicGet);
stereoCalibrator3D.GetResultRectifiedIntrinsicMatrix2(matIntrinsicGet2);
// 객체 생성
CStereoCalibrator3D stereoCalibrator3D = new CStereoCalibrator3D();

// 내부 파라미터 생성
CStereoCalibrator3D.CIntrinsicParameters intrinsicGetParam = new CStereoCalibrator3D.CIntrinsicParameters();
CStereoCalibrator3D.CIntrinsicParameters intrinsicGetParam2 = new CStereoCalibrator3D.CIntrinsicParameters();
CMatrix<double> matIntrinsicGet = new CMatrix<double>();
CMatrix<double> matIntrinsicGet2 = new CMatrix<double>();

// 내부 파라미터 확인
stereoCalibrator3D.GetResultRectifiedIntrinsicParameters(ref intrinsicGetParam);
stereoCalibrator3D.GetResultRectifiedIntrinsicParameters2(ref intrinsicGetParam2);
stereoCalibrator3D.GetResultRectifiedIntrinsicMatrix(ref matIntrinsicGet);
stereoCalibrator3D.GetResultRectifiedIntrinsicMatrix2(ref matIntrinsicGet2);
# 객체 생성
stereoCalibrator3D = CStereoCalibrator3D()

# 내부 파라미터 생성
intrinsicGetParam = CStereoCalibrator3D.CIntrinsicParameters()
intrinsicGetParam2 = CStereoCalibrator3D.CIntrinsicParameters()
matIntrinsicGet = CMatrix[Double]()
matIntrinsicGet2 = CMatrix[Double]()

# 내부 파라미터 확인
stereoCalibrator3D.GetResultRectifiedIntrinsicParameters(intrinsicGetParam)
stereoCalibrator3D.GetResultRectifiedIntrinsicParameters2(intrinsicGetParam2)
stereoCalibrator3D.GetResultRectifiedIntrinsicMatrix(matIntrinsicGet)
stereoCalibrator3D.GetResultRectifiedIntrinsicMatrix2(matIntrinsicGet2)

함수 GetResultRectifiedIntrinsicParameters, GetResultRectifiedIntrinsicParameters2을 사용하여 결과 이미지의 내부 파라미터를 고유 객체로 반환합니다. 함수 GetResultRectifiedIntrinsicMatrix, GetResultRectifiedIntrinsicMatrix2을 사용하여 결과 이미지의 내부 파라미터를 행렬로 반환합니다.

// 객체 생성
CStereoCalibrator3D stereoCalibrator3D;

// 회전 파라미터 생성
CStereoCalibrator3D::CRotationParameters rotationGetParam;
CStereoCalibrator3D::CRotationParameters rotationGetParam2;
CMatrix<double> matRotationGet;
CMatrix<double> matRotationGet2;
CFLArray<double> flaRotationGet;
CFLArray<double> flaRotationGet2;

// 회전 파라미터 확인
stereoCalibrator3D.GetResultRectifiedRotationParameters(rotationGetParam);
stereoCalibrator3D.GetResultRectifiedRotationParameters2(rotationGetParam2);
stereoCalibrator3D.GetResultRectifiedRotationMatrix(matRotationGet);
stereoCalibrator3D.GetResultRectifiedRotationMatrix2(matRotationGet2);
stereoCalibrator3D.GetResultRectifiedRotationVector(flaRotationGet);
stereoCalibrator3D.GetResultRectifiedRotationVector2(flaRotationGet2);
// 객체 생성
CStereoCalibrator3D stereoCalibrator3D = new CStereoCalibrator3D();

// 회전 파라미터 생성
CStereoCalibrator3D.CRotationParameters rotationGetParam = new CStereoCalibrator3D.CRotationParameters();
CStereoCalibrator3D.CRotationParameters rotationGetParam2 = new CStereoCalibrator3D.CRotationParameters();
CMatrix<double> matRotationGet = new CMatrix<double>();
CMatrix<double> matRotationGet2 = new CMatrix<double>();
List<double> flaRotationGet = new List<double>();
List<double> flaRotationGet2 = new List<double>();

// 회전 파라미터 확인
stereoCalibrator3D.GetResultRectifiedRotationParameters(ref rotationGetParam);
stereoCalibrator3D.GetResultRectifiedRotationParameters2(ref rotationGetParam2);
stereoCalibrator3D.GetResultRectifiedRotationMatrix(ref matRotationGet);
stereoCalibrator3D.GetResultRectifiedRotationMatrix2(ref matRotationGet2);
stereoCalibrator3D.GetResultRectifiedRotationVector(ref flaRotationGet);
stereoCalibrator3D.GetResultRectifiedRotationVector2(ref flaRotationGet2);
# 객체 생성
stereoCalibrator3D = CStereoCalibrator3D()

# 회전 파라미터 생성
rotationGetParam = CStereoCalibrator3D.CRotationParameters()
rotationGetParam2 = CStereoCalibrator3D.CRotationParameters()
matRotationGet = CMatrix[Double]()
matRotationGet2 = CMatrix[Double]()
flaRotationGet = List[Double]()
flaRotationGet2 = List[Double]()

# 회전 파라미터 확인
stereoCalibrator3D.GetResultRectifiedRotationParameters(rotationGetParam)
stereoCalibrator3D.GetResultRectifiedRotationParameters2(rotationGetParam2)
stereoCalibrator3D.GetResultRectifiedRotationMatrix(matRotationGet)
stereoCalibrator3D.GetResultRectifiedRotationMatrix2(matRotationGet2)
stereoCalibrator3D.GetResultRectifiedRotationVector(flaRotationGet)
stereoCalibrator3D.GetResultRectifiedRotationVector2(flaRotationGet2)

함수 GetResultRectifiedRotationParameters, GetResultRectifiedRotationParameters2을 사용하여 결과 이미지의 회전 파라미터를 고유 객체로 반환합니다. 함수 GetResultRectifiedRotationMatrix, GetResultRectifiedRotationMatrix2을 사용하여 결과 이미지의 회전 파라미터를 행렬로 반환합니다. 함수 GetResultRectifiedRotationVector, GetResultRectifiedRotationVector2을 사용하여 결과 이미지의 회전 파라미터를 벡터로 반환합니다.

// 객체 생성
CStereoCalibrator3D stereoCalibrator3D;

// 이동 파라미터 생성
CStereoCalibrator3D::CTranslationParameters translationGetParam;
CStereoCalibrator3D::CTranslationParameters translationGetParam2;
CFLArray<double> flaTranslationGet;
CFLArray<double> flaTranslationGet2;

// 이동 파라미터 확인
stereoCalibrator3D.GetResultRectifiedTranslationParameters(translationGetParam);
stereoCalibrator3D.GetResultRectifiedTranslationParameters2(translationGetParam2);
stereoCalibrator3D.GetResultRectifiedTranslationVector(flaTranslationGet);
stereoCalibrator3D.GetResultRectifiedTranslationVector2(flaTranslationGet2);
// 객체 생성
CStereoCalibrator3D stereoCalibrator3D = new CStereoCalibrator3D();

// 이동 파라미터 생성
CStereoCalibrator3D.CTranslationParameters translationGetParam = new CStereoCalibrator3D.CTranslationParameters();
CStereoCalibrator3D.CTranslationParameters translationGetParam2 = new CStereoCalibrator3D.CTranslationParameters();
List<double> flaTranslationGet = new List<double>();
List<double> flaTranslationGet2 = new List<double>();

// 이동 파라미터 확인
stereoCalibrator3D.GetResultRectifiedTranslationParameters(ref translationGetParam);
stereoCalibrator3D.GetResultRectifiedTranslationParameters2(ref translationGetParam2);
stereoCalibrator3D.GetResultRectifiedTranslationVector(ref flaTranslationGet);
stereoCalibrator3D.GetResultRectifiedTranslationVector2(ref flaTranslationGet2);
# 객체 생성
stereoCalibrator3D = CStereoCalibrator3D()

# 이동 파라미터 생성
translationGetParam = CStereoCalibrator3D.CTranslationParameters()
translationGetParam2 = CStereoCalibrator3D.CTranslationParameters()
flaTranslationGet = List[Double]()
flaTranslationGet2 = List[Double]()

# 이동 파라미터 확인
stereoCalibrator3D.GetResultRectifiedTranslationParameters(translationGetParam)
stereoCalibrator3D.GetResultRectifiedTranslationParameters2(translationGetParam2)
stereoCalibrator3D.GetResultRectifiedTranslationVector(flaTranslationGet)
stereoCalibrator3D.GetResultRectifiedTranslationVector2(flaTranslationGet2)

함수 GetResultRectifiedTranslationParameters, GetResultRectifiedTranslationParameters2을 사용하여 결과 이미지의 이동 파라미터를 고유 객체로 반환합니다. 함수 GetResultRectifiedTranslationVector, GetResultRectifiedTranslationVector2을 사용하여 결과 이미지의 이동 파라미터를 벡터로 반환합니다.

// 객체 생성
CStereoCalibrator3D stereoCalibrator3D;

// 보정 전 좌표
CFLPoint<double> flpInput;

// 보정 후 좌표
CFLPoint<double> flpOutput;

  // 카메라1을 기준으로 보정되지 않은 좌표 값 변환
stereoCalibrator3D.ConvertCoordinate(flpInput, flpOutput);

// 카메라2을 기준으로 보정되지 않은 좌표 값 변환
stereoCalibrator3D.ConvertCoordinate2(flpInput, flpOutput);
// 객체 생성
CStereoCalibrator3D stereoCalibrator3D = new CStereoCalibrator3D();

// 보정 전 좌표
CFLPoint<double> flpInput = new CFLPoint<double>();

// 보정 후 좌표
CFLPoint<double> flpOutput = new CFLPoint<double>();

// 카메라1을 기준으로 보정되지 않은 좌표 값 변환
stereoCalibrator3D.ConvertCoordinate(flpInput, ref flpOutput);

// 카메라2을 기준으로 보정되지 않은 좌표 값 변환
stereoCalibrator3D.ConvertCoordinate2(flpInput, ref flpOutput);
# 객체 생성
stereoCalibrator3D = CStereoCalibrator3D()

# 보정 전 좌표
flpInput = CFLPoint[Double]()

# 보정 후 좌표
flpOutput = CFLPoint[Double]()

# 카메라1을 기준으로 보정되지 않은 좌표 값 변환
stereoCalibrator3D.ConvertCoordinate(flpInput, flpOutput)

# 카메라2을 기준으로 보정되지 않은 좌표 값 변환
stereoCalibrator3D.ConvertCoordinate2(flpInput, flpOutput)

함수 ConvertCoordinate, ConvertCoordinate2로 보정된 좌푯값이 보정되지 않은 좌푯값으로 반환합니다.

// 객체 생성
CStereoCalibrator3D stereoCalibrator3D;

// Calibrate의 Reprojection Error 출력
double f64ResultReprojectErr = stereoCalibrator3D.GetResultReProjectionError();
// 객체 생성
CStereoCalibrator3D stereoCalibrator3D = new CStereoCalibrator3D();

// Calibrate의 Reprojection Error 출력
double f64ResultReprojectErr = stereoCalibrator3D.GetResultReProjectionError();
# 객체 생성
stereoCalibrator3D = CStereoCalibrator3D()

# Calibrate의 Reprojection Error 출력
f64ResultReprojectErr = stereoCalibrator3D.GetResultReProjectionError()

함수 GetResultReProjectionError로 재투영 오류 값을 확인할 수 있습니다.

// 객체 생성
CStereoCalibrator3D stereoCalibrator3D;

// Calibrate의 여부 확인
bool bCalib = stereoCalibrator3D.IsCalibrated();
// 객체 생성
CStereoCalibrator3D stereoCalibrator3D = new CStereoCalibrator3D();

// Calibrate의 여부 확인
bool bCalib = stereoCalibrator3D.IsCalibrated();
# 객체 생성
stereoCalibrator3D = CStereoCalibrator3D()

# Calibrate의 여부 확인
bCalib = stereoCalibrator3D.IsCalibrated()

함수 IsCalibrated으로 Calibrate 실행의 여부를 확인할 수 있습니다.
해당 변수가 False인 경우 Execute 실행 시 오류를 반환합니다.

// 객체 생성
CStereoCalibrator3D stereoCalibrator3D;

// Interpolation Method 변수
EInterpolationMethod eInterMethod = EInterpolationMethod_Bilinear;

// 쌍선형(Bilinear) 보간법
eInterMethod = EInterpolationMethod_Bilinear;
// 최근접(Nearest neighbor) 보간법
eInterMethod = EInterpolationMethod_NearestNeighbor;
// 쌍입방(Bicubic) 보간법
eInterMethod = EInterpolationMethod_Bicubic;
// Lanczos 보간법
eInterMethod = EInterpolationMethod_Lanczos;

// 보간법을 설정합니다.
stereoCalibrator3D.SetInterpolationMethod(eInterMethod);

// 설정된 보간법을 가져옵니다.
EInterpolationMethod eGetInterMethod = stereoCalibrator3D.GetInterpolationMethod();
// 객체 생성
CStereoCalibrator3D stereoCalibrator3D = new CStereoCalibrator3D();

// Interpolation Method 변수
EInterpolationMethod eInterMethod = EInterpolationMethod.Bilinear;

// 쌍선형(Bilinear) 보간법
eInterMethod = EInterpolationMethod.Bilinear;
// 최근접(Nearest neighbor) 보간법
eInterMethod = EInterpolationMethod.NearestNeighbor;
// 쌍입방(Bicubic) 보간법
eInterMethod = EInterpolationMethod.Bicubic;
// Lanczos 보간법
eInterMethod = EInterpolationMethod.Lanczos;

// 보간법을 설정합니다.
stereoCalibrator3D.SetInterpolationMethod(eInterMethod);

// 설정된 보간법을 가져옵니다.
EInterpolationMethod eGetInterMethod = stereoCalibrator3D.GetInterpolationMethod();
# 객체 생성
stereoCalibrator3D = CStereoCalibrator3D()

# Interpolation Method 변수
eInterMethod = EInterpolationMethod.Bilinear

# 쌍선형(Bilinear) 보간법
eInterMethod = EInterpolationMethod.Bilinear
# 최근접(Nearest neighbor) 보간법
eInterMethod = EInterpolationMethod.NearestNeighbor
# 쌍입방(Bicubic) 보간법
eInterMethod = EInterpolationMethod.Bicubic
# Lanczos 보간법
eInterMethod = EInterpolationMethod.Lanczos

# 보간법을 설정합니다.
stereoCalibrator3D.SetInterpolationMethod(eInterMethod)

# 설정된 보간법을 가져옵니다.
eGetInterMethod = stereoCalibrator3D.GetInterpolationMethod()

함수 SetInterpolationMethod으로 결과 이미지의 보간 방식 설정이 가능합니다.
함수 GetInterpolationMethod으로 설정된 결과 이미지의 보간 방식을 가져올 수 있습니다.

// 객체 생성
CStereoCalibrator3D stereoCalibrator3D;

// 카메라 1 결과 Grid Result을 가져옵니다.
CStereoCalibrator3D::SGridResult sGetGridPoint;

int64_t i64ImagePage = 0;

stereoCalibrator3D.GetResultGridPoints(&sGetGridPoint, i64ImagePage);

// 카메라 2 결과 Grid Result을 가져옵니다.
CStereoCalibrator3D::SGridResult sGetGridPoint2;

int64_t i64ImagePage2 = 0;

stereoCalibrator3D.GetResultGridPoints2(&sGetGridPoint2, i64ImagePage2);
// 객체 생성
CStereoCalibrator3D stereoCalibrator3D = new CStereoCalibrator3D();

// 카메라 1 결과 Grid Result을 가져옵니다.
CStereoCalibrator3D.SGridResult sGetGridPoint = new CStereoCalibrator3D.SGridResult();

long i64ImagePage = 0;

stereoCalibrator3D.GetResultGridPoints(ref sGetGridPoint, i64ImagePage);

// 카메라 2 결과 Grid Result을 가져옵니다.
CStereoCalibrator3D.SGridResult sGetGridPoint2 = new CStereoCalibrator3D.SGridResult();

long i64ImagePage2 = 0;

stereoCalibrator3D.GetResultGridPoints2(ref sGetGridPoint2, i64ImagePage2);
# 객체 생성
stereoCalibrator3D = CStereoCalibrator3D()

# 카메라 1 결과 Grid Result을 가져옵니다.
sGetGridPoint = CStereoCalibrator3D.SGridResult()

i64ImagePage = 0

stereoCalibrator3D.GetResultGridPoints(sGetGridPoint, i64ImagePage)

# 카메라 2 결과 Grid Result을 가져옵니다.
sGetGridPoint2 = CStereoCalibrator3D.SGridResult()

i64ImagePage2 = 0

stereoCalibrator3D.GetResultGridPoints2(sGetGridPoint2, i64ImagePage2)

함수 GetResultGridPoints, GetResultGridPoints2로 설정된 두 카메라의 Grid Result를 가져올 수 있습니다.

// 객체 생성
CStereoCalibrator3D stereoCalibrator3D;

// 파일 위치
CFLString<wchar_t> strPath;

// 해당 위치에 Parameter 파일 저장
stereoCalibrator3D.Save(strPath);
// 해당 위치에 있는 Parameter 파일 불러오기
stereoCalibrator3D.Load(strPath);

// Major, Minor 버젼
int32_t i32MajorVer = 0;
int32_t i32MinorVer = 0;

// Parameter 저장 파일 버전 확인
stereoCalibrator3D.GetLearnedFileVersion(strPath, i32MajorVer, i32MinorVer);
// 객체 생성
CStereoCalibrator3D stereoCalibrator3D = new CStereoCalibrator3D();

// 파일 위치
string strPath = "";

// 해당 위치에 Parameter 파일 저장
stereoCalibrator3D.Save(strPath);
// 해당 위치에 있는 Parameter 파일 불러오기
stereoCalibrator3D.Load(strPath);

// Major, Minor 버젼
int i32MajorVer = 0;
int i32MinorVer = 0;

// Parameter 저장 파일 버전 확인
CStereoCalibrator3D.GetLearnedFileVersion(strPath, ref i32MajorVer, ref i32MinorVer);
# 객체 생성
stereoCalibrator3D = CStereoCalibrator3D()

# 파일 위치
strPath = ""

# 해당 위치에 Parameter 파일 저장
stereoCalibrator3D.Save(strPath)
# 해당 위치에 있는 Parameter 파일 불러오기
stereoCalibrator3D.Load(strPath)

# Major, Minor 버젼
i32MajorVer = 0
i32MinorVer = 0

# Parameter 저장 파일 버전 확인
CStereoCalibrator3D.GetLearnedFileVersion(strPath, i32MajorVer, i32MinorVer)

함수 Save로 이미 설정된 두 카메라의 Parameter를 입력한 위치에 저장할 수 있습니다.
함수 Load로 두 카메라의 Parameter를 입력한 위치에 있는 Parameter 파일로 불러올 수 있습니다.
함수 GetLearnedFileVersion으로 해당 위치에 있는 저장한 Parameter 파일의 버전을 가져옵니다.