ORB 特征點提取

FAST關鍵點

選取像素p,假設它的亮度為Ip???. ?

設置一個閾值T(比如Ip20%);

以像素p為中心,選取半徑為3的圓上的16個像素點;

假如選取的圓上,有連續的N個點的亮度大于Ip+T或小于Ip-T,那么像素p可以被認為是特征點;?

循環以上4步,對每一個像素執行相同操作。

FAST 描述子

論文:BRIEF: Binary?Robust?Independent?Elementary?Features

BRIEF算法的核心思想是在關鍵點P的周圍以一定模式選取N個點對,把這N個點對的比較結果組合起來作為描述子。為了保持踩點固定,工?程上采用特殊設計的固定的pattern來做

灰度質心法

原始的FAST關鍵點沒有方向信息,這樣當圖像發生旋轉后,brief描述子也會發生變化,使得特征點對旋轉不魯棒

解決方法:orientated FAST

使用灰度質心法計算特征點的方向,

什么是灰度質心法?

下面重點說一下如何計算灰度質心。

以上是灰度質心法求關鍵點旋轉角度的原理。

在一個圓內計算灰度質心

下圖P為幾何中心,Q為灰度質心

思考:為什么是圓?不是正方形?

ORBSLAM里面是先旋轉坐標再從圖像中采點提取,并不是先取那塊圖像再旋轉,見computeOrbDescriptor函數里的這個表達式

#define?GET_VALUE(idx) \ ???center[cvRound(pattern[idx].xb?+?pattern[idx].ya)step?+?\ ??//y'step???????cvRound(pattern[idx].xa?-

pattern[idx].yb)]

會導致下方采集點的時候綠色和黃色部分就是不同的像素

下面求圓內的坐標范圍

umax1/4圓的每一行的u軸坐標邊界(下圖中橙色線段FG

vmax = cvFloor(HALF_PATCH_SIZE * sqrt(2 .f) / 2 + 1) ; vmin = cvCeil(HALF_PATCH_SIZE * sqrt(2 .f) / 2) ;
// 對應從D到B的紅色弧線,umax坐標從D到C for (v = 0 ; v <= vmax; ++v)
umax[v] = cvRound(sqrt(hp2 - v * v)) ;
// 對應從B到E的藍色弧線,umax坐標從C到A
for (v = HALF_PATCH_SIZE , v0 = 0 ; v >= vmin ; --v) {
while (umax[v0] == umax[v0 + 1]) ++v0 ;
umax[v] = v0 ;
++v0 ;
}

?

參考:

認真的虎ORBSLAM2源碼解讀(四):圖解ORB特征提取ORBextractor_orbextractor 提取特征-CSDN博客?

https://www.cnblogs.com/wall-e2/p/8057448.html

特征點角度計算

steer brief

v 繞 原點旋轉θ 角,得到點v’,假設?v點的坐標是(x, y) ,那么可以推導得到 v’點的坐標(x’, y’)

參考:

https://www.cnblogs.com/zhoug2020/p/7842808.html

IC_Angle 計算技巧

在一個圓域中算出m10x坐標)和m01y坐標),計算步驟是先算出中間紅線的m10,然后在平行于x軸算出m10m01?,一次計算相當?于圖像中的同個顏色的兩個line

為什么要重載小括號運算符 operator()

可以用于仿函數(一個可以實現函數功能的對象)

仿函數(functor)又稱為函數對象(function?object)是一個能行使函數功能的類。仿函數的語法幾乎和我們普通的函數調用一樣,不過作?為仿函數的類,都必須重載operator()運算符

1.仿函數可有擁有自己的數據成員和成員變量,這意味著這意味著仿函數擁有狀態。這在一般函數中是不可能的。?2.仿函數通常比一般函數有更好的速度。

擴展閱讀

C++operator()(重載小括號運算符)_c++的bool operator()-CSDN博客

金字塔的計算

圖像金字塔對應函數為:ORBextractor::ComputePyramid

特征點數量的分配計算

參考:https://zhuanlan.zhihu.com/p/61738607

使用四叉樹均勻分布特征點

ORB特征提取策略對ORB-SLAM2性能的影響:ORB-SLAM2中的ORB特征提取方法相對于OpenCV中的方法,提高了ORB-SLAM2的軌跡精?度和魯棒性。增加特征提取的均勻性可以提高系統精度,但是似乎會降低特征提取的重復性。

參見:https://zhuanlan.zhihu.com/p/57235987?對應函數 DistributeOctTree

. ?如果圖片的寬度比較寬,就先把分成左右w/h份。一般的640×480的圖像開始的時候只有一個node

. ?如果node里面的點數>1,把每個node分成四個node,如果node里面的特征點為空,就不要了,刪掉。?. ?新分的node的點數>1,就再分裂成4node。如此,一直分裂。

. ?終止條件為:node的總數量> [公式] ,或者無法再進行分裂。?. ?然后從每個node里面選擇一個質量最好的FAST點。

參考:https://zhuanlan.zhihu.com/p/61738607?ExtractorNode::DivideNode

高斯處理??

特征點去畸變

近點和遠點

在雙目或RGB-D模式下,特征點對應的深度值小于40倍的雙目/RGB-D基線稱之為近點,否則稱之為遠點。?近點特征點對三角化得到的三維點坐標比較準確,可以提供旋轉、平移、尺度信息。

遠點特征點僅能夠提供相對準確的旋轉信息,無法提供比較準確的尺度和平移信息。只有當多個視角下多次觀測到的遠點我們才會考慮三角?化。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/41716.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/41716.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/41716.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Redis 八股文

標題 1. Redis主從同步原理&#xff1a;判斷下線的條件:故障轉移如何保證Sentinel高可用 1. Redis主從同步原理&#xff1a; 1、slave執行命令向master建立連接 2、master執行bgsave&#xff08;后臺存儲&#xff09;&#xff0c;生成rdb快照&#xff08;redis備份方式&#x…

FreeRTOS中vTaskDelay 和 xTaskDelayUntil 的區別?

vTaskDelay 和 xTaskDelayUntil 是 FreeRTOS 提供的兩種不同任務延遲函數&#xff0c;各自有其適用的場景和優缺點。vTaskDelay 適用于簡單的延遲操作&#xff0c;而 xTaskDelayUntil 提供了精確的周期控制能力。在設計 FreeRTOS 應用程序時&#xff0c;根據任務的時間要求選擇…

日志自動分析-Web---360星圖GoaccessALBAnolog

目錄 1、Web-360星圖(IIS/Apache/Nginx) 2、Web-GoAccess &#xff08;任何自定義日志格式字符串&#xff09; 源碼及使用手冊 安裝goaccess 使用 輸出 3-Web-自寫腳本&#xff08;任何自定義日志格式字符串&#xff09; 4、Web-機器語言analog&#xff08;任何自定義日…

游戲AI的創造思路-技術基礎-強化學習(1)

我們“強化”一下機器的“學習”&#xff0c;讓機器變得更強~~~~ 目錄 1. 強化學習的定義 2. 發展歷史 3. 強化學習的基本概念和函數 3.1. 基本概念和函數 3.1.1. 基本概念和函數 3.1.2. Q函數 3.1.2.1. 定義與作用 3.1.2.2. 數學表示 3.1.2.3. 更新規則 3.1.2.4. 算…

AI時代算法面試:揭秘高頻算法問題與解答策略

三種決策樹算法的特點和區別 ID3算法&#xff1a;基本的決策樹算法&#xff0c;適用于簡單的分類問題C4.5算法&#xff1a;改進了ID3算法&#xff0c;適用于更復雜的分類問題&#xff0c;可以處理連續型數據和缺失值CART算法&#xff1a;更加通用的決策樹算法&#xff0c;適用于…

云服務器在 Web 應用程序中作用

云服務器在Web應用程序中扮演著至關重要的角色&#xff0c;它不僅是現代Web應用程序的基石&#xff0c;還是推動業務發展和提升用戶體驗的關鍵技術之一。下面將詳細探討云服務器在Web應用程序中的重要作用及其優勢。 首先&#xff0c;云服務器為Web應用程序提供了高度可擴展的…

【postgresql】索引

見的索引類型&#xff1a; B-tree 索引&#xff1a;這是最常用的索引類型&#xff0c;適用于大多數查詢。B-tree索引可以高效地處理范圍查詢。 Hash 索引&#xff1a;適用于等值查詢&#xff0c;但不支持范圍查詢。 GiST 索引&#xff1a;通用搜索樹&#xff08;GiST&#xf…

Flask自定義命令

Flask自定義命令 一、老版Flask自定義命令 Flask 1.x 和 2.x 版本 在Flask的老版本中&#xff0c;可以通過 flask-script 擴展來添加自定義命令。 安裝所需庫&#xff1a; pip3 install Flask-Script2.0.3 pip3 install flask1.1.4 pip3 install markupsafe1.1.1在 Flask 應…

懷念舊的Windows聲音?以下是如何在Windows 11中恢復它們

如果你渴望舊的Windows聲音,希望能在Windows 11上再次聽到,那你就很幸運了。我們將向你展示如何下載必要的聲音包并創建復古的聲音方案。 如何獲取舊Windows聲音的聲音包 你需要做的第一件事是下載一個包含舊Windows版本聲音的聲音包。此外,請確保它包含的每個聲音都是WAV…

在 Vue 項目中使用 FullCalendar

1、先安裝依賴包&#xff0c;根據自己的需求安裝&#xff0c;建議使用cnpm安裝&#xff0c;不然會很慢有時候會出現安裝不上的情況。 npm i fullcalendar/vue --save npm i fullcalendar/core --save // 在月視圖或日視圖中操作事件 npm i fullcalendar/daygrid --save // 在…

記錄discuz修改用戶的主題出售價格

大家好&#xff0c;我是網創有方的站長&#xff0c;今天遇到了需要修改discuz的主題出售價格。特此記錄下 方法很簡單&#xff1a; 進入用于組-》選擇論壇-》批量修改

【shell編程小項目】

目錄 一、項目拓撲二、要求三、shell編程 一、項目拓撲 二、要求 環境準備&#xff1a; 準備兩個虛擬機&#xff0c;按照環境配置好對應的 IP 地址和對應的主機名和 SSH 密鑰登錄在 workstation.exam.com 節點實現如下需求&#xff1a; 1、編寫 Shell 腳本&#xff0c;要求代碼…

0803實操-Windows Server系統管理

Windows Server系統管理 系統管理與基礎配置 查看系統信息、更改計算機名稱 網絡配置 啟用網絡發現 Windows啟用網絡發現是指在網絡設置中啟用一個功能&#xff0c;該功能允許您的計算機在網絡上識別和訪問其他設備和計算機。具體來說&#xff0c;啟用網絡發現后&#xff…

Qt5.9.9 關于界面拖動導致QModbusRTU(QModbusTCP沒有測試過)離線的問題

問題鎖定 參考網友的思路&#xff1a; Qt5.9 Modbus request timeout 0x5異常解決 網友認為是Qt的bug&#xff0c; 我也認同&#xff1b;網友認為可以更新模塊&#xff0c; 我也認同&#xff0c; 我也編譯了Qt5.15.0的code并成功安裝到Qt5.9.9中進行使用&#xff0c;界面拖…

Laravel文件存儲:云端數據管理的藝術

標題&#xff1a;Laravel文件存儲&#xff1a;云端數據管理的藝術 Laravel框架提供了一個強大的文件存儲抽象層&#xff0c;允許開發者以一致的方式與本地磁盤或云存儲服務&#xff08;如Amazon S3&#xff09;進行交互。文件存儲系統簡化了文件上傳、下載、移動和刪除等操作&…

Java面試之Java多線程常見面試題

1、什么是線程&#xff1f; 定義&#xff1a;線程是程序中的執行路徑&#xff0c;是操作系統進行調度的基本單位。它允許程序并發執行多個任務&#xff0c;提高程序的響應速度和資源利用率。 2、為什么需要線程&#xff1f; 1、提高并發性&#xff1a;線程允許程序同時執行多…

Mybatis原生使用

一、MyBatis初次使用 2.1 環境搭建步驟 MyBatis 的 API &#xff1a; https://mybatis.org/mybatis-3/zh/getting-started.html 1.引入依賴包 2.準備核心配置件 db.properties drivercom.mysql.cj.jdbc.Driver urljdbc:mysql://123.57.206.19:3306/demo?useUnicodetrue&am…

如何選擇最佳的照片和視頻恢復軟件

您是否意外從硬盤或 USB 卡中刪除了照片或視頻&#xff1f;最好的視頻和照片恢復軟件可以幫到您&#xff01;如果您一直在尋找最好的照片恢復軟件&#xff0c;那么您來對地方了。本文將分享一些幫助您找到最佳視頻恢復軟件的提示。 重要提示&#xff1a;事實&#xff1a;媒體文…

知識圖譜嵌入

文章目錄 知識圖譜嵌入的概念知識圖譜嵌入的優點知識圖譜嵌入的主要方法知識圖譜嵌入的應用知識圖譜嵌入的概念 為了解決前面提到的知識圖譜表示的挑戰,在詞向量的啟發下,研究者考慮如何將知識圖譜中的實體和關系映射到連續的向量空間,并包含一些語義層面的信息,可以使得在…

【LabVIEW學習篇 - 3】:程序結構——順序結構、for循環、while循環

文章目錄 順序結構案例一案例二 for循環while循環 順序結構 LabVIEW中的順序結構是一種常用的控制結構&#xff0c;用于按順序執行程序的不同部分。順序結構在程序中按照從左到右的順序依次執行各個子結構&#xff0c;類似于傳統的文本編程語言中的順序執行。 案例一 案例一…