[데브코스 자율주행 TIL] DAY25 (10/24)

happy_quokka·2023년 10월 25일
0
post-thumbnail

2023.10.24 DAY25 🤣

어제 해결하지 못했던 에러를 해결하느라 몇시간이 걸렸다... 드디어 OpenCV가 모두 제대로 작동한다!!!! 이제 맘편히 실습하며 강의를 열심히 들어야겠다..ㅎㅎ


😵 어려웠던 점

문제 : 파일 접근 경로

이미지를 출력했을 때 "image load fail"이 계속 떴다. 분명 경로를 지정한 곳에 이미지 파일이 존재하는데 없다고 떠서 처음에는 cmake 관련하여 잘못 연결한 줄 알았으나 cmake는 문제가 없었다. 혹시나해서 경로 안에 파일이 존재하는지 여부를 확인해보니 파일이 없다고 떴다...! 아니 왜지...

처음에는 해당 .cpp파일이 있는 곳에 파일을 두었으나 파일이 빌드되고 나서는 빌드 폴더 안에서 실행되기 때문에 해당 빌드 파일안에 이미지 파일을 위치시켜서 해보았다. 두 경우 모두... 파일이 없다고 떴다ㅠㅠ 결국 절대경로를 사용하여 이미지를 불러오니 처음에는 없다고 뜨다가 다시 해보니 이미지가 불러와졌다.. 대체 뭐가 문제였던걸까...

그 후 상대경로로 변경하여 문제를 해결하였다... 뭔가 허무하다....


📝 배운 내용

특징자, 기술자 검출

  • 클래스
    • Feature2D : detect(), compute(), detectAndCompute()
    • SIFT, ORG, KAZE, AKAZE
    • KeyPoint : 특징점 검출 결과 객체
  • 특징점, 기술자 관련 함수
    • Ptr<SIFT> detector = STFT::create() : 특징점 클래스 생성 함수
    • Feature2D::detect(img, keypoints, mask) : 특징점 검출 함수
    • drawKeyPoints(img, keypoints, outImg) : 특징점 그리기 함수
    • Feature2D::compute(img, keypoints, desc(Mat타입)) : 기술자 계산 함수
    • Feature2D::detectAndCompute(img, mast, keypoints, desc) : 특징점, 기술자 계산
  • 특징점, 기술자 알고리즘
    • 속도 중요 : ORB
    • 속도, 성능 중요 : AKAZE
    • 성능 중요 : SIF칭

특징점 매칭

  • 클래스
    • DescriptorMatcher : match(), knnMatch(), rediusMatch()
    • BFMatcher, FlannBasedMatcher
    • DMatch : 매칭 결과
  • 특징점 매칭 함수
    • match(desc1, desc2, matches) : 매칭 1개씩 반환
    • knnMatch(desc1, desc2, matches, k) : 상위 k개 매칭 반환
    • drawMatches(img1, kp1, img2, kp2, matches, outImg) : 매칭 결과 영상 생성
  • 좋은 특징점 선별 방법
    1. match() 후 distance값을 기준으로 sort하여 상위 N개 선택
    2. knnMatch() 후 (best_distance / second_distance) < threshold 이면 선이

homography

  • 두 평면 사이의 투시 변환
  • findHomography(srcPoints, dstPoints, RANSAC) : 호모그래피 행렬 구하기
  • 4개의 점을 사용하여 행렬을 계산하고 이를 맞춰보면서 반복 수행 -> 가장 많이 일치하는 행렬 찾아서 반환

0개의 댓글