特征點選取
????????特征點探測方法有goodFeaturesToTrack(),cornerHarris()和SURF()。一般使用goodFeaturesToTrack()就能獲得很好的特征點。goodFeaturesToTrack()定義:
void goodFeaturesToTrack( InputArray image, OutputArray corners,int maxCorners, double qualityLevel, double minDistance,InputArray mask = noArray(), int blockSize = 3,bool useHarrisDetector = false, double k = 0.04 );
image:源圖像;
corners:檢測到的特征點位置;
maxcorner:為返回的特征點個數設置上限。
qualityLevel:反映出一個角形特征在它之前的強度,設置較低的值會返回更多的點;
minDistance:特征點之間的最小距離;
mask:如果mask(i,j)=0,那么不考慮像素p(i,j);
blockSize:一個用于計算的像素周圍的大小
useHarrisDetector:是否使用原來的哈里斯角探測器或一個最小特征值準則。
k:哈里斯角探測器的一個自由參數。
特征點跟蹤
特征點跟蹤使用光流算法:利用OpenCV光流算法實現視頻特征點跟蹤_視圖猿人的博客-CSDN博客
為了進一步提高跟蹤的準確度,采用正向和反向兩次光流跟蹤:
對于特征點P(i,j),其正向光流算法計算出的位置為D(x,y);
對D(x,y)點再次使用光流算法,得到位置Q(m,n);
如果P==Q,也就是兩個位置相同,那么就留下特征點P