-
모벤트 기반 객체 검출컴퓨터 비젼(Computer Vision)/영상 분할과 객체 검출 2022. 2. 16. 17:07
모멘트
- 영상의 형태를 표현하는 일련의 실수값
- 특정 함수 집합과의 상관 관계(correlation) 형태로 계산
- Geometric moments, Central moments, Normalized central moments, Legendre moments, ... 등이 있음
Hu's Seven Invariant Moments
- 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: 두 외곽선 또는 그레이스케일 영상 사이의 거리
회전, 크기변환에 대해서만 강인
예시
코드
import sys import numpy as np import cv2 # 영상 불러오기 obj = cv2.imread('spades.png', cv2.IMREAD_GRAYSCALE) src = cv2.imread('symbols.png', cv2.IMREAD_GRAYSCALE) if src is None or obj is None: print('Image Load failed') sys.exit() _, obj_bin = cv2.threshold(obj, 128, 255, cv2.THRESH_BINARY_INV) obj_contours, _ = cv2.findContours(obj_bin, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) obj_pts = obj_contours[0] _, src_bin = cv2.threshold(src, 128, 255, cv2.THRESH_BINARY_INV) contours, _ = cv2.findContours(src_bin, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) dst = cv2.cvtColor(src, cv2.COLOR_GRAY2BGR) for pts in contours: if cv2.contourArea(pts) < 1000: continue rc = cv2.boundingRect(pts) cv2.rectangle(dst, rc, (255, 0, 0), 1) # 모양 비교 dist = cv2.matchShapes(obj_pts, pts, cv2.CONTOURS_MATCH_I3, 0) cv2.putText(dst, str(round(dist,4)), (rc[0], rc[1] - 3), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255,0,0), 1, cv2.LINE_AA) if dist < 0.1: cv2.rectangle(dst, rc, (0,0,255), 2) cv2.imshow('obj', obj) cv2.imshow('dst', dst) cv2.waitKey(0)
결과
'컴퓨터 비젼(Computer Vision) > 영상 분할과 객체 검출' 카테고리의 다른 글
HOG 보행자 검출 (0) 2022.02.17 캐스케이드 분류기 (0) 2022.02.17 템플릿 매칭 (0) 2022.02.17 영상 분할과 객체 검출 (0) 2022.02.16