我需要組合SIFT和ORB描述影像。
如您所知,SIFT描述符的長度為 128,而ORB描述符的長度為 32。
此刻我要做的是:
- 將描述符重塑
SIFT為 32 長度。例如,將 (135, 128) 描述符重塑為 (540, 32) 描述符 - 連接
SIFT和ORB描述符(因為此時兩者都有 32 長度)
代碼:
sift_kp, sift_desc = sift.detectAndCompute(img,None)
new_sift_desc = sift_desc.reshape((int(128/32) * sift_desc.shape[0], 32))
orb_kp, orb_img_descriptor = orb.detectAndCompute(img,None)
all_descriptors = np.concatenate((new_sift_desc , orb_img_descriptor), axis=0)
我想知道是否有更好的方法來組合這些描述符。
在組合描述符之后,這個想法是all_descriptors為了對另一個影像執行特征匹配。
uj5u.com熱心網友回復:
如果有人感興趣,我最后做的是使用 ORB 來detect獲取影像關鍵點并使用 SIFT 來compute 描述來自該關鍵點的描述符
代碼:
def get_orb_sift_image_descriptors(search_img, idx_img):
# Initiate SIFT detector
sift = cv.SIFT_create()
# Initiate ORB detector
orb = cv.ORB_create()
# Find keypoints with ORB
search_kp_orb = orb.detect(search_img, None)
idx_kp_orb = orb.detect(idx_img, None)
# Compute descriptors with SIFT
search_kp_sift, search_des_sift = sift.compute(search_img, search_kp_orb)
idx_kp_sift, idx_des_sift = sift.compute(idx_img, idx_kp_orb)
return search_des_sift, idx_des_sift
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/445446.html
