教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

Shi-Tomasi角點檢測原理和實現(xiàn)代碼

更新時間:2021年06月03日18時05分 來源:傳智教育 瀏覽次數(shù):

1 原理

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

 Shi-Tomasi角點檢測01

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

2 實現(xiàn)

在OpenCV中實現(xiàn)Shi-Tomasi角點檢測使用API:

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

參數(shù):

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

返回:

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

示例:

import numpy as np 
import cv2 as cv
import 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é)果如下:

 Shi-Tomasi角點檢測02


總結(jié)

  1. Harris算法

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

    API: cv.cornerHarris()

  2. Shi-Tomasi算法

    對Harris算法的改進,能夠更好地檢測角點

    API: cv2.goodFeatureToTrack()



猜你喜歡:

人工智能之個性化推薦之路

深度相機是什么?深度相機常見技術(shù)

如何解決分類中解決類別不平衡問題?

語言模型-BERT:bert算法介紹

傳智教育人工智能培訓(xùn)課程

0 分享到:
和我們在線交談!