[데브코스 자율주행 TIL] DAY27 (10/26)

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

2023.10.26 DAY27🧐

열심히 강의 듣는 중...


😵 어려웠던 점

cmake는 여전히 어렵다...! 헤더 파일을 만들어서 사용하는 경우 cmake를 어떻게 작성해야하는지 헷갈렸다.
파일 구조는 아래와 같다. mycanny 라이브러리를 만들어서 canny에서 실행한다.

파일 구조

detect_edge
 ┣ include
 ┃ ┗ mycanny.hpp
 ┣ CMakeLists.txt
 ┣ canny.cpp
 ┗ mycanny.cpp

CMakeLists.txt 코드

add_library(detect_edge mycanny.cpp)
target_include_directories(detect_edge PUBLIC
    include
    ${OpenCV_INCLUDE_DIRS}
    )
target_link_libraries(detect_edge ${OpenCV_LIBS})

add_executable(canny canny.cpp)
target_link_libraries(canny
    detect_edge
    )
  • add_library(detect_edge mycanny.cpp) : mycanny.cpp파일을 detect_edge라는 라이브러리로 만든다.
  • target_include_directories(detect_edge PUBLIC include ${OpenCV_INCLUDE_DIRS} ) : detect_edge에 include 폴더 안의 hpp와 opencv 헤더 파일을 연결해준다.
  • target_link_libraries(detect_edge ${OpenCV_LIBS}) : detect_edge에 opencv라이브러리를 링킹해준다.

📝 배운 내용

hough 변환

  • 2차원 영상 좌표에서의 직선의 방정식을 파라미터 공간으로 변환하여 직선을 찾는 알고리즘
  • 축적 배열
  • 극좌표계 직선의 방정식 사용
  • 허프 직선 검출 함수
    -HoughLines() : 직선 검출, 결과 vector<Vec2f>
    -HoughLinesP() : 직선의 시작, 끝점 검출, 결과 vector<Vec4i>
  • 허프 변환 원 검출
    • hough gradient method 사용
    • 원 중심, 반지름 검출
    • HoughCircles() : HOUGH_GRADIENT 보다 HOUGH_GRADIENT_ALT 방법이 더 좋다

코너 검출 기법

  • 해리스 코너 검출
    • 윈도우 안의 픽셀 값이 상하좌우 모두 급격하게 변하는 부분이 코너
    • 한쪽으로만 변하면 에지
    • cornerHarris()
  • good features to track
    • 해리스 코너 검출 향상 방법
    • goodFeaturesToTrack() : 코너점 좌표 결과 vector<Point2f>
  • FAST 코너 검출
    • 주변 16개 픽셀값을 현재 픽셀값과 비교하여 p+t보다 크거나 p-t보다 작은 값이 n개 이상 연속으로 나타나면 코너
    • n은 보통 9
    • FAST() : 키포인트 검출 vector<KeyPoint>

영상의 이진화

  • 임계값 연산
    • threshold()
    • type : THRESHOLD_BINARY, THRESHOLD_BINARY_INV, THRESH_OTSU
    • otsu : 자동 임계값 결정
  • 지역 이진화
    • 영역 마다 다른 임계값 사용하여 이진화
  • 적응형 이진화
    • adaptiveThreshold()
    • 블록을 움직이며 이진화 수행

모폴로지

  • 구조요소 : 커널, 마스용
  • 잡음 제거 가능
  • 모폴로지 종류
    • 침식 erode()
    • 팽창 dilate()
    • 열기 (침식 -> 팽창)
    • 닫기 (팽창 -> 침식)
  • 구조 요소(커널) 생성 getStructuringElement()
  • 모폴로지 연산 함수 morphologyEx()에서 MORPH_OPEN, MORPH_CLOSE 사용

0개의 댓글