1.Intrinsic Matrix
2. Extrinsic Matrix
2.1. 회전 only 변환
- 절대 좌표계(흰색)에서, 센서 좌표계(빨간색)로 옮기는 과정 = 아래 왼쪽
R(roll)*R(pitch)*R(yaw)
의 inverse 행렬이 필요
- 센서 좌표계(빨간색)에서, 절대 좌표계(흰색)로 옮기는 과정 = 아래 오른쪽
R(roll)*R(pitch)*R(yaw)
행렬이 필요
2.2. 회전 + 병진 변환
2.2.1. 회전 먼저 하고 -> 병진 하는 경우
2.2.2. 병진 먼저 하고 -> 회전 하는 경우
- 참고
- 아래 식도, world 좌표계를 camera 좌표계로 변환하는 행렬
2.3. 센서 quaternion을 알고 있을 때 -> 회젼 변환?
- 회전 벡터를 구한 후(r),
yaw * pitch * roll
순으로 계산한 벡터를 구해서, 연산해주면 됨.
3. IPM (Inverse Perspective Mapping)
3.1. 직접 구하기!
3.2. cv2.warpPerspective 써서 구하기
segment_homography = cv2.warpPerspective(
segment_image,
IPM_matrix,
(output_pixel_resolutions["x"], output_pixel_resolutions["y"]),
flags=interpolation_mode)
3.2.1. Parameter
3.2.1.1. src (입력 이미지)
- 타입: numpy.ndarray (h, w, 3)
- 설명: 변환을 적용할 원본 이미지입니다. 보통 OpenCV에서 이미지를 읽을 때 반환되는 배열 형태입니다.
3.2.1.2. M (변환 행렬)
- 타입: numpy.ndarray
- 설명:
- 3x3 변환 행렬입니다.
- 이 행렬은 이미지의 모든 점에 적용되어 새 위치를 계산합니다.
- 일반적으로
cv2.getPerspectiveTransform
함수를 사용하여 계산된 행렬을 입력으로 사용합니다.
3.2.1.3. dsize (출력 이미지 크기)
- 타입: tuple
- 설명:
- 출력 이미지의 크기를 지정합니다.
- 이 크기는 (너비, 높이) 형식의 튜플로 지정되며, 픽셀 단위입니다.
3.2.1.4. flags (보간 방법)
- 타입: int
- 설명: 이미지 픽셀 값을 보간(interpolation)하는 방법을 지정합니다. 주로 사용되는 보간 방법은
cv2.INTER_LINEAR
(기본값), cv2.INTER_NEAREST
, cv2.INTER_CUBIC
등