再談AR中的圖像識(shí)別算法

之前在《淺談移動(dòng)平臺(tái)創(chuàng)新玩法》簡單的猜測了easyar中使用的圖像識(shí)別算法晓锻,基于圖片指紋的哈希算法的圖片檢索 砚哆。后再阿里引商大神的指點(diǎn)下,意識(shí)到圖片檢測只適用于靜態(tài)圖片的識(shí)別躁锁,只能做AR脫卡(不進(jìn)行圖像追蹤),簡單地說就是如果圖片有角度翻轉(zhuǎn)战转,光線明暗的變化都會(huì)改變圖片自身的指紋哈希值搜立,無法做到跟蹤識(shí)別。那要如何進(jìn)行跟蹤識(shí)別呢槐秧?

引商的指點(diǎn):我們用的是akaze啄踊,整個(gè)匹配流程采用的是基于特征提取加kmeans樹求近似最近鄰匹配的算法,然后再對(duì)匹配到的關(guān)鍵點(diǎn)對(duì)求單應(yīng)性映射刁标,最后根據(jù)inlier點(diǎn)集進(jìn)行打分的方式來最終判定識(shí)別到的目標(biāo)颠通。

圖像特征

和圖像指紋類似,能夠唯一標(biāo)示膀懈,區(qū)別于其他圖像的“有趣部分”。一個(gè)很抽象的概念,它的精確定義往往由具體問題或應(yīng)用類型來決定撵儿。可重復(fù)檢測性是圖像特征最重要的特性:同一圖像無論發(fā)生角度乘客,位移,明暗變化淀歇,所提取的特征應(yīng)該是相同的易核。圖像特征是許多計(jì)算機(jī)圖像分析算法的起點(diǎn),因此一個(gè)算法是否成功往往由它使用和定義的特征決定浪默。
常用的圖像特征有顏色特征牡直,紋理特征,形狀特征纳决,空間關(guān)系特征碰逸。

顏色特征,是一種全局特征阔加,描述了圖像或圖像區(qū)域所對(duì)應(yīng)景物的表面性質(zhì)饵史。例如灰度直方圖等。
紋理特征胜榔,是一種全局特征胳喷,描述了圖像或圖像區(qū)域所對(duì)應(yīng)景物的表面性質(zhì)。例如基于共生矩陣的熵夭织、角二階矩和局部平穩(wěn)性等吭露。
形狀特征,是一種局部特征尊惰,描述了局部區(qū)域內(nèi)物體的外形性質(zhì)讲竿。例如邊界特征等。
空間關(guān)系特征弄屡,是指圖像中分割出來的多個(gè)目標(biāo)之間的相互的空間位置或相對(duì)方向關(guān)系题禀。這些關(guān)系也可分為連接/鄰接關(guān)系、交疊/重復(fù)關(guān)系和包含/包容關(guān)系等膀捷。

特征被檢測后它可以從圖像中被提取出來迈嘹。這個(gè)過程可能需要許多圖像處理的計(jì)算(如大名鼎鼎的計(jì)算機(jī)視覺圖像處理庫OpenCV)。其結(jié)果被稱為特征描述或者特征向量担孔。

AKAZE特征提取算法

KAZE是 Pablo F. Alcantarilla江锨,Adrien Bartoli和Andrew J. Davison2012年在ECCV2012[ECCV是計(jì)算機(jī)視覺領(lǐng)域最頂尖的三個(gè)會(huì)議(CVPR吃警、 ECCV糕篇, ICCV)之一,每兩年一次]中提出來的一種比SIFT酌心、SURF(OpenCV 2.4.9版本中實(shí)現(xiàn)的圖像特征檢測算法)更穩(wěn)定拌消、性能更好的特征檢測算法。

KAZE特征檢測是在圖像域中進(jìn)行非線性擴(kuò)散處理的過程。KAZE算法的作者提出采用加性算子分裂算法(Additive Operator Splitting, AOS)來進(jìn)行非線性擴(kuò)散濾波墩崩,可以采用任意步長來構(gòu)造穩(wěn)定的非線性尺度空間氓英。
AKAZE 是加速版KAZE特征,即Accelerated KAZE Features鹦筹。作者基于OpenCV實(shí)現(xiàn)了Akaze算法的代碼铝阐,在項(xiàng)目主頁(http://www.robesafe.com/personal/pablo.alcantarilla/kaze.html)可以下載到完整的實(shí)現(xiàn)源代碼,具體使用中可以下載OpenCV 3.0及以上版本直接調(diào)用Akaze算法類(http://docs.opencv.org/3.0-beta/doc/tutorials/features2d/akaze_matching/akaze_matching.html)铐拐。

K-Meas算法

在數(shù)據(jù)挖掘中徘键,K-Means 算法是一種聚類分析的算法。K-Means聚類的目的是:把n個(gè)點(diǎn)(可以是樣本的一次觀察或一個(gè)實(shí)例)劃分到k個(gè)聚類中遍蟋,使得每個(gè)點(diǎn)都屬于離他最近的均值(此即聚類中心)對(duì)應(yīng)的聚類吹害,以之作為聚類的標(biāo)準(zhǔn)。
K-Means算法主要解決的問題:我們可以看到虚青,在圖的左邊有一些點(diǎn)它呀,我們用肉眼可以看出來有四個(gè)點(diǎn)群,但是我們?cè)趺赐ㄟ^計(jì)算機(jī)程序找出這幾個(gè)點(diǎn)群來呢棒厘?于是就出現(xiàn)了我們的K-Means算法纵穿。

K-Means算法.jpg

例如在互聯(lián)網(wǎng)金融公司的借貸業(yè)務(wù)中,給你1000000個(gè)用戶绊谭,需要按金融產(chǎn)品種類分成n個(gè)人群政恍,每一群人都有各自的“突出特征”(類似圖像特征),以便區(qū)分出來他們都能適用哪一類產(chǎn)品达传,幫助金融公司合理規(guī)避借貸風(fēng)險(xiǎn)篙耗,這就是互聯(lián)網(wǎng)金融公司基于大數(shù)據(jù)分析風(fēng)控系統(tǒng)的基本原理。
這么解釋K-Means算法是不是就容易理解多了宪赶。

單應(yīng)性

單應(yīng)性是幾何中的一個(gè)概念宗弯,是一個(gè)從實(shí)射影平面到射影平面的可逆變換,直線在該變換下仍映射為直線搂妻。具有相同意義的詞還包括直射變換蒙保、射影變換和射影性等。在計(jì)算機(jī)視覺領(lǐng)域中欲主,空間中同一平面的任意兩幅圖像可以通過單應(yīng)性關(guān)聯(lián)在一起邓厕。比如一個(gè)物體可以通過旋轉(zhuǎn)相機(jī)鏡頭獲取兩張不同的照片(這兩張照片的內(nèi)容不一定要完全對(duì)應(yīng),部分對(duì)應(yīng)即可)扁瓢,我們可以把單應(yīng)性設(shè)為一個(gè)二維矩陣M详恼,那么照片1乘以M就是照片2。這有著很多實(shí)際應(yīng)用引几,比如圖像校正昧互、圖像對(duì)齊或兩幅圖像之間的相機(jī)運(yùn)動(dòng)計(jì)算(旋轉(zhuǎn)和平移)等。
在數(shù)學(xué)里齊次坐標(biāo),或投影坐標(biāo)是指一個(gè)用于投影幾何里的坐標(biāo)系統(tǒng)敞掘,如同用于歐氏幾何里的笛卡兒坐標(biāo)一樣叽掘。如果點(diǎn)Q到成像儀上的點(diǎn)q的映射使用齊次坐標(biāo),這種映射可以用矩陣相乘的方式表示玖雁。若有一下定義:

1.jpg

則可以將單應(yīng)性簡單的表示為:

2.jpg

這里引入?yún)?shù)s更扁,它是任意尺度的比例(目的是使得單應(yīng)性定義到該尺度比例)。H有兩部分組成:用于定位觀察的物體平面的物理變換和使用攝像機(jī)內(nèi)參數(shù)矩陣的投影赫冬。

3.jpg

物理變換部分是與觀測到的圖像平面相關(guān)的部分旋轉(zhuǎn)R和部分平移t的影響之和疯潭,表示如下:

4.jpg

這里R為3*3大小的矩陣,t表示一個(gè)3維的列矢量面殖,攝像機(jī)內(nèi)參數(shù)矩陣用M表示竖哩,那么我們重寫單應(yīng)性如下:

5.jpg

單應(yīng)性研究的是一個(gè)平面上到另外一個(gè)平面的映射,那么上述公式中的Q脊僚,就可以簡化為平面坐標(biāo)中的Q'相叁,即我們使Z=0。即物體平面上的點(diǎn)我們用x,y表示辽幌,相機(jī)平面上的點(diǎn)增淹,我們也是用二維點(diǎn)表示。我們?nèi)サ袅薢方向的坐標(biāo)乌企,那么相對(duì)于旋轉(zhuǎn)矩陣R虑润,R可以分解為R=[r1 r2 r3],那么r3也就不要了加酵,參考下面的推導(dǎo):

6.jpg

其中H為:

7.jpg

是一個(gè)3×3大小的矩陣拳喻,故最終的單應(yīng)性矩陣可表示如下:

8.jpg

OpenCV就是利用上述公式來計(jì)算單應(yīng)性矩陣。它使用同一物體的多個(gè)圖像來計(jì)算每個(gè)視場的旋轉(zhuǎn)和平移猪腕,同時(shí)也計(jì)算攝像機(jī)的內(nèi)參數(shù)冗澈。

inlier點(diǎn)集驗(yàn)證

K-Means算法解決了圖像特征聚類分析的問題,現(xiàn)在需要解決驗(yàn)證的問題 陋葡。OpenCV中有很多種匹配算法SIFT亚亲、ORB、RANSAC等算法腐缤,這里只說比較有名的RANSAC算法捌归。RANSAC算法是一種簡單且有效的去除噪聲影響,估計(jì)模型的一種方法岭粤。與普通的去噪算法不同惜索,RANSAC算法是使用盡可能少的點(diǎn)來估計(jì)模型參數(shù),然后盡可能的擴(kuò)大得到的模型參數(shù)的影響范圍绍在。
RANSAC算法的具體描述是:給定N個(gè)數(shù)據(jù)點(diǎn)組成的集合P门扇,假設(shè)集合中大多數(shù)的點(diǎn)都是可以通過一個(gè)模型來產(chǎn)生的,且最少通過n個(gè)點(diǎn)(n<N)可以擬合出模型的參數(shù)偿渡,則可以通過以下的迭代方式擬合該參數(shù)臼寄。
對(duì)下面的操作執(zhí)行k次:
(1)從P中隨機(jī)選擇n個(gè)數(shù)據(jù)點(diǎn);
(2)用這n個(gè)數(shù)據(jù)點(diǎn)擬合出一個(gè)模型M溜宽;
(3)對(duì)P中剩余的數(shù)據(jù)點(diǎn)吉拳,計(jì)算每個(gè)點(diǎn)與模型M的距離,距離超過閾值的則認(rèn)定為局外點(diǎn)(及outlier點(diǎn))适揉,不超過閾值的認(rèn)定為局內(nèi)點(diǎn)(及inlier點(diǎn))留攒,并記錄該模型M所對(duì)應(yīng)的局內(nèi)點(diǎn)的值m;
迭代k次以后嫉嘀,選擇m最大的模型M作為擬合的結(jié)果炼邀。
因?yàn)樵趯?shí)際應(yīng)用中N的值通常會(huì)很大,那么從其中任選n個(gè)數(shù)據(jù)點(diǎn)的組合就會(huì)很大剪侮,如果對(duì)所有組合都進(jìn)行上面的操作運(yùn)算量就會(huì)很大拭宁,因此對(duì)于k的選擇就很重要。通常情況下瓣俯,只要保證模型估計(jì)需要的n個(gè)點(diǎn)都是點(diǎn)的概率足夠高即可杰标。因此設(shè)w為N個(gè)數(shù)據(jù)中局內(nèi)點(diǎn)的比例,z為進(jìn)行k次選取后彩匕,至少有一次選取的n個(gè)點(diǎn)都是局內(nèi)點(diǎn)的概率腔剂。則有

9.jpg

其中 1?wn 表示一次選取不都是局內(nèi)點(diǎn)的概率,(1?wn)k 表示k次選取中沒有一次都是局內(nèi)點(diǎn)的概率驼仪。 則有:

10.jpg

這里z一般要求滿足大于95%即可掸犬。
至此一個(gè)完整的AR識(shí)別追蹤流程原理分析完畢,后續(xù)就是OpenCV源碼研究绪爸。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末登渣,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子毡泻,更是在濱河造成了極大的恐慌胜茧,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仇味,死亡現(xiàn)場離奇詭異呻顽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)丹墨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門廊遍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人贩挣,你說我怎么就攤上這事喉前∶缓ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵卵迂,是天一觀的道長裕便。 經(jīng)常有香客問我,道長见咒,這世上最難降的妖魔是什么偿衰? 我笑而不...
    開封第一講書人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮改览,結(jié)果婚禮上下翎,老公的妹妹穿的比我還像新娘。我一直安慰自己宝当,他們只是感情好视事,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著庆揩,像睡著了一般郑口。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盾鳞,一...
    開封第一講書人閱讀 49,079評(píng)論 1 285
  • 那天犬性,我揣著相機(jī)與錄音,去河邊找鬼腾仅。 笑死乒裆,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的推励。 我是一名探鬼主播鹤耍,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼验辞!你這毒婦竟也來了稿黄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤跌造,失蹤者是張志新(化名)和其女友劉穎杆怕,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體壳贪,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡陵珍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了违施。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片互纯。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖磕蒲,靈堂內(nèi)的尸體忽然破棺而出留潦,到底是詐尸還是另有隱情只盹,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布兔院,位于F島的核電站殖卑,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏秆乳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一钻哩、第九天 我趴在偏房一處隱蔽的房頂上張望屹堰。 院中可真熱鬧,春花似錦街氢、人聲如沸扯键。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽荣刑。三九已至,卻和暖如春伦乔,著一層夾襖步出監(jiān)牢的瞬間厉亏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來泰國打工烈和, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留爱只,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓招刹,卻偏偏與公主長得像恬试,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子疯暑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容