모멘트 기반 객체 검출

매일 공부(ML)·2021년 12월 19일
0

OPEN CV

목록 보기
43/45

모멘트 기반 객체 검출

모멘트란?

  • 영상의 형태를 표현하는 일련의 실수값

  • 특정 함수 집합과의 상관 관계(correlation) 형태로 계산

  • Geometric moments, Central moments, Normalized central moments, Legendre moments, Complex moments, Zernike moments, ART(Angular Radial Transform), etc

Hu의 7개 불변 모멘트

  • 3차 이하의 정규화된 중심 모멘트를 조합하여 만든 7개의 모멘트 값

  • 영상의 크기, 회전, 이동, 대칭 변환에 불변

모양 비교 함수

cv2.matchShapes(contour1, contour2, method, parameter) -> retval
  • contour1: 첫 번째 외곽선 또는 그레이스케일 영상

  • contour2: 두 번째 외곽선 또는 그레이스케일 영상

  • method: 비교 방법 지정. cv2.CONTOURS_MATCH_I1, cv2.CONTOURS_MATCH_I2,
    cv2.CONTOURS_MATCH_I3 중 하나 사용.

  • parameter: 사용되지 않음. 0 지정.

  • retval: 두 외곽선 또는 그레이스케일 영상 사이의 거리(distance)

  • Hu의 불변모멘트를 이용하여 두 외곽선 또는 영상의 모양을 비교
    → 크기, 회전, 이동, 대칭 변환에 강인

모멘트 기반 검출 예제

obj = cv2.imread('spades.png', cv2.IMREAD_GRAYSCALE)
src = cv2.imread('symbols.png', cv2.IMREAD_GRAYSCALE)

obj_contours, _ = cv2.findContours(obj_bin, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
obj_pts = obj_contours[0]

contours, _ = cv2.findContours(src_bin, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
dst = cv2.cvtColor(src, cv2.COLOR_GRAY2BGR)

for pts in contours:
	rc = cv2.boundingRect(pts)
	cv2.rectangle(dst, rc, (255, 0, 0), 1)

	dist = cv2.matchShapes(obj_pts, pts, cv2.CONTOURS_MATCH_I3, 0)
	if dist < 0.1:
		cv2.rectangle(dst, rc, (0, 0, 255), 2)

profile
성장을 도울 아카이빙 블로그

0개의 댓글