주요 콘텐츠

cameraIntrinsics

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

설명

렌즈 왜곡 파라미터를 포함한 카메라 내부 보정 파라미터에 대한 정보를 저장합니다.

생성

설명

intrinsics = cameraIntrinsics(focalLength,principalPoint,imageSize)는 초점 거리와 카메라의 주점이 포함된 카메라 내부 파라미터 객체를 반환합니다. 세 가지 입력 인수는 각각 FocalLength 속성, PrincipalPoint 속성, ImageSize 속성을 설정합니다.

예제

intrinsics = cameraIntrinsics(focalLength,principalPoint,imageSize,PropertyName=Value)는 하나 이상의 이름-값 인수를 사용하여 추가 속성을 설정합니다. 예를 들어, RadialDistortion=[0 10]은 방사형 렌즈 왜곡 속성을 벡터 [0 10]으로 설정합니다.

속성

모두 확장

xy의 초점 거리로, 요소를 2개 가진 벡터 [fx fy](단위: 픽셀)로 저장됩니다.

fx = F * sx

fy = F * sy

F는 일반적으로 밀리미터 단위인 세계 단위 초점 거리입니다. sxsy는 각각 x 방향과 y 방향의 세계 단위당 픽셀 개수입니다. 따라서 fxfy의 단위는 픽셀입니다.

초점 거리 F는 화각에 영향을 미치므로 영상에서 초점이 맞춰진 것처럼 보이는 장면의 영역에 영향을 미칩니다. 피사체와의 거리가 고정된 경우 다음과 같습니다.

  • 초점 거리가 짧으면 화각이 넓어져 장면의 더 넓은 영역에서 초점이 맞춰진 상태로 캡처할 수 있습니다. 이를 통해 피사체와 장면 배경 모두를 강조할 수 있습니다.

  • 초점 거리가 길면 화각이 좁아져 초점이 맞춰진 장면의 영역이 줄어듭니다. 이를 통해 피사체가 더 강조되고 배경은 덜 캡처되도록 제한됩니다.

cameraIntrinsics 객체를 만든 후에는 FocalLength 값을 설정할 수 없습니다.

카메라의 광학적 중심으로, 요소를 2개 가진 벡터 [cx cy](단위: 픽셀)로 저장됩니다. 벡터에는 카메라의 광학적 중심 좌표가 포함됩니다.

cameraIntrinsics 객체를 만든 후에는 PrincipalPoint 값을 설정할 수 없습니다.

카메라가 생성하는 영상 크기로, 요소를 2개 가진 벡터 [mrows ncols]로 저장됩니다.

cameraIntrinsics 객체를 만든 후에는 ImageSize 값을 설정할 수 없습니다.

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

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

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

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

방사형 왜곡은 주점에서 확장되는 방사형 선을 따라 영상 점이 변위되는 것입니다.

  • 영상 점이 주점에서 멀어질수록(양의 방사형 변위) 영상 배율이 감소하고 영상에 핀쿠션 왜곡이 발생합니다.

  • 영상 점이 주점에 가까워질수록(음의 방사형 변위) 영상 배율이 증가하고 영상에 배럴 왜곡이 발생합니다.

Three grids: one with pincushion distortion (positive radial displacement), one with no distortion, and one with barrel distortion (negative radial displacement)

카메라 파라미터 객체는 한 점의 방사형 왜곡 위치를 계산하며, 이는 (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개 가진 벡터 [p1 p2]로 지정됩니다. 접선 왜곡은 렌즈와 영상 평면이 평행이 아닌 경우에 발생합니다.

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는 왜곡되지 않은 픽셀 위치입니다.
p1p2는 렌즈의 접선 왜곡 계수입니다.
r2 = x2 + y2
왜곡되지 않은 픽셀 위치는 광학적 중심을 원점으로 한 정규화된 영상 좌표에 나타납니다. 좌표는 세계 단위로 표현됩니다.

카메라 좌표축 왜도로, 숫자형 스칼라로 지정됩니다. x축과 y축이 정확히 수직인 경우 왜도는 0이어야 합니다.

읽기 전용 속성입니다.

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

[fxscx0fycy001]

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

fx = F*sx

fy = F*sy

F는 세계 단위의 초점 거리로, 일반적으로 밀리미터로 표현됩니다.
sxsy는 각각 x 방향과 y 방향의 세계 단위당 픽셀 개수입니다.
fxfy는 픽셀로 표현됩니다.

예제

모두 축소

렌즈 왜곡이나 왜도 없이 카메라 파라미터를 정의합니다.

초점 거리와 주점을 픽셀 단위로 지정합니다.

focalLength    = [800 800]; 
principalPoint = [320 240];
imageSize      = [480 640];

camera intrinsics 객체를 만듭니다.

intrinsics = cameraIntrinsics(focalLength,principalPoint,imageSize)
intrinsics = 
  cameraIntrinsics with properties:

             FocalLength: [800 800]
          PrincipalPoint: [320 240]
               ImageSize: [480 640]
        RadialDistortion: [0 0]
    TangentialDistortion: [0 0]
                    Skew: 0
                       K: [3×3 double]

확장 기능

모두 확장

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

버전 내역

R2017a에 개발됨

모두 확장