一種基于移動平臺的增強現(xiàn)實的系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計算機視覺、圖像處理領(lǐng)域,特別涉及一種基于移動平臺的增強現(xiàn)實系統(tǒng)及方法。
【背景技術(shù)】
[0002]由于智能移動終端的高速普及與發(fā)展,用戶對智能設(shè)備的依賴變得越來越大,對智能設(shè)備的功能需求也是從原來的簡單使用發(fā)展到如今的多樣化。其中,拍照、攝像作為移動設(shè)備最重要的功能之一,在此功能上拓展出來的各種功能也深受用戶的關(guān)注。面前市面上已發(fā)展出一批相關(guān)軟件,但絕大多數(shù)的基于視覺追蹤的增強現(xiàn)實App通常帶有簡單的人臉檢測功能,采用逐幀檢測的方式進行人臉定位,再進行場景渲染。這些視頻類軟件雖已能滿足一般增強現(xiàn)實效果的需求,但仍存在檢測速度慢,取景框無法平滑過渡,會出現(xiàn)的跳躍的問題,造成用戶體驗一般。
[0003]目前國內(nèi)外關(guān)于移動終端增強現(xiàn)實技術(shù)還存在著不少有待解決的問題:
I)遇遮擋檢測率下降。當前的人臉檢測算法計算人臉圖像的Haar特征的積分圖,然后根據(jù)這些特征的分類器訓(xùn)練弱分類器,選用效果好的弱分類器組成強分類器,最后將這些強分類器級聯(lián)來進行人臉檢測。魯棒性較好,但遇遮擋容易造成誤檢。
[0004]2)對于光照強度的改變,沒有很好的適應(yīng)性,存在較大的誤檢區(qū)域以及陰影檢測效果不好。在視頻中光照的變化十分常見,室外場景下陽光被云朵遮擋,室內(nèi)燈開關(guān)或光線被遮擋,都常常會引起較大面積的誤檢,對對象統(tǒng)計有很大影響。目前對于如地面反光、對象的投影等光照影響造成的誤檢沒有很好的方法。
[0005]3)目前主流移動端軟件的增強現(xiàn)實效果集中在使用二維的貼圖對場景進行渲染,其增強現(xiàn)實效果一般。
【發(fā)明內(nèi)容】
[0006]本發(fā)明主要解決的技術(shù)問題是提供一種基于移動平臺的增強現(xiàn)實的系統(tǒng)及方法,能夠有效的解決了檢測效率不高,誤檢率高的問題。同時,采用三維渲染技術(shù),對增強現(xiàn)實效果有了很大的提高。
[0007]為解決上述技術(shù)問題,本發(fā)明采用的一個技術(shù)方案是:提供一種基于移動平臺的增強現(xiàn)實的系統(tǒng),所述系統(tǒng)包括三層結(jié)構(gòu):用戶界面層、接口層和功能模塊層;
所述用戶界面層,負責(zé)界面顯示及與用戶進行交互;
所述接口層,提供必要接口,鏈接所述用戶界面層和功能模塊層;
所述功能模塊層,對攝像頭實時獲取的人臉進行檢測與跟蹤,并標記;所述功能模塊層包括視頻捕獲模塊、人臉檢測模塊、人臉跟蹤模塊和3D圖形加載模塊。
[0008]在本發(fā)明一個較佳實施例中,所述用戶界面層包括至少兩個Activity,一個用于首界面顯示,一個用于功能選擇。
[0009]在本發(fā)明一個較佳實施例中,所述接口層包括提供Android調(diào)用算法模塊用的C++代碼的接口 JNI。
[0010]在本發(fā)明一個較佳實施例中,所述視頻捕獲模塊,采用移動設(shè)備自帶攝像頭進行視頻預(yù)覽,從視頻中實時提取單幀圖像,為人臉檢測做好預(yù)處理;
所述人臉檢測模塊,采用適用于移動平臺的人臉檢測算法,對視頻流中提取到的單幀圖像進行人臉初始位置的檢測,為接下來人臉跟蹤算法提供一個所需的初始化位置;
所述人臉跟蹤模塊,提取目標物體的直方圖模型和顏色概率分布圖,然后使用特征算子提取對圖像的每一幀進行迭代,當找到目標區(qū)域后,在下一幀中更新搜索窗口并進行迭代,以達到實時跟蹤的效果;
所述3D圖形加載模塊,采用移動端三維圖形渲染技術(shù),在上述實時跟蹤到的人臉位置為基準位置,對其周圍場景進行三維渲染,充分匹配人臉位置,以達到增強現(xiàn)實效果的目的。
[0011]為解決上述技術(shù)問題,本發(fā)明還提供一種基于移動平臺的增強現(xiàn)實的方法,具體步驟包括:
(100)、使用移動設(shè)備攝像頭捕獲視頻流;
(200)、從視頻流中獲取單幀圖像;
(300 )、采用人臉檢測算法對單幀圖像進行人臉檢測;
(400)、通過人臉檢測得到的人臉位置作為初始位置,采用人臉跟蹤算法對人臉位置進行實時跟蹤;
(500)、采用三維渲染技術(shù)在跟蹤到的人臉位置附近場景進行三維場景渲染以達到增強現(xiàn)實的效果。
[0012]在本發(fā)明一個較佳實施例中,步驟(100)中實現(xiàn)初始化攝像頭參數(shù)及設(shè)置相機預(yù)覽功能。
[0013]在本發(fā)明一個較佳實施例中,步驟(200)中采用對攝像頭預(yù)覽時的捕獲的視頻流進行單幀圖像提取,并獲取圖像數(shù)據(jù)。
[0014]在本發(fā)明一個較佳實施例中,步驟(300)中,采用適用于移動平臺的人臉檢測算法,對視頻流中提取到的單幀圖像進行人臉初始位置的檢測,為接下來人臉跟蹤算法提供一個所需的初始化位置。
[0015]在本發(fā)明一個較佳實施例中,步驟(400 )中,提取目標物體的直方圖模型和顏色概率分布圖,然后使用特征算子提取對圖像的每一幀進行迭代,當找到目標區(qū)域后,在下一幀中更新搜索窗口并進行迭代,以達到實時跟蹤的效果。
[0016]在本發(fā)明一個較佳實施例中,步驟(500)中采用移動端三維圖形渲染技術(shù),在上述實時跟蹤到的人臉位置為基準位置,對其周圍場景進行三維渲染,充分匹配人臉位置,以達到增強現(xiàn)實效果的目的。
[0017]本發(fā)明的有益效果是:本發(fā)明基于移動平臺的增強現(xiàn)實系統(tǒng)及方法,包括以下關(guān)鍵技術(shù):
I)實時人臉檢測技術(shù)
由于移動終端硬件的限制導(dǎo)致運算能力有限,Android提供的API接口完成人臉檢測會有一定的延時及誤差。因此考慮將在PC上已經(jīng)很成熟Adaboost算法移植到移動平臺,以滿足實時檢測的要求。
[0018]2)精確人臉跟蹤技術(shù)
Adaboost算法實時性上已基本滿足要求,但仍存在魯棒性不高和遇到遮擋后檢測率降低的問題。此時,將Adaboost算法結(jié)合Camshift跟蹤算法,利用Adaboost檢測到的人臉位置作為Camshift跟蹤的初始位置,可以在一定程度上提高檢測率。
[0019]3)移動平臺3D圖形開發(fā)技術(shù)
OpenGL ES作為OpenGL三維圖形API的子集,專門針對手機、PDA和游戲主機等嵌入式設(shè)備而設(shè)計。本課題采用OpenGL ES 2.0版本作為3D圖形開發(fā)接口,2.0版本采用可編程渲染管線,使用頂點著色器與片元著色器代替1.0版本中固定管線的功能,給開發(fā)帶來更豐富的空間。
[0020]本發(fā)明的有益效果是:
1)、本發(fā)明采用先進行人臉檢測進行人臉位置初始化,再利用人臉跟蹤算法實時進行人臉位置跟蹤,有效的提高了檢測效率。
[0021]2)、本發(fā)明的方法對各種場景變化達到較好的適應(yīng)性,對場景中光照變化,物體遮擋等情形有很強的魯棒性。
[0022]3)、本發(fā)明采用三維渲染技術(shù)對視頻進行渲染,提高了增強現(xiàn)實效果。
【附圖說明】
[0023]圖1為本發(fā)明基于移動平臺的增強現(xiàn)實的系統(tǒng)一優(yōu)選實施例的結(jié)構(gòu)架構(gòu)圖;
圖2為本發(fā)明基于移動平臺的增強現(xiàn)實的系統(tǒng)的功能模塊圖;
圖3為本發(fā)明基于移動平臺的增強現(xiàn)實系統(tǒng)主要工作流程圖。
【具體實施方式】
[0024]下面結(jié)合附圖對本發(fā)明的較佳實施例進行詳細闡述,以使本發(fā)明的優(yōu)點和特征能更易于被本領(lǐng)域技術(shù)人員理解,從而對本發(fā)明的保護范圍做出更為清楚明確的界定。
[0025]本課題旨在完成移動平臺上基于人臉檢測與跟蹤的增強現(xiàn)實軟件的設(shè)計與實現(xiàn),系統(tǒng)可以通過移動設(shè)備攝像頭實時捕獲人臉,并根據(jù)人臉實時位置,通過對其及其周邊虛擬場景及物體進行渲染以達到增強現(xiàn)實效果的目的。實施方案包括設(shè)計、實現(xiàn)與測試三個階段,設(shè)計階段包括UI界面設(shè)計、類設(shè)計以及主要業(yè)務(wù)邏輯流程設(shè)計,實現(xiàn)階段完成核心算法編碼及單元測試,測試階段進行整體系統(tǒng)測試。
[0026]I)系統(tǒng)架構(gòu)
如圖1所示,整體系統(tǒng)架構(gòu)分為三層,包括用戶界面層、接口層及功能模塊層。
[0027]用戶界面層主要負責(zé)界面顯示及與用戶進行交互,Android系統(tǒng)中每一個Activity對應(yīng)一個用戶界面,用戶通過Activity實現(xiàn)與程序的交互。本系統(tǒng)主要包括兩個Activity, 一個用于首界面顯示,一個用于功能選擇。
[0028]圖1中優(yōu)選實施例所示所述用戶界面層包括主界面、攝像頭預(yù)覽和功能選擇三個部分。
[0029]接口層提供Android調(diào)用算法模塊用的c++代碼的接口 JNI,JNI接口包含在Android提供的NDK開發(fā)包中。中間層起到鏈接用戶層與算法層的作用。圖1中優(yōu)選實施例所示接口