目前移動(dòng)設(shè)備通常采用視頻透視式來(lái)實(shí)現(xiàn)增強(qiáng)現(xiàn)實(shí)

?? 由 文心大模型 生成的文章摘要
增強(qiáng)現(xiàn)實(shí)(Augmented Reality,簡(jiǎn)稱AR),是指透過(guò)攝影機(jī)視頻的位置及角度精算并加上圖像分析技術(shù),讓顯示屏上的虛擬世界能夠與現(xiàn)實(shí)世界場(chǎng)景進(jìn)行結(jié)合與交互的技術(shù)。
增強(qiáng)現(xiàn)實(shí)(AR)實(shí)現(xiàn)原理:調(diào)用攝像頭獲取視頻流、 圖像分析識(shí)別、 虛擬物體疊加在視頻畫面上。實(shí)現(xiàn)技術(shù)分為光學(xué)透視式和視頻透視式。
目前移動(dòng)設(shè)備通常采用視頻透視式來(lái)實(shí)現(xiàn)增強(qiáng)現(xiàn)實(shí)(AR)。在Https訪問(wèn)下使用WebRTC(Web Real-Time Communications 一個(gè)支持網(wǎng)頁(yè)瀏覽器進(jìn)行實(shí)時(shí)語(yǔ)音對(duì)話或視頻對(duì)話的技術(shù)) 中的getUserMedia(默認(rèn)前置攝像頭)和enumerateDevices(遍歷可用的多媒體輸入和輸出設(shè)備)來(lái)調(diào)用攝像頭獲取視頻流。
facingMode的兼容性不佳,只能在iOS 11下勉強(qiáng)使用,安卓系統(tǒng)需要另辟蹊徑。折中的方法是使用enumerateDevices遍歷可用設(shè)備,讓用戶主動(dòng)切換至后置攝像頭。
獲取到視頻流之后的工作就是圖像的識(shí)別和追蹤了。視頻流可以看作一幀一幀的圖像,所以處理視頻流的過(guò)程可以理解為圖像處理的過(guò)程。處理視頻流一般有兩種方式:前端處理和后端處理。
即使現(xiàn)在移動(dòng)設(shè)備性能突飛猛進(jìn),目前還是存在前端算力不足和算力不統(tǒng)一。出于性能考慮則會(huì)采用前端傳輸視頻流給后端,后端使用SLAM等算法處理完畢返回結(jié)果到前端。傳輸前可以先處理圖片信息:canvas.toDataURL將圖片轉(zhuǎn)為base64字符串、canvas.toBlob將圖片轉(zhuǎn)為二進(jìn)制、WebGLRenderingContext.readPixels獲取framebuffer的像素值。然后同通過(guò)AJAX或WebSocket傳輸給后端。
隨著蘋果在iOS 11中加入的ARKit、iOS 12中的ARKit2,移動(dòng)設(shè)備運(yùn)算能力逐年提升,增強(qiáng)現(xiàn)實(shí)(AR)的可用性也越來(lái)越高,用途也越來(lái)越廣。除了ARKit和ARCore兩個(gè)移動(dòng)SDK外。Web開發(fā)者也可以使用AR.js、WebARonARKit、WebARonARCore、Three.ar.js等更加高效和便捷的庫(kù)開發(fā)AR應(yīng)用。