機械人視覺專案 視覺檢測識別 機械人跟隨(16)

2021-08-28 10:03:31 字數 1777 閱讀 1519

跟蹤丟失後再檢測時加上目標特徵匹配,是將第一幀檢測到的目標框中的特徵提取出來,具體可以採用尺度不變特徵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...

訊號處理在機器視覺 機械人視覺與機器視覺

機械人視覺 計算機視覺 影象處理 機器視覺和圖形識別,這幾者之間到底有神馬區別呢?要弄清楚他們哪乙個是哪乙個,有時候也真的是容易混淆的。接下來看看這些術語的具體含義是什麼,以及他們與機械人技術有什麼關聯。讀了這篇文章後,你就再也不會被這些概念弄糊塗了!在這篇文章當中,我們分解了機械人視覺的 族譜 以...