AR算法原理在計算機視覺中的應用

2016年,一款名爲《Pokémon GO》的遊戲出如今大衆視野,怒刷各大遊戲排行榜。極具趣味性和科技感的AR技術效果瞬間火爆全球。接着AR技術被普遍用在各大互聯網公司APP的營銷場景中,其中最多的即是AR識別和追蹤。但一段時間內,真正掌握核心技術的國內廠家並很少,對應出現了提供AR識別SDK小公司的創業機會。html

那麼,這些技術背後的原理是什麼?本文會從圖像處理、特徵檢測、特徵點匹配、圖像變換匹配和追蹤算法等方面給你進行深刻淺出的技術展示,讓AR識別技術再也不成爲難以逾越的技術壁壘。最後也會跟你們聊聊,天貓營銷平臺技術,是如何探索新技術在營銷領域的運用,與商業進行緊密結合的。算法


AR技術歷來不是單獨的一門學科領域,它是衆多技術學科集成在一塊兒的一個應用方向。如圖所示,除了一些圖像處理基礎及AR硬件相關算法外,它所依託的最重要兩個領域是計算機視覺和機器學習,而這背後就人工智能這個大領域。咱們會以計算機視覺理論做爲基礎,來說講AR的技術。服務器

1. 基礎知識準備

首先科普兩個基礎知識,咱們先來講說圖像的表示和色彩模型。數據結構

二維圖像模型,定義一個二維圖像的模型表示成z = I(x, y),x、y爲二維圖像上的像素點座標值,z爲此像素點的色彩值,若是使用的是RGB色彩模型,那z值就是以紅、綠、藍三個值定義的數據,好比紅色爲(255,0,0)。通常圖片處理不少採用單通道即灰度值,那就是0~255之間的一個表示灰度的值,彩色圖片也能夠由必定公式變換到灰度空間裏。後續的圖像算子操做(如卷積等)均是在此模型上進行相信數值計算。這個模型很簡單,下面要介紹的一個模型就有點難了。框架

計算機視覺的最重要模型:透視照相機模型,也叫小孔攝像機模型。這個模型來源於真實世界的成像原理,從古人發現的小孔成像、到凸透鏡成像、一直到人眼成像結構的發現。機器學習

人們從發現的原理中受到啓發,確立了由4個座標系組成的透視照相機模型。它描述了現實世界的物體從世界座標系、相機座標系、圖像座標系到像素座標系之見轉換的位置關係,並對應到多個矩陣的計算上。AR算法所用到的計算機視覺技術,不少都是現實世界的物體與圖像平面上的變換(這裏通常稱爲單應性變換,後文會用到),因此這個模型就成爲了AR算法中最基本的模型,你們內心要這個概念。函數

AR算法的核心技術:識別追蹤

AR算法有不少不一樣種類,其中目前在手機端使用的最重要的就是識別和追蹤。基本上,去年以來的全部在手機APP上宣稱的AR功能都離不開此技術。性能

如圖我廠去年的一些營銷活動,「全民掃錢」領優惠券、掃實物瓶子出現相關3D動畫,識別標記圖片找紅包等,都使用了圖像的識別或者追蹤技術。學習

AR識別追蹤的流程

AR識別追蹤,根據所需識別的圖像內容,大體分爲兩個技術流派:Marker based AR 以及MarkerLess AR。Marker識別是使用一個較簡單的標識,一般是正方形而且四邊都清晰可辨。這類識別算法相對簡單,一般用模板匹配算法解決,效果也不錯,此方面經典實現能夠參考早期ARToolKit引擎的Marker識別流程。動畫

隨着進一步發展,人們逐漸喜歡用更復雜的圖像來代替Marker,簡單的識別技術已經不適應現有需求。因而就出現了更復雜更通用的MarkerLess AR的識別,咱們下面主要說的就是這種技術。

MarkerLess AR的識別追蹤主要分爲特徵點檢測、圖片識別和追蹤(姿態估計)三個步驟。圖片識別的過程又分爲特徵點匹配和圖片類似度度量兩步。

特徵檢測

圖像局部特徵檢測做爲計算機視覺領域的熱點內容,這十幾年裏研究進展不斷。考察此技術的大體發展歷史,是從簡單的角點特徵提取一直到尺度不變、旋轉不變的特徵提取算法。圖像的角點特徵是最容易被檢測出來的,可是,在不一樣尺度不一樣大小分辨率的圖像上會不穩定,好比在小圖片中找到的角點不必定在同一張圖片的小尺寸圖片上檢測得出來。

另外,圖片發生旋轉後特徵區域的角度發生變化,也形成了檢測不出原圖對應的特徵點。因此,咱們來講一個經典的尺度不變特徵檢測(SIFT)算法,它經過引入尺度不變性和旋轉不變性,解決了以上兩個問題。

SIFT算法之經典,不只在於它已經寫成了教科書的經典段落,每一個學圖像處理或計算機視覺的人都會去完整的經歷一遍它的原理;更在於這十幾年裏不斷涌現的新的特徵檢測算法,均可能或多或少的借鑑了它的總體框架和思路。

怎麼引入尺度不變性呢?SIFT引入了尺度空間的概念,將一張圖片經過高斯卷積操做生成多個尺度的圖片,這些不一樣尺度因子的圖片給人的直觀感覺就是清晰度不一樣。而後加入多分辨率框架,每次都降採樣寬高爲原圖的1/2。

而後同層相鄰圖片進行差分操做,就生成了高斯差分金字塔(DoG),如上右圖所示。爲啥使用DoG尺度空間做爲特徵點的搜索空間呢?由於人們發現高斯拉普拉斯(LoG)函數的極值點相對於其餘的特徵提取函數可以產生更加穩定的圖像特徵,而DoG和LoG很是類似而且DoG的處理速度比LoG快多了,因而就使用了DoG做爲特徵提取函數。

在DoG金字塔中,咱們採用區域搜索算法去尋找最大值或最小值點(如上圖)。對於每一個點,考察其鄰域點:周圍的8個點及其上下相鄰尺度的18個點,共26個點。一個點若是在這26個領域點中是最大值或最小值,就認爲該點是圖像在對應尺度下的一個特徵點。所有檢測完後,會使用一些算法去除其中很差的或者邊緣的特徵點,以增長特徵點提取的穩定性。

爲了得到特徵的旋轉不變性,SIFT經過計算特徵點周圍鄰域像素的梯度方向並統計出方向累積直方圖,把其中累計值最大的方向定爲該特徵點的主方向。後面的特徵點描述就會把座標軸旋轉爲特徵點主方向,因此在發生旋轉的圖片上也會同原圖片中的特徵描述一致。這樣,就具有了旋轉不變性。

對檢測出的特徵點,根據點周圍鄰域像素的梯度方向造成特徵描述子。如上圖示,計算出特徵點Keypoint周圍16*16的window中每個像素梯度,並使用高斯降低函數下降遠離中心的權重。在每一個4*4的1/16象限中,經過加權梯度值加到直方圖8個方向區間中的一個,計算出梯度方向直方圖。每一個特徵點的描述子大小爲4*4*8=128維,歸一化以後能夠去除光照影響。

咱們可直觀感覺下,上圖中一張圖片經過SIFT所提取的特徵點信息。圖中每一個箭頭表明一個檢測到的特徵點,箭頭的起始位置爲特徵點座標,方向爲特徵點主方向,長度爲所檢測到的尺度空間。以上是簡要的SIFT算法原理描述,詳細實現細節感興趣的能夠參考論文(Lowe, 2004)。


圖片識別

特徵點匹配就是一個高維特徵空間的搜索近似最近鄰點的問題。若是是用最簡單的線性匹配,那麼速度遠遠達不到性能要求。這時候咱們就必須用構建高維特徵空間的數據結構算法。最經典有效的當屬KD樹及KMeans樹兩種結構及對應算法。

首先KD樹算法咱們來舉個例子,假設有特徵點樣本集:{(2,3), (5,4), (9,6), (4,7), (8,1), (7,2)},那麼使用KD樹生成算法,構建出以下的二叉樹,特徵點匹配的問題就轉化成了二叉樹查找。

假若有待查找點P(2.1, 3.1),如上圖所示。那麼搜索的過程就是先從(7,2)點開始進行二叉查找。因爲第一層標記爲考察X軸數據,因而待查找點與目前節點(7,2)的X軸數據比較:(2.1 < 7),選擇走左子樹到達(5,4),重複使用相同算法到達葉節點(2,3),就是所要求的最近鄰特徵點。以上只是簡單而不精確的描述,實際查找算法會更復雜,由於要有回溯的過程避免遺漏路徑上層子樹區域內可能存在的更近距離點。

實際的KD樹生成及查找算法請看相關論文(Muja et al., 2014)。



另外一個很實用的最近鄰查找方案是KMeans樹,它和KD樹查找的原理類似。區別在於,KD樹是二叉樹,每一個節點背後對應一個樣本點。而KMeans樹爲K叉樹,使用KMeans聚類算法將特徵點集分爲K類,而後每類移入下一層負責分別生成下一層子樹,每一個節點保存的是聚類中心點等相關信息。直到葉子節點的數據量小於等於K爲止,構建完成K叉樹後,使用相似KD樹的查找算法從Root節點開始搜索,直到找到最近鄰點。K叉樹以下圖所示,詳細相關算法可參考論文(Muja et al., 2014)。



特徵點匹配的直觀效果,如上圖。每條藍色線段兩端鏈接着的是兩張圖片上對應的匹配點。


兩張圖片上的特徵點匹配完成後,就須要進行下一個步驟:兩圖像間的類似度度量。前面普及過一個透視照相機模型,你們還有印象麼?描述不一樣拍攝位置同一圖片之間的變換,咱們稱之爲單應性變換。如圖所示的H變換。


咱們使用無需相機標定的查找單應性H的算法,經過匹配的點集來獲得兩張圖片中最佳單應性變換H,詳細可參考OpenCV中的findHomography方法。而後根據獲得的H,考察兩圖片中的匹配點集,哪些符合此單應性變換H,哪些不符合。據此,得出圖片的匹配類似度量,超過預先設定閾值就認爲兩圖片類似,即識別成功。

AR識別追蹤

追蹤的過程就是估計被攝物體3D姿態及3D引擎渲染對應虛擬物體姿態的過程。每一次的追蹤,都依賴於前述的特徵點提取、匹配、及計算單應性變換。獲得單應性變換,就等於獲得了被攝物體3D現實座標點集與二維屏幕成像座標點集。經過獲得的匹配點集以及標定得到的攝像機內參數,使用求解透視N點問題的算法,就能夠求出攝像機外參數,即攝像機實時姿態,隨即使可估算出被攝物體3D姿態。



最後一步,使用3D引擎渲染被攝物體上的3D虛擬物體,而且把虛擬物體的姿態根據上面估計出的實際物體的姿態矩陣進行變換。以下圖所展示的,虛擬與真實物體的聯動,實際上就是實現加強現實的體驗。

技術驅動商業變革

全民掃品牌,讓廣告變得更有趣

AR技術用在營銷場景下,爲消費者帶來的掃碼體驗將是嶄新的,遙想一羣人拿着手機在街上掃描LOGO觀看AR動畫的盛況,簡直是物物皆傳播,無處不營銷。與此同時,乘着內容營銷的風口,衆多品牌匯聚所帶來的集羣效應,也將進一步鏈接品牌與平臺,實現雙方價值的最大化。


圖 99聚星節聚划算&哈根達斯掃Logo營銷Banner


去年9.9期間,國內外160餘個一線品牌參加了天貓營銷平臺&聚划算的品牌LOGO AR互動。幾乎你身邊能看到的品牌,用聚划算客戶端掃一掃,都會出現酷炫的AR效果,同時消費者還能夠領取品牌方發出的不一樣面額的現金紅包。此玩法以AR這種科技手段爲媒介,將用戶、品牌、天貓營銷平臺三者進行有機結合。


消費者:經過聚划算App體驗每一個品牌帶來的AR創意,同時能夠得到本身喜好品牌的現金紅包。


品牌方:經過AR視頻來表達本身的品牌理念及新品趨勢告知給消費者,同時獲取本身的線下目標客戶信息。


天貓營銷平臺:從以前的告訴消費者什麼品牌在參聚,變爲消費者經過AR互動知道這個線下品牌在參聚,同時即便該品牌不在參聚狀態下,消費者也能夠經過掃LOGO獲取該品牌活動,訂閱該品牌,得到其參聚資訊。



2016.9.4-9.9期間,部分優質品牌方和聚划算全面線上線下聯動,將品牌LOGO,聚字LOGO全面投到地鐵、燈箱、建築地標等,消費者掃LOGO便可得到由品牌方及聚划算提供豐厚紅包及禮品。


那麼,在以上業務場景構建完畢後,爲了完成業務需求,提高用戶體驗,咱們必須對AR算法原理進行深刻考察,並實現可以很好應用於以上業務場景下的AR功能。




基於龐大的業務背景,是成百上千的Logo圖標,這些Logo每每比Marker更加複雜和不規則,並不能作到像傳統的Maker那樣四邊邊框清晰。用更復雜的圖像來代替Marker,簡單的識別技術已經不適應現有需求。因而咱們開始嘗試MarkerLess AR技術,也就是文章開頭爲你們介紹的技術原理。


爲了適應Logo數量的增加,咱們須要在大量Logo的業務場景下,達到移動端快速AR識別的能力。因而,咱們將以上的AR識別技術擴展到了雲端,由移動端提取特徵數據上傳到雲端,識別的過程能夠在強大計算力的服務器上並行完成,並及時返回結果。目前在咱們的生產環境下,已經穩定的運行着能夠實時識別萬級別Logo量的AR引擎。


以上,AR技術的基礎框架就構建完成了。咱們將此AR算法用在了掃Logo的業務場景上,併產生了很好效果。

實現量化數據,打造智能化平臺

對99聚星節掃Logo活動進行了詳細的覆盤分析和效果評估,咱們發如今實現創新營銷體驗的同時,也得到了營銷廣告的數據化監控能力。


從數據上看,咱們獲得了創新的營銷效果。掃LOGO總體會場消費者訪問UV達到近千萬(僅在預熱期間展現) 參與玩法用戶達到20%, 到達抽獎頁面50%。經過 AR 技術打通線上線下,提高用戶參與感,共計超過 100 家以上的品牌參與,當天進入微博話題排行榜第三名,紅包引導率接近 90%。


傳統廣告投放最難的就是數據監控。大多數商家只能經過各方數據彙總獲得一個粗放的效果判斷,沒法精確到我的的具體行爲。但這次聚划算的品牌掃LOGO活動卻切實作到了數據的精準和量化。



而商家經過消費者的掃LOGO行爲,能夠精確瞭解,這個廣告帶來了多少收益,誰在哪一個時間掃描了什麼。進而判斷出每一個廣告位究竟能帶來多少流量、多少收益、實現多少轉化。


在將來,經過掃LOGO的創新玩法以及聚划算已經積累的海量數據,將爲每個消費者量身定製出真正須要的導購頁面,最終實現廣告收益的最大化。


2016奧運年,里約RIO成了全球矚目的焦點。而更巧合的是,銳澳RIO雞尾酒與巴西里約RIO同名。RIO做爲里約奧運贊助商和天貓營銷平臺進行了深刻合做,把AR掃RIO限量版瓶子的活動推上了營銷活動的高潮。




經過聚划算APP掃RIO里約聯名限量塗鴉瓶身便可體驗酷炫AR,將巴西風情真實融入瓶中,例如掃描奇幻亞馬遜瓶,就能感覺到骨頭魚與金剛鸚鵡的奇妙互動,消費者不光能在RIO X里約聯名限量塗鴉瓶看里約,更能在RIO X里約聯名限量塗鴉瓶體驗里約。讓消費者買到產品的同時感覺營銷體驗,無疑又是一次創意上的巨大創新突破。

業界AR引擎的發展

咱們來講說業界用於手機端識別追蹤的AR引擎的發展狀況。一言以歸納,從2015年起國外幾個著名的引擎都紛紛被大廠們收購,市場對AR技術的迫切需求產生了供給空白,這就給了國內一些小創業公司提供AR SDK服務的機會。


開源中最著名的ARToolKit,2015年被DAQRI收購,而後版本進度變緩,目前一直停留在5.3.3上,不少人翹首以盼的ARToolKit6一直跳票到如今。原先國外比較著名的幾個商業AR引擎,如Vuforia和Metaio,前者被高通賣給了PTC,後者在2015年被蘋果收購,基本上就退出了讓開發者集成AR直接使用的舞臺了。


因而,從2015年末開始市場出現了明顯空白,這就給具有計算機視覺技術的某些國內廠商提供了絕佳的時間窗口機會。在2016年拼殺中,國內出現了幾個有表明性的產品,如視辰EasyAR和亮風臺HiAR。這些商業引擎雖然沒有開源,但大都提供有限制的無償使用,須要集成AR功能的我的開發者能夠去試試。


值得一提的是,天貓技術內部也已經有了AR SDK相關產品,目前已經提供給天貓及聚划算內部業務做爲營銷的技術支撐。後續不排除有接入整個集團基礎服務平臺或開源相關的計劃,以供你們使用,各位不妨期待一下。


AR將來技術的展望

最近幾年人工智能(AI)熱潮愈來愈猛,最典型的即是好多人在說:「人工智能正在重塑整個社會」。AI正在從聽覺、視覺與數據分析等多個方向造成對於人類智能的包圍。計算機視覺與AR領域,無疑會受到AI進步的深入影響。如今愈來愈多的AI算法滲入到計算機視覺領域,一個使用了深度學習的算法,很容易就能夠獲得比傳統經典算法更好的性能效果。


好比大規模圖像分類、目標檢測與識別、場景語義理解都方面,都有了確切效果印證了AI算法的有效性。正若有人說的:「Deep Learning in All computer vision」,將來的AR技術發展會有愈來愈多的經典算法被DL算法替代。那麼,到時候AR會達到怎樣的體驗,小夥伴們一塊兒來期待吧。


識別圖片二維碼▲關注「天貓技術」

技術驅動商業變革|作最懂商業的技術人



相關薦文你還覺得,除了你寄幾就沒有人懂你女友嗎?

點擊下方圖片便可閱讀

相關文章
相關標籤/搜索