跟蹤丟失後再檢測時加上目標特徵匹配,是將第一幀檢測到的目標框中的特徵提取出來,具體可以採用尺度不變特徵sift,surf特徵提取,
提取出來的特徵,能否以向量的形式儲存在變數中,再檢測時搜尋影象幀中的待確定目標區域(可能有數個這樣的roi),
可以通過計算歐式距離的方式與第一幀影象中的特徵進行匹配,快速排除歐氏距離相差較大的檢測物件(非跟蹤的行人物件),
當匹配度達到一定值後,即檢測到第一幀跟蹤的行人。
先搞定怎麼提取特徵,有沒有比較好的demo,提取到特徵後怎麼匹配,用歐式距離?
提取到的特徵是什麼形式?需要送入神經網路中輸出來一維向量嗎?全連線層輸出到softmax層,輸出多分類的概率
orb演算法brift特徵提取方法,對乙個畫素點周圍的16個畫素點資訊進行匹配。
# ********extract the first roi
cv2.imwrite('feature.jpg', frame) # 從frame讀一幀影象並儲存
im = cv2.imread('feature.jpg') # 讀取影象
# 下取樣
im_lowers = cv2.pyrdown(im)
# 轉為灰度圖
gray = cv2.cvtcolor(im_lowers, cv2.color_bgr2gray)
# 檢測特徵點
cv2.xfeatures2d.surf_create()
s = cv2.surf() # 提取的特徵放在s變數中
mask = np.uint8(np.ones(gray.shape))
keypoints = s.detect(gray, mask)
#顯示結果及特徵點
vis = cv2.cvtcolor(gray, cv2.color_gray2bgr)
# **********提取到第一幀的roi並儲存在vis中
用下面的**跑了乙個demo,輸出的情況是:
# 下取樣
im_lowers = cv2.pyrdown(im)
# 轉為灰度圖
gray = cv2.cvtcolor(im_lowers, cv2.color_bgr2gray)
# 檢測特徵點
surf = cv2.xfeatures2d.surf_create()
#s = cv2.surf()
mask = np.uint8(np.ones(gray.shape))
keypoints = surf.detect(gray, mask)6
#顯示結果及特徵點
# **********提取到第一幀的roi並儲存在vis中
#cv2.imshow("carr", vis)
cv2.waitkey(0)
print("keypoints", keypoints)
+++++++++++++++++++++++++++++++
現在花點時間整理一下現在的問題:
+用kcf演算法和tld跟蹤沒有明顯的區別
+跟蹤時目標框一直在調動,達不到手動畫框進行跟蹤的穩定。
+檢測-跟蹤-丟失再檢測,在長時間跟蹤時會因為不明原因徹底檢測不到物件,一直丟失。怎麼提高魯棒性
+多程序與第一幀特徵提取
+
機械人視覺專案 視覺檢測識別 機械人跟隨(3)
嵌入式裝置,計算資源有限,對演算法的執行時間敏感。yolov3在tx2上能跑到5fps,但存在偶爾漏檢的情況。yolov3使用darknet。kcf雖然非常快,但很容易跟丟,對於目標形變 人的姿態變化 目標移動較快 目標離開場景等情況,效果較差。kcf使用opencv contrib的實現。dete...
機械人視覺專案 視覺檢測識別 機械人跟隨(20)
1.嘗試用tx2外接kinectv1深度相機獲取rgbd影象資訊,傳入到我們的行人檢測 框架中,除錯基於深度相機的行人檢測與跟蹤演算法的效果。首先安裝kinect對應arm處理器的ubuntu驅動程式,libfreenect v2.0 openni v2.2.0.33 nite v2.0.0 安裝l...
訊號處理在機器視覺 機械人視覺與機器視覺
機械人視覺 計算機視覺 影象處理 機器視覺和圖形識別,這幾者之間到底有神馬區別呢?要弄清楚他們哪乙個是哪乙個,有時候也真的是容易混淆的。接下來看看這些術語的具體含義是什麼,以及他們與機械人技術有什麼關聯。讀了這篇文章後,你就再也不會被這些概念弄糊塗了!在這篇文章當中,我們分解了機械人視覺的 族譜 以...