카메라 캘리브레이션을 시각적으로 이해

카메라 캘리브레이션은 렌즈의 왜곡 보정 등에 사용되지만, 각각의 계수가 어떻게 영향을 미치고 있는지 알기 어렵게 느낍니다.

그래서 직관적으로 이해할 수 있도록 해보려고 생각합니다.

카메라 캘리브레이션이란?



이상적인 핀홀 카메라 모델이 아닌 한 왼쪽 그림과 같이 이미지가 왜곡됩니다.
카메라 고유의 왜곡 계수를 구함으로써 이와 같이 왜곡된 화상을 보정할 수 있습니다.



카메라 캘리브레이션의 작동 방식



카메라 캘리브레이션을 할 때 검사기 보드라는 것을 인쇄합니다.


파라미터를 측정하고 싶은 카메라로 사진을 모든 각도에서 수십장 촬영합니다.



이제 카메라의 2차원 좌표 $x$ 와 공간의 3차원 좌표 $X$ 와의 대응을 취할 수 있게 됩니다.
x = P X

이 $P$는 카메라 매트릭스입니다. 3행 4열로 연립방정식으로 구합니다.
P = K [R|t]

$P$ 는 위 삼각 행렬 $K$ 와 정규직렬 행렬 $R$ 로 분해할 수 있으며,

$K$ ...... 내부 파라미터, Intrinsic Parameter (초점 거리, 광학 중심, 전단 계수)
$[R|t]$ ... 외부 파라미터, Extrinsic Parameter (카메라 회전 및 변환)

됩니다.

내부 파라미터



이 내부 파라미터 $K$ 는
K = \begin{pmatrix}
f_x & s & c_x \\
0 & f_y & c_y \\
0 & 0 & 1 \\
\end{pmatrix}

, 초점 거리 $(f_x, f_y)$, 광학 중심 $(c_x, c_y)$, 전단 계수 $s$ 를 나타냅니다.

구현



Python에서는 OpenCV를 사용하여 다음과 같이 $K$ (mtx)를 구합니다.
# チェッカーボードから点を検出
ret, corners = cv2.findChessboardCorners(gray, (8,6), None)

# キャリブレーション
ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, img_size,None,None)

# 歪み補正
dst = cv2.undistort(img, mtx, dist, None, newMtx)

직관적 이해



각각 초점 거리, 광학 중심, 전단 계수 등의 파라미터를 애니메이션 해 봅시다.
원하는 카메라 매트릭스에서 대상 파라미터만 변경합니다.

원본 이미지





초점 거리



무한원→적정 초점거리→작음

(1) $f_x, f_y$


(2) $f_x$


(3) $f_y$


광학 중심



음→적정 위치→정

(1) $c_x$


(1) $c_y$


전단 계수



음→적정값→정

영어로 Skew입니다.

요약



어땠습니까?
카메라 캘리브레이션이 왜곡 보정에 사용된다는 것을 알았습니다.

퓨처 워크



반경 방향의 왜곡 계수, 원주 방향의 왜곡 계수에 대해서도 하고 싶습니다.

이미지 인용



htps : // 기주 b. 코 m / 다 ゔ ぃ ㅅ
htps : // jp. 마 t 후 rks. 이 m/헤lp/ゔぃしおん/えぁmpぇs/에ゔぁぅㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜ HTML

좋은 웹페이지 즐겨찾기