rongxian 2022. 2. 21. 13:35

코너

  • 객체의 뾰족한 부분
  • 영상의 고유한 특징을 지님

코너의 특징

  • 평탄한 영역과 에지 영역은 고유한 위치를 찾기 어려움
  • 코너는 변별력이 높은 편이며, 영상의 이동, 회전 변환에 강인함

코너 검출 방법

해리스(Harris)

  • 영상 내부 작은 영역이 모두 방향에 대해 변화가 큰 경우 코너로 규정
  • cv2.cornerHarris()를 이용하며 코너 응답 함수 R을 반환, R이 충분히 크면 코너로 구분
  • Local Maxima가 아닌 값이 검출 될 수 있음

Fast Features To Track

  • Harris 코너 검출 방법의 향상된 버전
  • NMS 수행
  • cv2.goodFeaturesToTrack()을 사용하며, 이는 코너점 자체를 반환

 

FAST(Features from Acclerated Segment Test)

  • 주변 16개 픽셀 값 크기를 분석하여 기준 픽셀보다 충분히 밝거나 또는 충분히 어두운 픽셀이 n개 연속으로 나타나면 코너로 인식 (보통 n=9)

 

해리스 코너 응답 함수

cv2.cornerHarris(src, blockSize, ksize, k, dst=None, borderType=None) -> dst
  • src: 입력 단일채널 8비트 또는 실수형 영상
  • blockSize: 코너 응답 함수 계산에서 고려할 이웃 픽셀 크기. 보통 2~5.
  • ksize: (미분을 위한) 소벨 연산자를 위한 커널 크기. 보통 3.
  • k: 해리스 코너 검출 상수. 보통 0.04~0.06. 0.04를 많이 씀
  • dst: 해리스 코너 응답 계수. src와 같은 크기의 행렬, np.ndarray, dtype=np.float32.
  • borderType: 가장자리 픽셀 확장 빙식. 기본값은 cv2.BORDER_DEFAULT.

 

Good Features To Track

cv2.goodFeaturesToTrack(image, maxCorners, qualityLevel, minDistance, 
						corners=None, mask=None, blockSize=None,
						useHarrisDetector=None, k=None) -> corners
  • image: 8비트 또는 32비트 실수, 단일채널 영상
  • maxCorners: 최대 코너 개수. 0 이하이면 무제한.
  • qualityLevel: 코너점 결정을 위한 값. 보통 0.01~0.1. (0.01을 많이 씀)
  • minDistance: 코너점 사이의 최소 거리 px // 너무 근접하면 가장 높은 값을 빼고 나머진 버린다 것을 의미
  • corners: 검출된 코너점 좌표. np.ndarray, shape=(N, 1, 2), dtype=np.float32
  • mask: 마스크 영상
  • blockSize: 코너 검출을 위한 블록 크기. 기본값은 3.
  • useHarrisDetector: 해리스 코너 방법 사용 여부. 기본값은 False
  • k: 해리스 코너 검출 시 사용할 k 값.

 

FAST

cv2.FastFeatureDetector_create(, threshold=None, nonmaxSuppression=None, type=None) -> retval
  • threshold:  중심 픽셀 값과 주변 픽셀 값과의 차이 임계값. 기본은 10.
  • nonmaxSuppression: 비최대 억제 수행 여부. 기본은 True
  • type: 코너 검출 방법. 기본값은 cv2.FAST_FEATURE_DETECTOR_TYPE_9_16
  • retval: FastFeatureDetector 객체
cv2.FastFeatureDetector.detect(image) -> keypoints
  • image: 그레이스케일 영상
  • keypoints: 검출된 코너점 정보. cv2.KeyPoint 객체를 담은 리스트. cv2.KeyPoint의 pt 멤버를 이용하여 코너 좌표 검출. 
    pt는 float 자료형의 튜플이며 pt[0]은 x좌표, pt[1]은 y좌표를 나타냄.

 

결론

  • FAST 방법의 반복 검출률이 대체로 높음
  • 다만 FAST 방법은 노이즈에 민감함