蘋果在iOS 12中Measure到底是怎麼做到測量長度的?

尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️

加入LINE好友

ARkit尺子背後的原理是SLAM,蘋果手機上的SAM是通過視覺慣性測量系統(VIO)來做到的。而視覺慣性測量系統(VIO)不只是一套算法,還結合了蘋果手機的相機和各種傳感器。所以深入下去,還是比較複雜的。

本文來自 雪花新聞,本文標題:蘋果在iOS 12中Measure到底是怎麼做到測量長度的? ,轉載請保留本聲明!

if (window.location.host != ‘www.xuehua.us’){window.location.href=’https://www.xuehua.us/2018/08/01/%E8%8B%B9%E6%9E%9C%E5%9C%A8ios-12%E4%B8%ADmeasure%E5%88%B0%E5%BA%95%E6%98%AF%E6%80%8E%E4%B9%88%E5%AE%9E%E7%8E%B0%E6%B5%8B%E9%87%8F%E9%95%BF%E5%BA%A6%E7%9A%84%EF%BC%9F’;}蘋果在iOS 12中Measure到底是怎麼實現測量長度的?-雪花新聞

首先,我們從這里使用計算機視覺的基本解釋開始。 iPhone的相機拍攝一張可以產生圖像的照片,ARKit可以識別該圖像中的特徵。然後再拍攝一張照片,再次確定圖像特徵。然後將第一張圖像與第二張圖像進行比較,並進行一些計算以確定特徵之間的變化。隨著相機繼續拍攝圖像,一遍又一遍地執行此操作,iPhone就可以追蹤某些「已知特徵」。這和人眼背後的原理基本一致。

人眼是一個天然的高級光學系統。結構非常複雜。形象的說,人眼像一架自動錄影機,水晶體如同錄影機的物鏡,能夠在人的神經器官的控制下自動調焦,瞳孔如同光圈,視網膜如同相機底片,接受物體的 影像信息。

人眼感知景深的機制給了人們啟發。經過研究發現由相機在兩個不同的視角下拍攝的兩幅圖片,如果知道現實物點 P 在兩幅圖片中的對應關係, 就可以精確計算出 P 點的三維坐標信息。可以用針孔模型來近似描述相機的成像機制,如圖所示。 M 為現實場景中的一物點,O為相機的光心, O’ 為光心在像平面上的投影,OO’為相機光軸,M ‘為物點 M 在像平面 P 上的像點。

蘋果在iOS 12中Measure到底是怎麼實現測量長度的?-雪花新聞

當你用眼睛看東西的時候,你的大腦會立即計算出你的右眼到左眼的視差,並確定深度: 視野中不同物體的距離。現在,有些對象可以知道大概的大小,也可以用來判斷周圍事物的大致範圍 – 這些是被跟蹤的「已知特徵」。重要的是你的大腦對這兩幅圖像的差異進行計算。基本上這是三角測量 – 右眼看到某種方式,左眼看到一個稍微不同的方式,你的大腦知道你的眼睛之間的距離,大致的焦點角度和圖像的差異,可以跟蹤「已知特徵」,從而可以計算距離並了解3D空間。

當iPhone相機開機時,它沒有兩個不同的圖像來計算距離。但是,在拍攝第一張圖像之後的一瞬間,確實有第二張圖像。由於來自iPhone加速度儀的數據,它還可以可能iPhone錄影頭3D位置和目標的差異 – 從第一幅圖像到第二幅圖像。現在我們回到正在追蹤的那些「已知特徵」。對於每個圖像,iPhone不僅僅提取一個特徵,而是盡可能多地提取特徵。除了對圖像中的每個特徵進行三角測量之外,還會比較每個特徵與圖像中其他特徵之間的差異。所以現在,就像你的大腦一樣,iPhone有兩種不同的視角,知道近似的焦點角度,知道鏡頭位置之間的距離,跟蹤「已知特徵」及其相互之間的關係。從這個角度來看,iPhone可以非常好地計算每個圖像特徵如何與其他特徵之間差異、關係,從而基本上產生空間的3D映射,從而能夠計算一點到另一點之間的距離,這就是AR尺子背後的基本原理。

大家可以在App Store搜尋:Fancy AR 尺子,下載體驗一下。實際測量結果與卷尺之間的誤差在2%左右,已經非常不錯了。

VIO算法並不是蘋果發明的,蘋果的牛逼之處就在於其深度結合iPhone的硬件特性,對VIO算法進行了高度優化,計算結果非常精準,誤差非常小。一個微小的錯誤,在畫面每秒刷新 1000 次的情況下,持續幾秒鐘後可能會導致 30% 甚至更大的計量尺度誤差。而蘋果 ARKit 可以把誤差下降到 10% 以下。