머신러닝과 기술적 분석

opencv python 에서 MSER 사용법 본문

python

opencv python 에서 MSER 사용법

BetterToday 2017. 8. 16. 23:27
728x90

MSER (Maximally Stable Extreme Regions) 은 영상에서 region 을 detection 할 수 있는 대표적인 방법이다.

opencv 에서도 MSER 을 사용할 수 있는 API 를 제공하고 있는데 python binding 의 경우 문서화가 취약하다. 이 포스트에서는 python 에서 opencv 에서 제공하는 MSER 알고리즘을 이용해서 region detection 하는 방법을 정리한다.

1. MSER (Maximally Stable Extreme Regions)

영상에서 connected component 로 연결되어있는 Region 을 detection 하는 (아마도) 가장 Popular 한 알고리즘이다.

2. Python Code

#-*- coding: utf-8 -*-

import cv2

img = cv2.imread("Samples//1.png")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
mser = cv2.MSER(_delta = 1, _min_area=1)
regions = mser.detect(gray, None)

clone = img.copy()
for region in regions:
    # fit a bounding box to the contour
    (x, y, w, h) = cv2.boundingRect(region.reshape(-1,1,2))
    cv2.rectangle(clone, (x, y), (x + w, y + h), (0, 255, 0), 1)
cv2.imshow('img', clone)
cv2.waitKey(0)
cv2.destroyAllWindows()
  • Gray 영상으로 변환해서 사용하는 것이 결과가 더 좋은 것으로 보인다.
  • Detect 된 Component 의 Bounding-Box 를 뽑아낼 때 (N, 1, 2) shape 의 ndarray 로 변환해야 한다.
  • MSER constructor 에서 여러가지 parameter 를 사용할 수 있다.

3. 실행 결과

sample image 로 SVHN Training Data 를 넣고 실행한 결과는 아래와 같다.





728x90
반응형
Comments