[데브코스 자율주행 TIL] DAY24 (10/23)

happy_quokka·2023년 10월 24일
0

2023.10.23 DAY24😂

요즘...계속 에러로 인해 강의를 제대로 못듣는다ㅠㅠ cmake 정리하고 opencv를 포함한 c++ 빌드를 깔끔하게 하고 싶어서 관련 설정을 하다가 하루를 보냈다.


😵 어려웠던 점

문제 1 : OpenCV 경로

cmake에서 local 환경에 설치한 opencv를 불러오기 위해 find_package(OpenCV REQUIRED HINTS 경로) 를 사용한다. 하지만 이렇게 했는데 local에 설치한 opencv가 아닌 usr/share/ 경로의 OpenCV로 연결이 됐다ㅠㅠ 하지만 사용하려는 버전도 다르고, local의 opencv를 사용하고 싶어서 기존의 opencv를 제거했다. 그랬더니 원하는 경로로 설정이 되었다. 왜 그전에는 HINTS를 사용하여 경로를 지정했는데도 원하는 곳으로 지정이 안되었는지 모르겠다...

문제 2 : imshow()

OpenCV를 연결하고 나서, 연결된 경로, opencv 버전 출력 등을 통해 opencv가 내 프로젝트에 잘 연결되었다는 것을 확인했다. 하지만 아래와 같이 에러가 발생했다. 하지만... 알고보니 이건 에러는 아니고 warning이라서 문제가 되는 것은 아니었다. 또한 지정한 Mat의 크기가 너무 작아서 imshow()한 것이 잘 보이지 않았던 거였다!!

사실 가장 큰 문제는 이미지 경로를 설정하여 출력하였을 때였다. 분명 해당 경로에 이미지가 들어가 있는데 경로가 존재하지 않고, 이미지를 불러올 수 없다는 문제가 발생했는데 해결하지 못했다... (10/24일날 해결했다!! - 이건 TIL DAY25에 작성)


📝 배운 내용

특징점 검출

  • 크기 불변 특징점
    • 특징점 = feature point = key point = interest point
    • 기술자 = descriptor = feature vector
  • 크기 불변 특징 알고리즘
    • SIFT : 성능이 가장 좋다
    • SURF : SIFT 기반 속도 향상 / 이진 패턴
    • KAZE : 비선형 확산 필터 이용 / 실제로는 SIFT 보다 느리다
    • ORB : 피라미드 영상에서 FAST 방법으로 코너 특징점 찾는다. / SIFT, SURF보다 빠르고 SURF보다 성능이 좋다.
    • AKAZE : KAZE 속도 향상 / 이진 기술자 / 피라미드 영상
    • BRIEF : 바이너리 형태의 특징 벡터를 기술하는 알고리즘

SIFT 알고리즘

  1. scale-space extrema detection
  • scale-space 구성 및 DOG(가우시안 차영상) 구성
  • 여러 이미지 사이즈와 가우시안 블러를 수행
  1. keypoint localization
  • DOG 영상에서 주변 8개의 점, 상하 스케일 영상에서 18개의 점을 비교하여 local maximum, local minimum 선택
  • LOG(라플라시안 of Gaussian)과 DOG의 형태가 비슷한데 DOG가 연산이 훨씬 간단하다
  1. orientation assignment
  • 방향 불변 특성을 위해 주 방향 성분 추출
  1. descriptor feature vector
  • 16 x 8 = 128 차원의 float 벡터 추출

0개의 댓글