[Computer Vision] 카메라 캘리브레이션

2023. 3. 3. 17:20공부/컴퓨터비전

반응형
카메라 캘리브레이션은 3D 세계를 2D 이미지로 투영하는 카메라의 내부 파라미터와 외부 파라미터를 추정하는 과정입니다.
이를 통해 카메라로 찍은 이미지를 실제 세계 좌표계로 변환할 수 있습니다. 이번 글에서는 카메라 캘리브레이션의 필요성, 캘리브레이션 과정 및 OpenCV 라이브러리를 이용한 캘리브레이션 방법에 대해 알아보겠습니다.

 

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


우리가 실제로 보는 세상은 3차원으로 이루어져 있습니다. 하지만 우리가 주로 사용하는 카메라로 우리가 눈으로 보는 세상을 찍게되면 2차원 이미지로 변하게 됩니다. 이렇게 촬영된 이미지는 3차원의 점들이 이미지 상에서 어디에 맺히는지 기하학적으로 보면 영상을 촬영하는 위치, 방향에 결정이 됩니다. 

 

하지만, 렌즈의 외부요인(파라미터)에 의해 크게 영향을 받고 영상의 왜곡 등의 문제가 발생하게 됩니다.

그렇기 때문에 카메라 캘리브레이션은 아주 중요합니다!

 

카메라 캘리브레이션(Camera Calibration)은 컴퓨터 비전에서 매우 중요한 작업 중 하나로, 카메라의 내부 파라미터와 외부 파라미터를 추정하는 과정입니다. 이를 통해 실제 세계의 3차원 공간을 2차원 이미지로 변환할 수 있으며, 이후에 이루어지는 이미지 처리나 객체 추적 등의 작업에서 사용됩니다.

카메라 캘리브레이션 체스보드

카메라 캘리브레이션은 보통 체스보드 패턴과 같은 패턴을 카메라에 촬영하여 이를 이용해 내부 파라미터와 외부 파라미터를 추정합니다. 내부 파라미터는 주로 초점 거리(focal length), 이미지 중심점(center of image), 렌즈 왜곡(distortion) 등을 포함하며, 외부 파라미터는 카메라의 위치(position)와 방향(orientation) 등을 포함합니다.

 

 

2. 카메라 캘리브레이션의 필요성


카메라로 찍은 이미지는 실제 세계와는 다른 2D 이미지입니다.

 

이 때문에 이미지에서 물체의 크기나 거리 등의 정보를 정확하게 알기 위해서는 카메라의 내부 파라미터와 외부 파라미터를 알아야 합니다.

카메라 왜곡

내부 파라미터는 카메라의 렌즈와 관련된 파라미터이며, 주로 초점 거리와 왜곡 정도가 있습니다. 외부 파라미터는 카메라의 위치와 방향을 나타내는 파라미터로, 카메라와 세계 좌표계 사이의 변환을 나타냅니다.

 

카메라 캘리브레이션은 3D 세계와 2D 이미지 사이의 변환을 가능하게 해줍니다.

 

이를 이용해 실제 세계에서 물체의 크기나 거리를 정확하게 파악하거나, 물체 인식, 위치 추적, 로봇 비전 등에 이용될 수 있습니다.

 

 

3. 캘리브레이션 수학식


카메라 캘리브레이션에 사용되는 수학식은 핀홀카메라 모델과 왜곡 보정 모델로 나뉩니다.

캘리브레이션 수학식

기본적인 3차원 공간상 점을 2차원 이미지 평면에 투사하여 얻어지는 모델링된 식이다.

 

하지만 여기엔 내부파라미터, 외부파라미터가 고려되지 않았기 때문에 파라미터에 대한 정보를 고려하여야 한다.

 

내부파라미터와 외부파라미터가 무엇일까?

내부 파라미터는 주로 초점 거리(focal length), 주점(principal point) 및 렌즈 왜곡(lens distortion)에 해당되며, 이러한 파라미터는 카메라 자체에 고유한 속성

외부 파라미터
는 카메라의 위치 및 방향을 나타내는 것으로, 촬영 대상의 상대적 위치와 카메라의 자세를 결정

내부 파라미터는 카메라 내의 렌즈와 이미지센서의 초점거리, 렌즈의 주점, 렌즈 왜곡이다. 

초점거리는 핀홀카메라에서 나왔던 내용에서 보면 이미지 센서와 렌즈 사이의 거리이다.

초점거리

처음에 공부했던 내용으론 렌즈의 주점(principal point)을 기준으로 이미지센서와의 거리인 것이라고

생각했지만 그게 아닌 렌즈와 이미지센서간의 거리라고 생각하면 되는 것 같다.

 

자세한 내용은 이전 글인 핀홀카메라 개념 정리를 참조바란다.

 

렌즈 왜곡의 경우에도 수학식이 존재하는데, 해당 수학식은 아직 완벽히 이해하기가 어려워

다크프로그래머님의 렌즈 왜곡에 대한 글을 참조하는 것이 좋을 것 같다.

https://darkpgmr.tistory.com/31

 

여기서 설명해주시는 렌즈계 왜곡의 수학적 모델은 아래와 같다.

렌즈 왜곡 수학적 모델

자세한 왜곡보정에 관한 내용은 위 링크를 참조 바랍니다. 모델에 대한 이해가 완벽히 이루어지면

내용을 추가하여 수정토록 하겠습니다!

 

여튼, 내부파라미터는 카메라 내부의 요인들을 말 하는 것이고

외부파라미터는 카메라의 위치, 방향을 이야기 한다!

 

결국 카메라캘리브레이션의 의미는 내부, 외부 파라미터를 추정하는 과정으로 볼 수 있다.

이 추정을 통해 2차원 이미지로 변환하여 이후 이루어지는 이미지 처리, 객체 추적 등 작업에 사용한다.

 

4. 캘리브레이션 체스보드


카메라 캘리브레이션은 보통 체스보드 패턴과 같은 패턴을 카메라로 촬영하여 이를 이용해

내부파라미터, 외부파라미터를 추정한다.

카메라 캘리브레이션 체스보드

위 그림과 같은 체스보드를 이용하여 카메라로 촬영한다. 

 

보통 카메라 캘리브레이션은 다음과 같은 과정으로 이루어진다.

  1. 체스보드 패턴 이미지 촬영 : 먼저 체스보드 패턴 이미지를 다양한 위치와 각도에서 카메라로 촬영한다. 이 때 촬영할 때의 각도와 위치는 객체 추적 등에 필요한 외부 파라미터를 추정하기 위해 다양하게 촬영하는 것이 좋다.
  2. 체스보드 패턴 각 교점의 3D 좌표 설정 : 촬영한 체스보드 패턴 이미지에서 체스보드의 각 교점의 3D 좌표를 설정해야 한다. 이를 위해서 체스보드 패턴이 만드는 정확한 격자 모양과 크기를 알아야 한다.
  3. 체스보드 패턴 각 교점의 2D 좌표 측정 : 체스보드 패턴 이미지에서 각 교점의 2D 좌표를 측정한다. 이를 위해서 이미지 상 각 교점을 정확하게 인식할 수 있어야 한다.
  4. 내부 파라미터 추정 : 추정된 3D 좌표와 2D좌표를 이용하여 내부 파라미터를 추정한다. 대표적으로 카메라 초점 거리(Focal Length), 이미지 중심점, 렌즈 왜곡 계수 등이 있다.
  5. 외부 파라미터 추정 : 추정된 내부 파라미터를 이용하여 체스보드 패턴 이미지에서의 3D 좌표와 2D 좌표를 추정한다. 외부파라미터는 카메라의 위치, 거리 등이 있다.

 

 

카메라 캘리브레이션의 관한 내용 중 공부를 하며 작성한 내용이라
틀린 내용이 있을 수 있습니다. 댓글을 남겨주시면 수정토록 하겠습니다.
또한, 추후 추가적으로 내용이 더 추가될 계획입니다.
감사합니다!

 

 

 

 


Reference

1. https://moon-coco.tistory.com/entry/OpenCVCamera-Calibration%EC%B9%B4%EB%A9%94%EB%9D%BC-%EC%99%9C%EA%B3%A1-%ED%8E%B4%EA%B8%B0

2.https://darkpgmr.tistory.com/32#:~:text=%EA%B7%B8%EB%9F%B0%EB%8D%B0%2C%20%EC%9D%B4%EB%AF%B8%EC%A7%80%EC%97%90%EC%84%9C%20%ED%94%BD%EC%85%80%EC%A2%8C%ED%91%9C,%3D%20fyY%2FZ%2Bcy.

3. https://www.google.com/search?q=%EC%BA%98%EB%A6%AC%EB%B8%8C%EB%A0%88%EC%9D%B4%EC%85%98+%EC%B2%B4%EC%8A%A4%EB%B3%B4%EB%93%9C&rlz=1C1ASUM_enKR939KR939&sxsrf=AJOqlzUtPc2gVerYy_T21Uzg-sG35rGxYw:1677831130577&source=lnms&tbm=isch&sa=X&ved=2ahUKEwiBwJ-EqL_9AhUW1jgGHaTEClcQ_AUoAXoECAEQAw&biw=1416&bih=779&dpr=1#imgrc=1gz10Cu_OV0wPM 

반응형