주요 콘텐츠

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

cameraParameters

카메라 파라미터를 저장하기 위한 객체

설명

cameraParameters 객체는 카메라의 내부 파라미터, 외부 파라미터, 렌즈 왜곡 파라미터를 저장합니다.

생성

여기에 설명된 cameraParameters 함수를 사용하여 cameraParameters 객체를 만들 수 있습니다. 또한 입력 영상 점의 M×2×numImages 배열과 함께 estimateCameraParameters를 사용하여 cameraParameters 객체를 만들 수도 있습니다. M은 각 패턴에 포함된 키포인트 좌표의 개수입니다.

설명

cameraParams = cameraParameters는 카메라의 내부 파라미터, 외부 파라미터, 렌즈 왜곡 파라미터를 포함하는 cameraParameters 객체를 만듭니다.

cameraParams = cameraParameters(Name,Value)는 하나 이상의 이름-값 인수를 사용하여 cameraParameters 객체의 속성을 설정합니다. 지정되지 않은 속성은 디폴트 값을 사용합니다.

예를 들어, cameraParams = cameraParameters("RadialDistortion",[0 10])은 방사형 렌즈 왜곡 속성 RadialDistortion을 벡터 [0 10]으로 설정합니다.

예제

cameraParams = cameraParameters(paramStruct)paramStruct에 저장된 파라미터를 사용하여 기존 cameraParameters 객체와 동일한 cameraParameters 객체를 생성합니다.

입력 인수

모두 확장

카메라 파라미터로, 카메라 파라미터 구조체로 지정됩니다. 기존 cameraParameters 객체에서 paramStruct를 가져오려면 toStruct 함수를 사용하십시오.

속성

모두 확장

내부 카메라 파라미터:

카메라 내부 행렬로, 3×3 행렬로 지정됩니다. 행렬의 형식은 다음과 갖습니다.

[fxscx0fycy001]

좌표 [cx cy]는 광학적 중심(주점)(단위: 픽셀)을 나타냅니다. x축과 y축이 정확히 수직일 때 왜도 파라미터 s0입니다.

fx = F*sx

fy = F*sy

  • F는 세계 단위의 초점 거리로, 일반적으로 밀리미터로 표현됩니다.

  • sxsy는 각각 x 방향과 y 방향의 세계 단위당 픽셀 개수입니다.

  • fxfy는 픽셀로 표현됩니다.

읽기 전용 속성입니다.

카메라 내부 파라미터 객체로, cameraIntrinsics 객체로 지정됩니다. 이 객체는 렌즈 왜곡을 포함하여 카메라 내부 보정 파라미터에 대한 정보를 포함합니다.

종속 관계

Intrinsics 속성이 비어 있지 않게 하려면 (ImageSize 속성을 사용하여) 영상 크기를 제공해야 합니다. 카메라 내부 파라미터는 영상 크기에 따라 달라집니다.

영상 크기로, 요소를 2개 가진 벡터 [mrows ncols]로 지정됩니다.

카메라 렌즈 왜곡:

방사형 렌즈 왜곡 계수로, 요소를 2개, 3개 또는 6개 가진 벡터로 지정됩니다.

  • 요소를 2개 가진 벡터 — [k1 k2].

  • 요소를 3개 가진 벡터 — [k1 k2 k3].

  • 요소를 6개 가진 벡터 — [k1 k2 k3 k4 k5 k6].

카메라 파라미터 객체는 한 점의 방사형 왜곡 위치를 계산하며, 이는 (xdistorted, ydistorted)로 표기합니다.

xdistorted=x(1+k1*r2+k2*r4+k3*r61+k4*r2+k5*r4+k6*r6)

ydistorted=y(1+k1*r2+k2*r4+k3*r61+k4*r2+k5*r4+k6*r6)

x, y는 광학적 중심을 원점으로 한 세계 단위의 정규화된 영상 좌표에 있는 왜곡되지 않은 영상 점입니다.
r2 = x2 + y2
k1, k2, …, k6은 렌즈의 방사형 왜곡 계수입니다. 일반적으로 두 개의 계수가 충분하며 k3, …, k6은 광각 렌즈에만 필요합니다.

접선 왜곡 계수로, 요소를 2개 가진 벡터로 지정됩니다. 접선 왜곡은 렌즈와 영상 평면이 평행이 아닌 경우에 발생합니다. 카메라 파라미터 객체는 한 점의 접선 왜곡 위치를 계산합니다. 왜곡된 점은 (xdistorted, ydistorted)로 표기할 수 있습니다. 왜곡되지 않은 픽셀 위치는 광학적 중심을 원점으로 한 정규화된 영상 좌표에 나타납니다. 좌표는 세계 단위로 표현됩니다.

접선 왜곡은 렌즈와 영상 평면이 평행이 아닌 경우에 발생합니다. 접선 왜곡 계수는 이러한 유형의 왜곡을 모델링합니다.

Comparison of zero tangential distortion and tangential distortion

왜곡된 점은 (xdistorted, ydistorted)로 표기합니다.

xdistorted = x + [2 * p1 * x * y + p2 * (r2 + 2 * x2)]

ydistorted = y + [p1 * (r2 + 2 *y2) + 2 * p2 * x * y]

  • x, y — 왜곡되지 않은 픽셀 위치입니다. xy는 정규화된 영상 좌표에 있습니다. 정규화된 영상 좌표는 픽셀 좌표를 광학적 중심으로 평행 이동하고 초점 거리(단위: 픽셀)로 나누는 방법으로 계산됩니다. 따라서 xy에는 차원이 없습니다.

  • p1p2 — 렌즈의 접선 왜곡 계수입니다.

  • r2 = x2 + y2

외부 카메라 파라미터:

읽기 전용 속성입니다.

보정 패턴 외부 파라미터로, rigidtform3d 객체로 구성된 요소를 P개 가진 벡터로 지정됩니다. 각 객체는 3차원 회전 행렬과 카메라 평행 이동 벡터에 대한 정보를 저장합니다.

  • rigidtform3d 객체의 R 속성은 대응하는 보정 패턴을 기준으로 카메라 영상 평면의 3차원 회전을 나타냅니다.

  • rigidtform3d 객체의 Translation 속성은 대응하는 보정 패턴을 기준으로 카메라의 평행 이동 t(세계 단위로 표현됨)를 나타냅니다.

이 수식은 체커보드 프레임의 세계 좌표 [X Y Z]와 그에 대응하는 영상의 점 [x y]를 연결시키는 변환을 제공합니다.

w[xy1]=K[Rt][XYZ1]

  • w: 임의 스케일링 인자

  • K: 카메라 내부 행렬

  • R: 카메라의 3차원 회전을 나타내는 행렬

  • t: 세계 좌표계를 기준으로 한 카메라의 평행 이동

강체 기하 변환은 왜곡을 고려하지 않습니다. undistortImage 함수를 사용하여 왜곡을 제거하십시오.

읽기 전용 속성입니다.

3차원 회전 벡터로, P개의 회전 벡터를 포함하는 P×3 행렬로 지정됩니다. 각 벡터는 대응하는 보정 패턴을 기준으로 카메라 영상 평면의 3차원 회전을 나타냅니다. 벡터는 카메라가 회전하는 3차원 축을 지정하며, 크기는 회전 각도(단위: 라디안)입니다. PatternExtrinsics 속성은 그에 대응하는 3차원 회전 행렬을 사용하여 기하 변환 객체를 지정합니다.

추정된 카메라 파라미터 정확도:

읽기 전용 속성입니다.

재투영된 점과 검출된 점 사이의 평균 유클리드 거리로, 숫자형 값(단위: 픽셀)으로 지정됩니다.

추정된 카메라 파라미터 정확도로, [x y] 좌표로 구성된 M×2×P 배열로 지정됩니다. [x y] 좌표는 재투영된 패턴 키포인트와 검출된 패턴 키포인트 간의 xy의 평행 이동을 나타냅니다. 이 속성의 값은 추정된 카메라 파라미터의 정확도를 나타냅니다. P는 카메라 파라미터를 추정하는 패턴 영상의 개수입니다. M은 각 영상에 포함된 키포인트 개수입니다.

읽기 전용 속성입니다.

보정 영상에 재투영된 세계 좌표 점으로, [x y] 좌표로 구성된 M×2×P 배열로 지정됩니다. P는 패턴 영상의 개수이고 M은 각 영상에 포함된 키포인트 개수입니다. 패턴의 검출된 키포인트에서 누락된 점은 [NaN,NaN]으로 표기합니다.

보정 패턴에서 검출된 키포인트로, 논리형 M×P 배열로 지정됩니다. M은 전체 보정 패턴에 포함된 키포인트 개수이고 P는 보정 영상 개수를 지정합니다.

카메라 파라미터 추정 설정:

카메라 외부 파라미터를 추정하는 보정 패턴의 개수로, 정수로 지정됩니다. 보정 패턴의 개수는 평행 이동 벡터 및 회전 벡터의 개수와 같습니다.

보정 패턴의 키포인트에 대한 세계 좌표로, M×2 배열로 지정됩니다. M은 패턴에 포함된 키포인트 개수를 나타냅니다.

세계 좌표 점 단위로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. 값은 측정 단위를 나타냅니다.

왜도 추정 플래그로, 논리형 스칼라로 지정됩니다. 논리형 값을 true로 설정하면 객체는 영상 좌표축 왜도를 추정합니다. 논리형 값을 false로 설정하면 영상 좌표축이 정확히 수직이 됩니다.

방사형 왜곡 계수의 개수로, 숫자 2, 3 또는 6으로 지정됩니다.

접선 왜곡 추정 플래그로, 논리형 스칼라 true 또는 false로 지정됩니다. 논리형 값을 true로 설정하면 객체는 접선 왜곡을 추정합니다. 논리형 값을 false로 설정하면 접선 왜곡이 무시됩니다.

예제

모두 축소

카메라 보정 함수를 사용하여 영상에서 왜곡을 제거할 수 있습니다. 이 예제에서는 cameraParameters 객체를 직접 만들지만, 실제로는 estimateCameraParameters 또는 카메라 보정기 앱을 사용하여 객체를 파생할 수 있습니다.

수동으로 cameraParameters 객체를 만듭니다.

k = [715.2699 0 565.6995; 0 711.5281 355.3466; 0 0 1];
radialDistortion = [-0.3361 0.0921]; 
cameraParams = cameraParameters("K",k,"RadialDistortion",radialDistortion)
cameraParams = 
  cameraParameters with properties:

   Camera Intrinsics
                         Intrinsics: [0×0 cameraIntrinsics]

   Camera Extrinsics
                  PatternExtrinsics: [0×1 rigidtform3d]

   Accuracy of Estimation
              MeanReprojectionError: NaN
                 ReprojectionErrors: [0×2 double]

   Calibration Settings
                        NumPatterns: 0
                  DetectedKeypoints: [0×2 double]
                        WorldPoints: [0×2 double]
                         WorldUnits: 'mm'
                       EstimateSkew: 0
    NumRadialDistortionCoefficients: 2
       EstimateTangentialDistortion: 0

영상에서 왜곡을 제거합니다.

I = imread(fullfile(matlabroot,"toolbox","vision","visiondata","calibration","mono","image01.jpg"));
J = undistortImage(I,cameraParams);

원래 영상과 왜곡되지 않은 영상을 표시합니다.

montage({I,J})
title("Original Image (left) vs. Corrected Image (right)")

Figure contains an axes object. The hidden axes object with title Original Image (left) vs. Corrected Image (right) contains an object of type image.

참고 문헌

[1] Zhang, Z. "A Flexible New Technique for Camera Calibration." IEEE Transactions on Pattern Analysis and Machine Intelligence 22, no. 11 (November 2000): 1330–34. https://doi.org/10.1109/34.888718.

[2] Heikkila, J., and O. Silven. “A Four-Step Camera Calibration Procedure with Implicit Image Correction.” In Proceedings of IEEE Computer Society Conference on Computer Vision and Pattern Recognition, 1106–12. San Juan, Puerto Rico: IEEE Comput. Soc, 1997. https://doi.org/10.1109/CVPR.1997.609468.

확장 기능

모두 확장

버전 내역

R2014a에 개발됨

모두 확장