from gradslam.structures.rgbdimages import RGBDImages

About_work·2024년 8월 3일
0

global mapper

목록 보기
25/37

1. RGBDImages 클래스 역할 설명

  • RGB-D 이미지 데이터를 처리하고 관리하는 객체로,
  • 여러 시퀀스의 RGB 이미지, 깊이 맵, 카메라 내부 매개변수(내부 행렬), 및 (선택적으로) 포즈(외부 행렬)를 포함
  • 이 클래스는 다양한 입력 형식을 처리하고, 다양한 속성 및 메서드를 통해 데이터를 다룰 수 있도록 설계

1.1. 주요 역할 및 기능:

  1. 데이터 저장 및 초기화:

    • RGB 이미지, 깊이 이미지, 카메라 내부 매개변수, 포즈 데이터를 저장
    • 입력 데이터가 적절한 형식과 모양을 가지는지 확인하고, 불일치가 있을 경우 오류를 발생
  2. 데이터 형식 변환:

    • 채널 우선 형식(channels_first: (B, L, 3, H, W))과 채널 마지막 형식(channels_last: (B, L, H, W, 3)) 간의 변환을 지원
    • 데이터 복사를 통해 변환할 수도 있고, 원본 데이터를 직접 변환할 수도 있습니다.
  3. 속성 계산 및 관리:

    • vertex_map: 로컬 좌표계에서 깊이 맵을 3D 포인트 클라우드로 변환
    • normal_map: 3D 포인트 클라우드의 법선 벡터를 계산
    • global_vertex_map: 로컬 좌표계에서 글로벌 좌표계로 포인트 클라우드를 변환
    • global_normal_map: 글로벌 좌표계에서 법선 벡터를 계산
    • valid_depth_mask: 깊이 맵의 유효한 깊이 값을 나타내는 마스크를 제공
  4. 데이터 접근 및 조작:

    • 인덱싱을 통해 특정 시퀀스나 프레임의 RGB-D 이미지를 선택할 수 있음
    • 속성값을 갱신하거나 복사된 객체를 생성할 수 있음
    • PyTorch의 to 메서드와 유사한 방식으로 데이터를 특정 장치(CPU 또는 GPU)로 이동시킬 수 있음
  5. 시각화:

    • plotly를 사용하여 RGB 및 깊이 이미지를 시각화할 수 있음
    • RGB-D 이미지 시퀀스를 애니메이션 형태로 표시할 수 있으며, 슬라이더와 플레이 버튼을 통해 시퀀스를 탐색할 수 있음

주요 속성:

  • rgb_image: RGB 이미지 데이터.
  • depth_image: 깊이 이미지 데이터.
  • intrinsics: 카메라 내부 매개변수.
  • poses: 카메라 외부 매개변수(선택적).
  • vertex_map: 깊이 맵에서 계산된 로컬 3D 포인트 클라우드.
  • normal_map: 포인트 클라우드에서 계산된 로컬 법선 벡터.
  • global_vertex_map: 글로벌 좌표계로 변환된 포인트 클라우드.
  • global_normal_map: 글로벌 좌표계로 변환된 법선 벡터.
  • valid_depth_mask: 유효한 깊이 값을 나타내는 마스크.

예시:

# 데이터 초기화
colors = torch.rand([2, 8, 32, 32, 3])
depths = torch.rand([2, 8, 32, 32, 1])
intrinsics = torch.rand([2, 1, 4, 4])
poses = torch.rand([2, 8, 4, 4])

# RGBDImages 객체 생성
rgbdimages = RGBDImages(colors, depths, intrinsics, poses)

# 속성 접근
print(rgbdimages.rgb_image.shape)  # (2, 8, 32, 32, 3)
print(rgbdimages.depth_image.shape)  # (2, 8, 32, 32, 1)
print(rgbdimages.vertex_map.shape)  # (2, 8, 32, 32, 3)
print(rgbdimages.normal_map.shape)  # (2, 8, 32, 32, 3)

# 시각화
fig = rgbdimages.plotly(index=0)
fig.show()
profile
새로운 것이 들어오면 이미 있는 것과 충돌을 시도하라.

0개의 댓글