天天看點

OpenCV | ORB特征檢測與描述

ORB (Oriented FAST and Rotated BRIEF)

ORB基本上是FAST關鍵點檢測器和Brief描述符的融合,并進行了許多修改以增強性能。首先,它使用FAST查找關鍵點,然後應用哈裡斯角點度量在其中找到前N個點。它還使用金字塔生成多尺度特征。但是一個問題是,FAST無法計算方向。那麼旋轉不變性呢?作者提出以下修改。

它計算角點位于中心的貼片的強度權重質心。從此角點到質心的矢量方向确定了方向。為了改善旋轉不變性,使用x和y計算矩,它們應該在半徑為的圓形區域中,其中更新檔的大小。

現在,對于描述符,ORB使用Brief描述符。但是我們已經看到,BRIEF的旋轉性能很差。是以,ORB所做的就是根據關鍵點的方向“引導” BRIEF。對于位置的任何二進制測試 功能集,請定義一個矩陣,其中包含這些像素的坐标。然後使用更新檔的方向,找到其旋轉矩陣并旋轉以獲得轉向(旋轉)版本。

import numpy as np
import cv2
from matplotlib import pyplot as plt
 
img = cv2.imread('molecule.png',0)
 
# Initiate STAR detector
orb = cv2.ORB_create()
 
# find the keypoints with ORB
kp = orb.detect(img,None)
 
# compute the descriptors with ORB
kp, des = orb.compute(img, kp)
 
# draw only keypoints location,not size and orientation
img2 = cv2.drawKeypoints(img,kp,color=(0,255,0), flags=0,outImage=None)
 
cv2.imwrite('sift_keypoints.jpg',img)
 
plt.imshow(img2),plt.show()      
OpenCV | ORB特征檢測與描述

原圖

OpenCV | ORB特征檢測與描述

繼續閱讀