更新時間:2021-06-04 來源:黑馬程序員 瀏覽量:
Shi-Tomasi算法是對Harris角點檢測算法的改進,一般會比Harris算法得到更好的角點。Harris 算法的角點響應(yīng)函數(shù)是將矩陣 M 的行列式值與 M 的跡相減,利用差值判斷是否為角點。后來Shi 和Tomasi 提出改進的方法是,若矩陣M的兩個特征值中較小的一個大于閾值,則認為他是角點,即: 如下圖所示:
從這幅圖中,可以看出來只有當 λ1 和 λ 2 都大于最小值時,才被認為是角點。
在OpenCV中實現(xiàn)Shi-Tomasi角點檢測使用API:
corners = cv2.goodFeaturesToTrack ( image, maxcorners, qualityLevel, minDistance )
參數(shù):
返回:
示例:
import numpy as np import cv2 as cvimport matplotlib.pyplot as plt# 1 讀取圖像img = cv.imread('./image/tv.jpg') gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)# 2 角點檢測corners = cv.goodFeaturesToTrack(gray,1000,0.01,10) # 3 繪制角點for i in corners: x,y = i.ravel() cv.circle(img,(x,y),2,(0,0,255),-1)# 4 圖像展示plt.figure(figsize=(10,8),dpi=100)plt.imshow(img[:,:,::-1]),plt.title('shi-tomasi角點檢測')plt.xticks([]), plt.yticks([])plt.show()
結(jié)果如下:
總結(jié)
Harris算法
思想:通過圖像的局部的小窗口觀察圖像,角點的特征是窗口沿任意方向移動都會導(dǎo)致圖像灰度的明顯變化。
API: cv.cornerHarris()
Shi-Tomasi算法
對Harris算法的改進,能夠更好地檢測角點
API: cv2.goodFeatureToTrack()
猜你喜歡: