前言
角點(diǎn)通常被定義為兩條邊的交點(diǎn),或者說(shuō),角點(diǎn)的局部鄰域應(yīng)該具有兩個(gè)不同區(qū)域的不同方向的邊界。角點(diǎn)檢測(cè)(Corner Detection)是計(jì)算機(jī)視覺(jué)系統(tǒng)中獲取圖像特征的一種方法,廣泛應(yīng)用于運(yùn)動(dòng)檢測(cè)、圖像匹配、視頻跟蹤、三維重建和目標(biāo)識(shí)別等,也可稱(chēng)為特征點(diǎn)檢測(cè)。
角點(diǎn)檢測(cè)算法的基本思想:
使用一個(gè)固定窗口在圖像上進(jìn)行任意方向上的滑動(dòng),比較滑動(dòng)前與滑動(dòng)后兩種情況,窗口中的像素灰度變化程度,如果存在任意方向上的滑動(dòng),都有著較大灰度變化,那么我們可以認(rèn)為該窗口中存在角點(diǎn)。
目前,角點(diǎn)檢測(cè)算法還不是十分完善,許多算法需要依賴(lài)大量的訓(xùn)練集和冗余數(shù)據(jù)來(lái)防止和減少錯(cuò)誤的特征的出現(xiàn)。對(duì)于角點(diǎn)檢測(cè)算法的重要評(píng)價(jià)標(biāo)準(zhǔn)是:其對(duì)多幅圖像中相同或者相似特征的檢測(cè)能力,并且能夠應(yīng)對(duì)光照變化、或者圖像旋轉(zhuǎn)等影響。
關(guān)于角點(diǎn)的具體描述可以有幾種:
- 一階導(dǎo)數(shù)(即灰度的梯度)的局部最大所對(duì)應(yīng)的像素點(diǎn);
- 兩條及兩條以上邊緣的交點(diǎn);
- 圖像中梯度值和梯度方向的變化速率都很高的點(diǎn);
- 角點(diǎn)處的一階導(dǎo)數(shù)最大,二階導(dǎo)數(shù)為零,指示物體邊緣變化不連續(xù)的方向
上一篇博客介紹了Harris角點(diǎn)檢測(cè)器,這篇博客將介紹另一個(gè)角點(diǎn)檢測(cè)器:Shi-Tomasi角點(diǎn)檢測(cè)器。
Shi-Tomasi角點(diǎn)檢測(cè)器是Harris角點(diǎn)檢測(cè)器的優(yōu)化,效果更好;
cv2.goodFeaturesToTrack(),通過(guò)Shi-Tomasi方法(或者Harris角點(diǎn)檢測(cè))在圖像中找到N個(gè)最強(qiáng)的角點(diǎn)。并且在跟蹤對(duì)象方面性能很好。
1. 效果圖
原圖 VS Harris角點(diǎn)檢測(cè)器效果如下:

原圖 VS Shi-Tomasi角點(diǎn)檢測(cè)效果圖如下:
可以看出Shi-Tomasi確實(shí)效果要好一些,所有角點(diǎn)均被成功檢測(cè);

2. 源碼
# Shi-Tomasi角點(diǎn)檢測(cè)是Harris角點(diǎn)檢測(cè)的優(yōu)化,更準(zhǔn)確,會(huì)檢測(cè)出N個(gè)最強(qiáng)角點(diǎn);
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('images/polygon.jpg')
plt.subplot(1, 2, 1)
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.xticks([])
plt.yticks([])
plt.title("origin")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
corners = cv2.goodFeaturesToTrack(gray, 25, 0.01, 10)
corners = np.int0(corners)
for i in corners:
x, y = i.ravel()
cv2.circle(img, (x, y), 3, 255, -1)
plt.subplot(1,2,2)
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.xticks([])
plt.yticks([])
plt.title("Shi-Tomasi res")
plt.show()
參考 https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/py_shi_tomasi/py_shi_tomasi.html#shi-tomasi
總結(jié)
到此這篇關(guān)于OpenCV特征提取與檢測(cè)之Shi-Tomasi角點(diǎn)檢測(cè)器的文章就介紹到這了,更多相關(guān)OpenCV Shi-Tomasi角點(diǎn)檢測(cè)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- OpenCV特征提取與檢測(cè)之Harris角點(diǎn)檢測(cè)
- python opencv角點(diǎn)檢測(cè)連線功能的實(shí)現(xiàn)代碼
- OpenCV哈里斯(Harris)角點(diǎn)檢測(cè)的實(shí)現(xiàn)
- OpenCV半小時(shí)掌握基本操作之角點(diǎn)檢測(cè)