OpenCV-Python Shi-tomas拐角檢測器和益於跟蹤的特徵

目標

在本章中,

  • 我們將學習另一個拐角檢測器:Shi-Tomasi拐角檢測器
  • 我們將看到以下函數:cv.goodFeaturesToTrack()

理論

在上一章中,我們看到了Harris Corner Detector。1994年下半年,J。Shi和C. Tomasi在他們的論文《有益於跟蹤的特徵》中做了一個小修改,與Harris Harris Detector相比,顯示了更好的結果。哈里斯角落探測器的計分功能由下式給出:

OpenCV-Python  Shi-tomas拐角檢測器和益於跟蹤的特徵 | 三十八

取而代之的是,史托馬西提出:

OpenCV-Python  Shi-tomas拐角檢測器和益於跟蹤的特徵 | 三十八

如果大於閾值,則將其視為拐角。如果像在Harris Corner Detector中那樣在$lambda1-lambda2$空間中繪製它,則會得到如下圖像:

OpenCV-Python  Shi-tomas拐角檢測器和益於跟蹤的特徵 | 三十八

從圖中可以看到,只有當λ_1和λ_2大於最小值λ_min時,才將其視為拐角(綠色區域)。

代碼

OpenCV有一個函數cv.goodFeaturesToTrack()。它通過Shi-Tomasi方法(或哈里斯角檢測,如果指定)找到圖像中的N個最強角。像往常一樣,圖像應該是灰度圖像。然後,指定要查找的角數。然後,您指定質量級別,該值是介於0-1之間的值,該值表示每個角落都被拒絕的最低拐角質量。然後,我們提供檢測到的角之間的最小歐式距離。利用所有這些信息,該功能可以找到圖像中的拐角。低於平均質量的所有拐角點均被拒絕。然後,它會根據質量以降序對剩餘的角進行排序。然後函數首先獲取最佳拐角,然後丟棄最小距離範圍內的所有附近拐角,然後返回N個最佳拐角。在下面的示例中,我們將嘗試找到25個最佳彎角:

<code>import numpy as npimport cv2 as cvfrom matplotlib import pyplot as pltimg = cv.imread('blox.jpg')gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)corners = cv.goodFeaturesToTrack(gray,25,0.01,10)corners = np.int0(corners)for i in corners:    x,y = i.ravel()    cv.circle(img,(x,y),3,255,-1)plt.imshow(img),plt.show()/<code>

查看以下結果:

OpenCV-Python  Shi-tomas拐角檢測器和益於跟蹤的特徵 | 三十八

此功能更適合跟蹤。我們將看到使用它的時機


分享到:


相關文章: