[데브코스 자율주행 TIL] DAY 48 (11/24)

happy_quokka·2023년 11월 26일
0
post-thumbnail

2023.11.24 DAY48

어제 우분투 용량을 확장시키느라 강의를 못 들었다. 어제 강의부터 들었다. 어제 강의는 개발하는 방법들에서 대한 내용들이었다. 처음 알게된 내용들이 많아서 생각보다 강의를 듣는데 시간이 오래걸렸다ㅠ 어제 강의를 다 듣고 나서 오늘 강의를 듣기 전에 3D 회전, 동차좌표계에 대한 이해가 부족하다고 생각하여 이 부분들을 공부했다.


📝 배운 내용

profiler (easy profiler)

  • 프로그램의 수행시간, 메모리, CPU 점유율 등에 대한 정보들을 알려주는 것
  • easy profiler를 사용해서 알 수 있다 (그 외에도 여러 profiler가 있다)

logger & CI/CD

  • speed logger
    • 디버깅할 때 사용하면 좋다
    • 빠르고 출력할 때 string이 꼬이는 일이 없다
    • error 단계를 나누어서 볼 수 있다
  • CI/CD (github actions)
    • 코드의 format을 맞춰준다
    • 자동화해준다
  • 아직 CI/CD 부분을 어떻게 사용하는지 정확하게는 모르겠지만 잘 사용하면 편리할 것 같다! (아마 깃헙이 아직 어려워서 그런것 같기도 하다...)

Epipolar Geometry

  • 두 장의 이미지를 사용하여 3D point의 위치를 추정
  • ray : optical center에서 3D point까지 그린 직선 / 3D point가 2D로 project될때의 직선
  • epipolar line : ray를 재투영한 직선
  • epipole : 반대편 카메라의 optical center가 투영된 점
  • epipolar plane
    • 좌우 optical center, 3D point를 연결해서 만들어진 삼각형
    • epipolar line, epipole 포함
  • baseline : 두 카메라 간의 거리

epipolar constraint

  • 3D point X는 epipolar plane 위에 존재
  • 모든 epipolar line은 epipole과 교차
  • 모든 baseline은 epipole과 교차, epipolar plane은 baseline 포함

Essential matrix

  • calibration된 카메라들 사이의 관계
  • 두 카메라 간의 회전과 이동에 관한 정보를 담고 있다
  • E=t×RE = t × R
  • t는 3x1 vector(x, y, z) -> 3x3 matrix로 변환하여 사용
  • R은 SO(3) rotation으로 3x3 matrix
  • essential matrix를 구한 후 rotation와 translation으로 분해할 수 있다
  • 하지만 이 경우 normalized image plane을 사용해서 x의 값이 소수점이지만 실제 이미지에서 x는 픽셀로 표현된다
  • normalized image plane에서 픽셀 location으로 바꿔주는 정보인 K matrix 필요
  • recoverPose() 사용해서 계산 가능
  • 5 point algorithm 사용
    • Essential matrix는 5DoF를 가지기 때문
    • 5개의 데이터를 사용하여 추론

Fundametal matrix

  • 카메라 파라미터 정보까지 포함한 두 이미지의 실제 픽셀 좌표 사이의 기하학적 관계
  • findFundamentalMat() 사용해서 계산 가능
  • 8 point algorithm 사용
    • Essential matrix는 7DoF를 가진다 (7을 사용해야하지만 그러면 너무 복잡해서 8로 사용)
    • 8개의 데이터를 사용하여 추론

0개의 댓글