이 글의 원문은 https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_feature2d/py_shi_tomasi/py_shi_tomasi.html 입니다.
Shi-Tomasi Corner Detection는 Harris Corner Detector를 기본으로 개선을 통해 좀더 정확한 Corner를 추출해 내는 알고리즘으로 cv2.goodFeaturesToTrack 함수로 구현되어 있습니다. 이에 대한 예제는 아래와 같습니다.
import numpy as np import cv2 from matplotlib import pyplot as plt filename = './data/blox.jpg' img = cv2.imread(filename) gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) corners = cv2.goodFeaturesToTrack(gray,30,0.01,10) corners = np.int0(corners) for i in corners: x,y = i.ravel() cv2.circle(img,(x,y),3,255,-1) plt.imshow(img),plt.show()
cv2.goodFeaturesToTrack 함수는 4개의 인자를 받는데, 첫번째는 특징점인 Corner를 추출할 입력 이미지로 1채널인 Grayscale 이미지를 받습니다. 두번째는 추출할 특징점의 개수이고 세번째는 특징점으로써의 최소 품질인데 품질의 범위는 0-1 사이값입니다. 이 최소 품질보다 낮으면 특징점으로써 버려집니다. 그리고 마지막 인자는 최소 거리로써 얻어진 특징점에서 이 최소 거리 이내의 특징점은 버려집니다. 아래는 위 예제의 결과입니다.