知之者 不如好之者, 好之者 不如樂之者

기계처럼 살지 말고, 즐기는 인간이 되자

Project/ROS2 + CV + Robot (2023.12~2024.02)

Python3 에서 Intel RealSense Camera Intrinsic Matrix 얻기

코방코 2024. 1. 22. 11:59
728x90

 

 

Camera Intrinsic Matrix?

 

Camera Intrinsic Matrix는 카메라의 내부 매개변수를 나타내는 행렬로,

컴퓨터 비전에서 카메라의 기하학적 및 광학적 특성을 정의하는 데 사용됩니다.

이 행렬은 카메라가 3차원 세계를 2차원 이미지로 어떻게 투영하는지에 대한 정보를 제공합니다.

 

Depth Camera의 Camera Intrinsic Matrix 는 다음과 같은 형태를 가집니다.

여기서,

  • ( f_x, f_y ): 카메라의 초점 거리(focal length).  f_x 와  f_y는 각각 x축과 y축 방향의 카메라 렌즈의 초점 거리를 나타냅니다. 이 값들은 픽셀 단위로 표현되며, 카메라 렌즈의 확대 능력을 나타냅니다.
  • ( c_x, c_y ): 주점(principal point). 이는 카메라 이미지의 중심점(주로 이미지의 중앙)을 나타내는 좌표입니다.

 


Camera Intrinsic Matrix의 사용

 

Camera Intrinsic Matrix는 다양한 컴퓨터 비전 및 이미지 처리 작업에서 중요한 역할을 합니다.

  1. 3D-2D 좌표 변환: 3차원 공간의 포인트를 2차원 이미지 평면으로 투영하는 데 사용됩니다. 이를 통해 실세계의 3차원 좌표를 2차원 이미지 상의 좌표로 변환할 수 있습니다.
  2. 카메라 교정(Calibration): 카메라 교정 과정에서 Intrinsic Matrix를 추정합니다. 이를 통해 카메라의 왜곡(distortion)을 보정하고 보다 정확한 이미지를 얻을 수 있습니다.
  3. 스테레오 비전(Stereo Vision): 두 대 이상의 카메라를 사용하여 깊이 정보를 추출할 때, 각 카메라의 Intrinsic Matrix를 사용하여 이미지 간의 대응점을 찾고 3D 정보를 계산합니다.

 


Python3 - Intel RealSense Camera Intrinsic Matrix 

 

다음과 같은 Python 코드로 Intel realsense camera에서 Camera Intrinsic Matrix를 얻을 수 있습니다.

 

실제로 D435를 연결하고 값을 얻어보면 다음과 같은 값들이 나옵니다.

 

Brown-Conrady 모델은 실제로 왜곡 계수를 설명하는 데 사용되는 모델 중 하나입니다.

이 모델은 렌즈 왜곡을 보정하기 위해 사용되며,

주로 Radial 왜곡과 Tangential 왜곡을 설명합니다.

 

왜곡 계수가 다섯 개인 이유는 다음과 같습니다:

  1. Radial  왜곡 계수: k1, k2, k3, Radial 왜곡은 렌즈의 광학적 특성으로 인해 발생하며, 이미지의 중심에서 멀어질수록 심해지는 경향이 있습니다. 첫 두 계수(k1, k2)가 주로 사용되며, 세 번째 계수(k3)는 보다 높은 수준의 왜곡을 보정하는 데 사용됩니다.
  2. Tangential  왜곡 계수: p1, p2, Tangential 왜곡은 카메라 렌즈와 이미지 센서 사이의 정렬이 완벽하지 않을 때 발생합니다. 이로 인해 이미지가 x축이나 y축을 따라 약간 기울어 보일 수 있습니다.

 

이러한 왜곡 계수들은 카메라 렌즈의 물리적, 광학적 특성을 수학적으로 모델링하여

이미지의 왜곡을 최소화하는 데 사용됩니다.

왜곡 보정은 컴퓨터 비전과 이미지 처리에서 더 정확한 이미지 분석과 처리를 가능하게 합니다.

 

기본적으로 왜곡 계수는 전부 0이고,

Cx, Cy가 정확히 640과 480의 중심이 아니라는 것을 확인할 수 있었습니다.

 

 

 

728x90
반응형