全國(guó)咨詢(xún)/投訴熱線(xiàn):400-618-4000

首頁(yè)人工智能技術(shù)資訊正文

Shi-Tomasi角點(diǎn)檢測(cè)原理【shitomasi 算法原理】

更新時(shí)間:2021-06-04 來(lái)源:黑馬程序員 瀏覽量:

1 原理

Shi-Tomasi算法是對(duì)Harris角點(diǎn)檢測(cè)算法的改進(jìn),一般會(huì)比Harris算法得到更好的角點(diǎn)。Harris 算法的角點(diǎn)響應(yīng)函數(shù)是將矩陣 M 的行列式值與 M 的跡相減,利用差值判斷是否為角點(diǎn)。后來(lái)Shi 和Tomasi 提出改進(jìn)的方法是,若矩陣M的兩個(gè)特征值中較小的一個(gè)大于閾值,則認(rèn)為他是角點(diǎn),即: R=min(λ1,λ2)R= min(\lambda_1,\lambda_2) 如下圖所示:

 Shi-Tomasi角點(diǎn)檢測(cè)01

從這幅圖中,可以看出來(lái)只有當(dāng) λ1 和 λ 2 都大于最小值時(shí),才被認(rèn)為是角點(diǎn)。

2 實(shí)現(xiàn)

在OpenCV中實(shí)現(xiàn)Shi-Tomasi角點(diǎn)檢測(cè)使用API:

corners = cv2.goodFeaturesToTrack ( image, maxcorners, qualityLevel, minDistance )

參數(shù):

  • Image: 輸入灰度圖像
  • maxCorners : 獲取角點(diǎn)數(shù)的數(shù)目。
  • qualityLevel:該參數(shù)指出最低可接受的角點(diǎn)質(zhì)量水平,在0-1之間。
  • minDistance:角點(diǎn)之間最小的歐式距離,避免得到相鄰特征點(diǎn)。

返回:

  • Corners: 搜索到的角點(diǎn),在這里所有低于質(zhì)量水平的角點(diǎn)被排除掉,然后把合格的角點(diǎn)按質(zhì)量排序,然后將質(zhì)量較好的角點(diǎn)附近(小于最小歐式距離)的角點(diǎn)刪掉,最后找到maxCorners個(gè)角點(diǎn)返回。

示例:

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 角點(diǎn)檢測(cè)corners = cv.goodFeaturesToTrack(gray,1000,0.01,10)  # 3 繪制角點(diǎn)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角點(diǎn)檢測(cè)')plt.xticks([]), plt.yticks([])plt.show()

結(jié)果如下:

 Shi-Tomasi角點(diǎn)檢測(cè)02


總結(jié)

  1. Harris算法

    思想:通過(guò)圖像的局部的小窗口觀察圖像,角點(diǎn)的特征是窗口沿任意方向移動(dòng)都會(huì)導(dǎo)致圖像灰度的明顯變化。

    API: cv.cornerHarris()

  2. Shi-Tomasi算法

    對(duì)Harris算法的改進(jìn),能夠更好地檢測(cè)角點(diǎn)

    API: cv2.goodFeatureToTrack()



猜你喜歡:

線(xiàn)性回歸定義和線(xiàn)性回歸方程公式

集成學(xué)習(xí)算法是什么?如何理解集成學(xué)習(xí)?

什么是KNN算法?

深度相機(jī)常見(jiàn)技術(shù):深度相機(jī)的相位求解

黑馬程序員人工智能培訓(xùn)課程

分享到:
在線(xiàn)咨詢(xún) 我要報(bào)名
和我們?cè)诰€(xiàn)交談!