日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

SIFT和SURF的替换算法——ORB (Oriented FAST and Rotated BRIEF 快速定向和旋转)

發(fā)布時(shí)間:2023/11/27 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SIFT和SURF的替换算法——ORB (Oriented FAST and Rotated BRIEF 快速定向和旋转) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

SIFT和SURF的替代算法——ORB (Oriented FAST and Rotated BRIEF 快速定向和旋轉(zhuǎn)

    • 1. 效果圖
    • 2. 源碼
    • 參考

1. 用于關(guān)鍵點(diǎn)檢測(cè)和描述的SIFT(Scale-Invariant Feature Transform 尺度不變特征變換),但它相對(duì)較慢

2. 加速版的SIFT——SURF(Speeded-Up Robust Features 加速魯棒特征)

3. SURF的優(yōu)化版——BRIEF(Binary Robust Independent Elementary Features 二進(jìn)制魯棒獨(dú)立基本特征)

這篇博客將繼續(xù)介紹特征檢測(cè)的算法:SIFT和SURF的替換算法,FAST和BRIEF的融合算法——ORB (Oriented FAST and Rotated BRIEF 快速定向和旋轉(zhuǎn)) 。

  • ORB比SURF和SIFT快得多,ORB描述符比SURF工作得更好,是用于全景拼接等低功耗設(shè)備的理想選擇。

  • 在計(jì)算成本、匹配性能以及主要專利方面,ORB是SIFT和SURF的良好替代品。SIFT和SURF是專利算法,需要為它的使用付費(fèi)。但ORB不需要。

  • ORB基本上是快速關(guān)鍵點(diǎn)檢測(cè)器和簡(jiǎn)短描述符的融合,經(jīng)過許多修改以提高性能。首先利用FAST算法尋找關(guān)鍵點(diǎn),然后利用Harris角點(diǎn)測(cè)度在關(guān)鍵點(diǎn)中找到前N個(gè)點(diǎn)。它還使用金字塔生成多尺度特征。另一方面,FAST不能計(jì)算方向以及旋轉(zhuǎn)不變性,作者均作出了優(yōu)化和修改。

  • ORB在所有可能的二進(jìn)制測(cè)試中進(jìn)行貪婪搜索,以找到方差高、均值接近0.5且不相關(guān)的測(cè)試。結(jié)果稱為rBRIEF。對(duì)于描述符匹配,對(duì)傳統(tǒng)LSH進(jìn)行了改進(jìn),使用多探針LSH。

1. 效果圖

原始圖如下:

ORB 只繪制關(guān)鍵點(diǎn),忽略大小和方向,效果圖如下:

ORB繪制關(guān)鍵點(diǎn),大小和方向效果圖如下:

2. 源碼

# OpenCV中的ORB (Oriented FAST and Rotated BRIEF) 快速定向和旋轉(zhuǎn)。
#
# ORB比SURF和SIFT快得多,ORB描述符比SURF工作得更好,是用于全景拼接等低功耗設(shè)備的理想選擇。
# 在計(jì)算成本、匹配性能以及主要專利方面,ORB是SIFT和SURF的良好替代品。SIFT和SURF是專利算法,需要為它的使用付費(fèi)。但ORB不需要。
# 
# ORB基本上是快速關(guān)鍵點(diǎn)檢測(cè)器和簡(jiǎn)短描述符的融合,經(jīng)過許多修改以提高性能。首先利用FAST算法尋找關(guān)鍵點(diǎn),然后利用Harris角點(diǎn)測(cè)度在關(guān)鍵點(diǎn)中找到前N個(gè)點(diǎn)。它還使用金字塔生成多尺度特征。另一方面,FAST不能計(jì)算方向以及旋轉(zhuǎn)不變性,作者均作出了優(yōu)化和修改。
# ORB在所有可能的二進(jìn)制測(cè)試中進(jìn)行貪婪搜索,以找到方差高、均值接近0.5且不相關(guān)的測(cè)試。結(jié)果稱為rBRIEF。對(duì)于描述符匹配,對(duì)傳統(tǒng)LSH進(jìn)行了改進(jìn),使用多探針LSH。import cv2
from matplotlib import pyplot as pltorigin = cv2.imread('images/simple.jpg')
# origin = cv2.imread('images/simple.jpg', 0)
plt.imshow(cv2.cvtColor(origin, cv2.COLOR_BGR2RGB))
plt.xticks([])
plt.yticks([])
plt.title('origin')
plt.show()img = origin.copy()# 初始化ORB檢測(cè)器
orb = cv2.ORB_create()# 使用ORB尋找關(guān)鍵點(diǎn)
# print(orb.detectAndCompute(img, None))
kp = orb.detect(img, None)# 計(jì)算ORB描述符
kp, des = orb.compute(img, kp)# 僅繪制關(guān)鍵點(diǎn)位置,而忽略圓的大小和方向
img2 = cv2.drawKeypoints(img, kp, img, color=(0, 255, 0), flags=0)
plt.imshow(cv2.cvtColor(img2, cv2.COLOR_BGR2RGB))
plt.xticks([])
plt.yticks([])
plt.title('orb res')
plt.show()# 繪制關(guān)鍵點(diǎn)位置、大小和方向
img2 = cv2.drawKeypoints(img, kp, img, color=(0, 255, 0), flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
plt.imshow(cv2.cvtColor(img2, cv2.COLOR_BGR2RGB))
plt.xticks([])
plt.yticks([])
plt.title('orb size orientation res')
plt.show()

參考

  • https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/py_orb/py_orb.html#orb

總結(jié)

以上是生活随笔為你收集整理的SIFT和SURF的替换算法——ORB (Oriented FAST and Rotated BRIEF 快速定向和旋转)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。