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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

移动端AR的适用分析(二)

發布時間:2023/11/27 生活经验 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 移动端AR的适用分析(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

移動端AR的適用分析(二)
1. 單目SLAM難點
2. 視覺SLAM難點
3. 可能的解決思路

單目slam的障礙來自于理論實踐兩個方面。理論障礙可以看做是固有的,無法通過硬件選型或軟件算法來解決的,例如單目初始化和尺度問題。實踐問題包括計算量,視野等,可以依靠選型、算法、軟件設計等方法來優化。不過在同等硬件水平下,優化也存在極限的。比如對O(1)的算法不滿意從而設計O(1/n)的算法似乎是不可能的……

1. 單目SLAM難點
單目的優點是成本低,最大的局限性是測不到空間物體的距離,只有一個圖像。所以早期視覺SLAM也被稱為“只有角度的SLAM”(Bearing Only)。距離在定位中至關重要,雙目和RGBD相機的使用就是為了能夠計算(或測量)這個距離。上一個圖你們直觀體會一下距離的重要性:

很顯然,沒有距離信息,我們不知道一個東西的遠近——所以也不知道它的大小。它可能是一個近處但很小的東西,也可能是一個遠處但很大的東西。只有一張圖像時,你沒法知道物體的實際大小——我們稱之為尺度(Scale)。
可以說,單目的局限性主要在于我們沒法確定尺度,而在雙目視覺、RGBD相機中,距離是可以被測量到的(當然測量也有一定的量程和精度限制)。雙目視覺和人眼類似,通過左右眼圖像的差異來計算距離——也就是所謂的立體視覺(Stereo)。RGBD則是把(通常是紅外)光投射到物體表面,再測量反射的信息來計算距離的。具體原理分結構光和ToF兩種,在此不多做解釋,還是上圖直觀感受一下。

?

距離未知導致單目SLAM存在以下問題:

  1. 需要初始化
  2. 尺度不確定
  3. 尺度漂移

而一旦我們擁有了距離信息,上述幾條就都不是問題,這也是雙目和RGBD存在的意義。下面分別講一下以上幾條。
---------------我是分割線-----------------
1.1 初始化
單目SLAM剛開始時,只有圖像間的信息,沒有三維空間的信息。于是一個基本問題就是:怎么通過兩張圖像確定相機自身運動,并且確定像素點的距離。這個問題稱為單目SLAM初始化問題。一般是通過匹配圖像特征來完成的。匹配好的特征點給出了一組2D-2D像素點的對應關系,但由于是單目,沒有距離信息。初始化的意義是求取兩個圖像間的運動和特征點距離,所以初始化完畢后你就知道這些特征點的3D位置了。后續的相機運動就可以通過3D點-2D點的匹配信息來估計。后續的問題叫PnP(Perspective n Point)。
對,你想的沒錯,單目的流程就是:初始化——PnP——PnP——……

初始化的運動是通過對極幾何來求解的,結構是由三角測量得到的。初始化問題是一個2D-2D求運動結構的問題,比3D-2D的PnP要難(信息更少,更不確定)。我不展開對極幾何求運動的原理,但是理解它,對理解單目局限性是很有幫助的。如題主感興趣,請看Multiple View Geometry第8章。如果在知乎上寫,會占掉很大的篇幅。

1.2 運動問題
對極幾何最終會分解一個本質矩陣(Essential Matrix)(或基本矩陣(Fundametal Matrix))來得到相機運動。但分解的結果中,你會發現對平移量乘以任意非零常數,仍滿足對極約束。直觀地說,把運動和場景同時放大任意倍數,單目相機仍會觀察到同樣的圖像!這種做法在電影里很常見。例用用相機近距離拍攝建筑模型,影片看起來就像在真實的高樓大廈一樣(比如奧特曼打怪獸實際是兩個穿著特攝服裝的演員,多么無情的現實)。
這個事實稱為單目的尺度不確定性(Scale Ambiguity)。所以,我們會把初始化的平移當作單位1,而之后的運動和場景,都將以初始化時的平移為單位。然而這個單位具體是多少,我們不知道(攤手)。并且,在初始化分解本質矩陣時,平移和旋轉是在一起的。如果初始化時只有旋轉而沒有平移,初始化就失敗了——所以業界有種說法,叫做“看著一個人端相機的方式,就知道這個人有沒有研究過SLAM”。有經驗的人會盡量帶平移,沒經驗的都是原地打轉……
所以,從應用上來說,單目需要一個帶平移的初始化過程,且存在尺度不確定問題,這是它理論上的障礙。

1.2 結構問題
由于單目沒有距離信息,所有特征點在第一次出現時都只有一個2d投影,實際的位置可能出現在光心與投影連線的任意一處。只有在相機運動起來以后,才可能通過三角測量,估計特征點的距離。
1.3 尺度漂移
用單目估計出來的位移,與真實世界相差一個比例,叫做尺度。這個比例在初始化時確定,但單純靠視覺無法確定這個比例到底有多大。進而,由于SLAM過程中噪聲的影響,這個比♂例還不是固定不變的。當你用單目SLAM,會發現,咦怎么跑著跑著地圖越來越小了

?

這種現象在當前state-of-the-art的單目開源方案出亦會出現,修正方法是通過回環檢測。但是有沒有出現回環,則要看實際的運動方式。所以……

2. 視覺SLAM的困難
雙目相機和RGBD相機能夠測量深度數據,于是就不存在初始化和尺度上的問題了。但是,整個視覺SLAM的應用中,存在一些共同的困難,主要包括以下幾條:

1.手機處理速度
2.手機卷簾相機
3.人體移動速度
4.手機移動方向
5.多款相機參數難以統一(android)

目前市面上的android手機多種多樣,硬件越來越強大,使用人數也是最多,同時也有前人經驗將orb-SLAM2移植到手機上的經驗,移植過的人因該都知道,使用的時候,加載詞袋模型需要花費20s時間,變成二進制文件也是緩慢,然后出來效果是每秒11(記不太請),慢的可以,然后果斷放棄了。

一個徹底的方式:

然后 開始在手機端重寫幾乎所有算法,框架仿照ORB-SLAM2,以用來更加容易的適用手機的所有的特性,若是想要達到實時效果或者稍有延遲,只有兩種路可以選擇 1,降低圖像的采樣率 2,增加手機處理速度,面對需要用在實際中的項目,只有采用謙前者,果斷采用每秒10幀采樣,并對圖像進行壓縮,并使用多線程處理,結果效果不好,采樣率只有再降~,采樣降低勢必造成一些精度損失,只能使用其他傳感器進行彌補,所以走到了多傳感器融合的道路。

然后就是手機相機了,卷簾相機,確實是個頭疼的問題,走快了,圖像花的不行,發生嚴重畸變,所有自己就寫了個算法對可以用和不可用進行處理,并完善采樣過程中的不足,但是依然沒有徹底解決,但是解決了不少。

其中一些難點的解決思路。 1. 計算量大:我們從優化算法(采用FAST+SSD提取特征點),使用simd指令集,通過內存換時間這三方面來提升。 2. 單目初始化:我們結合了IMU來解決,首先找到一個平面,然后再從這個平面上來構建地圖,這樣就不需要平移相機了。 3. 純旋轉:單目通過算法可以解決一部分,可參考《Robust Keyframe-based Monocular SLAM for Augmented Reality 》 ,里面寫得很詳細。 4. 遮擋和動態物體,特征缺失、動態光源和人物的干擾:首先把屏幕分成區域,使跟蹤的特征點均勻分布在這些區域里,再在算法里面進行檢測,那么一直在運動的特征點就會被排除掉(加入深度信息后,這個特點胡得到一個很有效的解決,在208年的SLAM大會上CAD&CG國家重點實驗室的研究成果顯示,深度學習融合深度可以有效地解決這個問題。?5. 回環檢測:類似ptam處理,為每一個關鍵幀創建了一個Small Blurry Image,在回環檢測線程里,隨時比對兩個SBI是否一致,來判斷是否回環。 6. 尺度問題:我們采用的是相對尺度,單目+IMU可以解決這個問題,ARKit的絕對尺度做得很不錯.

手機移動方向,手機移動方向是個大問題,實際用的時候不能總是手拿著相機不動吧,不現實,Tango不知道怎么做到的,一直研究。要注意:回環檢測一定要適合自己系統重寫!!,識別不同場景,目前開源的所有算法幾乎都嘗試過,不是前期庫加載太慢,就是效率太低,無法使用!!優化算法可以研究后進行移植,適合自己的,我用的是g2o。再就是手機花費最多的時間是mapping過程,這個過程是將手機形成的三維點進行對幀之間的對照,也就是說是尋找一個三維點被那幾個幀看到了,從而進行優化,一定要注意!!!這里最好解決的就是手機參數了,簡單粗暴,每個手機都校準一下唄,然后寫到數據庫中,這里就懷念iphone了,就那么幾種型號,怪不的好多做視覺的都使用iphone補充: 注意尺度問題,我推薦使用IMU進行對尺度補充,可以降低計算成本!!

2.1 運動太快

運動太快可能導致相機圖像出現運動模糊,成像質量下降。傳統卷簾快門式的相機,在運動較快時將產生明顯的模糊現象。不過現在我們有全局快門的相機了,即使動起來也不會模糊的相機,只是價格貴一些。

(全局快門相機在拍攝高速運動的物體仍是清晰的)

運動過快的另一個結果就是兩個圖像的重疊區(Overlap)不夠,導致沒法匹配上特征。所以視覺SLAM中都會選用廣角、魚眼、全景相機,或者干脆多放幾個相機。

2.2 相機視野不夠

如前所述,視野不夠可能導致算法易丟失。畢竟特征匹配的前提是圖像間真的存在共有的特征。

2.3 計算量太大

基于特征點的SLAM大部分時間會花在特征提取和匹配上,所以把這部分代碼寫得非常高效是很有幫助的。這里就有很多奇技淫巧可以用了,比如選擇一些容易計算的特征/并行化/利用指令集/放到硬件上計算等等,當然最直接的就是減少特征點啦。這部分很需要工程上的測試和經驗。總而言之特征點的計算仍然是主要瓶頸所在。要是哪天相機直接輸出特征點就更好了。

2.4 遮擋

相機可能運動到一個墻角,還存在一些邪惡的開發者刻意地用手去擋住你的相機。他們認為你的視覺SLAM即使不靠圖像也能順利地工作。這些觀念是毫無道理的,所以直接無視他們即可。

2.5 特征缺失、動態光源和人物的干擾

老實說SLAM應用還沒有走到這一步,這些多數是研究論文關心的話題(比如直接法)。現在AR能夠穩定地在室內運行就已經很了不起了。

3. 可能的解決思路

前邊總結了一些單目視覺可能碰到的困難。我們發現大部分問題并不能在當下的視覺方案能夠解決的。你或許可以通過一些工程技巧加速特征匹配的過程,但像尺度、遮擋之類的問題,明顯無法通過設計軟件來解決。所以怎么辦呢?——既然視覺解決不了,那就靠別的來解決吧。畢竟一臺設備上又不是只有一塊單目相機。更常見的方案是,用視覺+IMU的方式做SLAM。廣角單目+IMU被認為是一種很好的解決方案。它價格比較低廉,IMU能在以下幾點很好地幫助視覺SLAM:

  • IMU能幫單目確定尺度
  • IMU能測量快速的運動
  • IMU在相機被遮擋時亦能提供短時間的位姿估計

所以不管在理論還是應用上,都出現了一些單目+IMU的方案[2,3,4]。眾所周知的Tango和Hololens亦是IMU+單目/多目的定位方式(在2018年全國slam論壇見到前TANGO時表示,這個問題是另一種底層技術,特點描述為低幀運行,高幀顯示的技術。用Tango玩MC,缺點是蓋的房子尺寸和真實世界一樣。蓋二樓你就得真跑到樓上去蓋——這怎么造圓明園?)

?

(這貨就是靠后邊這魚眼+IMU做跟蹤的)
reference:

  1. ?Strasdat, Montiel, A.J.Davison, Scale drift-aware large scale monocular SLAM, RSS 2006.
  2. ?Leutenegger et. al., Keyframe-based visual-inertial odometry using nonlinear optimization, IJRR 2015.
  3. ?Huang Guoquan, Kaess and Leonard, Towards Consistent Visual-Inertial Navigation, ICRA 2014.
  4. ?Li Mingyang and Mourikis, High-precision, consistent EKF-based visual-inertial odometry, IJRR, 2013.
  5. ORB-SLAM: a Versatile and Accurate
  6. Monocular SLAM System
  7. [Monocular Visual-Inertial State Estimation for Mobile Augmented Reality
  8. A Multi-State Constraint Kalman Filter for Vision-aided Inertial Navigation
  9. Robust Keyframe-based Monocular SLAM for Augmented Reality
  10. Parallel Tracking and Mapping on a Camera Phone
  11. gaoxiang視覺SLAM十四講

總結

以上是生活随笔為你收集整理的移动端AR的适用分析(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。