[ros2] sensor_msgs /CameraInfo.msg

About_work·2024년 4월 27일
0

ros2

목록 보기
33/41
std_msgs/Header header
uint32 height
uint32 width
string distortion_model
float64[] D # 왜곡 매개변수 (렌즈 왜곡 보정) 
	# "plumb_bob" 모델의 경우: 매개변수(k1, k2, t1, t2, k3)
float64[9] K # 내부 카메라 매트릭스 (왜곡된 이미지 처리)
float64[9] R # 스테레오 카메라에서만 사용되는 정류 매트릭스
	# 카메라 좌표계를 이상적인 스테레오 이미지 평면에 맞추어
	# 두 스테레오 이미지 간의 에피폴라 라인(epipolar lines)이 평행하도록 하는 회전 매트릭스
	# 3x3 크기의 행 우선 배열로, float64[9] R로 표시
float64[12] P # 보정된(정류된) 이미지에 대한 내부 카메라 매트릭스를 특정 (3*4)
uint32 binning_x
uint32 binning_y
sensor_msgs/RegionOfInterest roi

  • sensor_msgs /CameraInfo.msg should be in a camera namespace on topic "camera_info" and accompanied by up to five image topics named:
    • image_raw - raw data from the camera driver, possibly Bayer encoded,
      • 이는 카메라 드라이버에서 직접 얻은 원시 데이터를 말합니다.
      • 이 데이터는 Bayer 인코딩이 될 수 있습니다. Bayer 인코딩은 칼라 이미지를 처리하기 전에 센서가 캡처하는 방식으로,
      • 각 픽셀은 빨강, 녹색, 또는 파랑의 단일 색상 정보만을 가집니다.
      • 이 원시 데이터는 후처리 과정을 거쳐야만 정상적인 칼라 이미지로 변환될 수 있습니다.
    • image - monochrome, distorted,
      • 이 이미지는 흑백(모노크롬) 이미지이며, 왜곡이 있을 수 있습니다.
      • 왜곡은 렌즈의 물리적 특성 때문에 발생하는 이미지의 기하학적 왜곡을 의미합니다.
      • 일반적으로 이 왜곡은 이미지 처리를 통해 수정될 수 있습니다.
    • image_color - color, distorted,
      • 이는 칼라 이미지이지만 역시 왜곡이 존재할 수 있습니다.
      • 왜곡된 칼라 이미지는 시각적으로 왜곡이 보정되기 전까지 일그러지거나 비정상적인 형태를 띨 수 있습니다.
    • image_rect - monochrome, rectified,
      • 이는 왜곡이 보정된 흑백 이미지입니다.
      • '정류'라는 과정을 통해 이미지의 왜곡이 제거되었기 때문에, 객체와 구조물이 실제와 더 유사한 형태로 나타납니다.
    • image_rect_color - color, rectified.
      • 이는 왜곡이 보정된 칼라 이미지입니다.
      • 이 이미지는 왜곡 보정 과정을 거쳐, 더 정확하고 실제와 유사한 칼라 재현이 가능해진 이미지입니다.
  • The image_pipeline contains packages (image_proc, stereo_image_proc) for producing the four processed image topics from image_raw and camera_info.
    • image_proc, stereo_image_proc 에 대해 공부해보기
  • The meaning of the camera parameters are described in detail at http://www.ros.org/wiki/image_pipeline/CameraInfo.
  • The image_geometry package provides a user-friendly interface to common operations using this meta information.
  • If you want to, e.g., project a 3d point into image coordinates, we strongly recommend using image_geometry.
  • If the camera is uncalibrated, the matrices D, K, R, P should be left zeroed out.
    • In particular, clients may assume that K[0] == 0.0 indicates an uncalibrated camera.

  • Image acquisition info:
    • Time of image acquisition,
    • camera coordinate frame ID Header
    • Header timestamp should be acquisition time of image,
    • Header frame_id should be optical frame of camera,
    • origin of frame should be optical center of camera,
      • +x should point to the right in the image,
      • +y should point down in the image,
      • +z should point into the plane of the image.
  • Calibration Parameters:
    • These are fixed during camera calibration.
    • Their values will be the same in all messages until the camera is recalibrated.
    • Note that self-calibrating systems may "recalibrate" frequently.
    • 비왜곡 이미지로의 변형:
      • 이 과정에는 D(왜곡 매개변수)와 K(내부 카메라 매트릭스)가 필요
      • 이 매개변수들을 사용하여 이미지의 렌즈 왜곡을 보정
      • 이미지에서 왜곡을 제거함으로써 실제 세계의 정확한 시각적 표현을 도모
    • 정류된 이미지로의 변형:
      • 이 과정에는 D, K, 그리고 R(정류 매트릭스)이 필요
      • 정류 과정은 왜곡을 보정하는 것뿐만 아니라, 카메라의 이미지 평면을 조정하여 이상적인 이미지 캡처 조건을 만듦
      • 예를 들어, 스테레오 카메라 설정에서는 두 카메라 간의 이미지를 서로 일치시키는데 사용
    • The internal parameters can be used to warp a raw (distorted) image to:
        1. An undistorted image (requires D and K)
        1. A rectified image (requires D, K, R)
    • The projection matrix P projects 3D points into the rectified image.
    • 카메라의 캘리브레이션(보정) 과정과 관련된 특정 파라미터들을 설명해보겠다.
      1. 카메라가 보정된 이미지 차원:
      • 카메라 캘리브레이션 과정에서 사용된 이미지의 크기를 나타냄
      • 일반적으로 이 차원은 카메라의 전체 해상도, 즉 카메라가 캡처할 수 있는 최대 픽셀 수로 설정
      • 이는 보통 uint32 타입의 height (높이)와 width (너비)로 표현
      1. 왜곡 모델:
      • 카메라의 이미지에서 발생할 수 있는 왜곡을 모델링하기 위해 사용되는 수학적 모델
      • sensor_msgs/distortion_models.h에 지원되는 모델들이 나열되어 있으며, 대부분의 카메라에는 "plumb_bob"이라는 모델이 적합
      • "plumb_bob"은 방사형(radial) 및 접선형(tangential) 왜곡을 간단히 모델링하는 방식
      1. 왜곡 매개변수 (D):
      • 왜곡 모델에 따라 달라지는 매개변수들로, "plumb_bob" 모델의 경우 일반적으로 다섯 개의 매개변수(k1, k2, t1, t2, k3)가 사용
      • 이 매개변수들은 카메라 이미지에서의 왜곡 정도를 수치화하여 보정 과정에서 사용
      • float64[] D로 표현되며, 각각의 매개변수는 실수형 배열로 저장
  1. 내부 카메라 매트릭스 (K):
  • 원시(왜곡된) 이미지를 처리할 때 사용되는 카메라의 내부 매트릭
  • 이 매트릭스는 3D 공간의 점들을 2D 이미지의 픽셀 좌표로 변환하는 데 사용
  • 매트릭스의 형태는 다음과 같습니다:
    [fx  0  cx]
    [ 0 fy cy]
    [ 0  0   1]
  • 여기서 fxfy는 각각 x축과 y축의 초점 거리를, cxcy는 이미지의 주점(중심) 좌표를 나타냅니다.
  • 행 우선(row-major) 배열로 저장
  • float64[9] K

    1. 정류 매트릭스 (R):
    • 스테레오 카메라 시스템에서만 사용되는 매트릭스
    • 이는 카메라 좌표계를 이상적인 스테레오 이미지 평면에 맞추어
      • 두 스테레오 이미지 간의 에피폴라 라인(epipolar lines)이 평행하도록 하는 회전 매트릭스
    • 이 매트릭스도 3x3 크기의 행 우선 배열로, float64[9] R로 표시
    1. 투영/카메라 매트릭스 (P):
    • P = 
      [fx' 0 cx' Tx] 
      [0 fy' cy' Ty] 
      [0 0 1 0]
    • 이 매트릭스는 보정된(정류된) 이미지에 대한 내부 카메라 매트릭스를 특정
    • 보통, 이 매트릭스의 왼쪽 3x3 부분은 정류된 이미지의 표준 내부 카메라 매트릭스
    • 이 매트릭스는 3D 점을 카메라 좌표계에서 2D 픽셀 좌표로 투영하는 데 사용
    • 스테레오 카메라의 경우, Tx, Ty는 두 카메라 간의 위치 관계를 나타내는 요소로 사용
    • 여기서 언급된 ' 표시는 이 매트릭스가 정류된 이미지에 대한 매개변수임을 나타냄
    • 이 값들은 원본 카메라 매트릭스(K)에서 사용된 값과 다를 수 있습니다.
    • float64[12] P

  1. 단안 카메라와 스테레오 카메라 설정:
    • 단안 카메라의 경우,
      • Tx와 Ty는 0
      • 이는 카메라가 하나뿐이므로 추가적인 좌표 변환 없이 기본 매트릭스(K)가 사용
      • R(정류 매트릭스)는 일반적으로 항등 매트릭스(즉, 변화 없음)
    • 스테레오 카메라
      • 두 카메라 간의 상대적 위치를 나타내는 Tx와 Ty가 중요합니다.
      • 첫 번째 카메라는 항상 Tx = Ty = 0을 유지
      • 두 번째(오른쪽) 카메라의 경우, Ty = 0이고 Tx는 -fx' * B로 계산
      • 여기서 B는 두 카메라 사이의 기저선(거리)
      • 이는 두 번째 카메라의 광학 중심이 첫 번째 카메라 프레임 내에서 얼마나 떨어져 있는지를 나타냄
  2. 3D 점의 2D 투영 계산:
    • 주어진 3D 점 [X Y Z]'은 투영 매트릭스 P를 사용하여 [u v w]'로 변환
    • 이는 확장된 카메라 좌표계에서의 투영을 나타냄
    • 최종적으로, 2D 이미지 평면에서의 픽셀 좌표 (x, y)는 u/w와 v/w로 계산됩니다. 이는 투영된 점의 실제 이미지 좌표를 제공합니다.

  1. Binning:
    • Binning은 여러 개의 인접한 픽셀을 하나의 큰 "슈퍼-픽셀"로 결합하는 카메라 설정
    • 이 과정은 이미지의 해상도를 감소시키는 대신, 더 큰 픽셀 단위로 데이터를 집계하여 빛 감도(센서의 빛을 감지하는 능력)를 향상시킬 수 있음
    • 예를 들어, binning_xbinning_y는 각각 이미지의 너비와 높이에서 결합할 픽셀의 수를 정의
    • 만약 binning_x = 2이고 binning_y = 2라면, 원래 이미지의 너비와 높이는 각각 2로 나누어져, 전체 픽셀 수는 원래의 1/4로 감소합니다.
    • 기본값인 binning_x = 0binning_y = 0binning_x = 1binning_y = 1로 간주되어, 즉 픽셀을 결합하지 않고 원래의 해상도를 유지합니다.
  2. Region of Interest (ROI):
    • ROI는 카메라의 전체 해상도 내에서 특정 부분만을 선택하여 처리하는 기능
    • 이는 특정 영역에 초점을 맞추거나 필요 없는 부분을 제거함으로써 처리 속도를 향상시키거나 데이터 저장 공간을 절약할 수 있음
    • ROI 설정은 전체 해상도(바이닝 되지 않은 이미지 좌표) 내에서 특정 윈도우를 지정
    • 이 설정은 roi.widthroi.height로 지정되며, 선택된 윈도우는 항상 동일한 카메라 센서의 픽셀 창을 나타냄
    • 기본 설정인 모든 값이 0으로 설정된 ROI는 전체 해상도(즉, roi.width = width, roi.height = height)로 간주되어, 특정 영역 없이 전체 이미지를 사용함을 의미

profile
새로운 것이 들어오면 이미 있는 것과 충돌을 시도하라.

0개의 댓글