本發(fā)明屬于圖像處理和增強現(xiàn)實技術(shù)領(lǐng)域,具體涉及一種基于臨近異構(gòu)分布式結(jié)構(gòu)的移動增強現(xiàn)實交互方法。
背景技術(shù):
增強現(xiàn)實技術(shù)的應(yīng)用場景非常廣泛,針對增強現(xiàn)實的技術(shù)引擎技術(shù)也在突飛猛進(jìn),比如ar(augmentedrealit)。
同時鑒于復(fù)雜的應(yīng)用場景,良好的人機交互也是必不可少的一部分,ar的應(yīng)用場景本身已經(jīng)極為復(fù)雜,在復(fù)雜場景中對模型的標(biāo)定已經(jīng)有很繁重的計算量,同時要在復(fù)雜場景中提取指令像素并進(jìn)行指令匹配已經(jīng)是捉襟見肘。
在視覺方面,基于開源計算機視覺庫opencv(opensourcecomputervisionlibrary)的手勢識別技術(shù)也在突飛猛進(jìn),然而性能和效率往往不能兼得,每一種識別算法都存在比較強的環(huán)境依賴性,可靠性不能夠得到保證,如何協(xié)調(diào)好各種算法的優(yōu)點,也是當(dāng)今的一大難題。
現(xiàn)在的增強現(xiàn)實技術(shù)都是在一個終端同時實現(xiàn)特征提取、模板匹配以及圖像融合。即各種運算通過單個cpu和gpu進(jìn)行,運算量極大,移動設(shè)備資源根本無法完全兼顧特征提取和模板匹配。這就給移動端的增強現(xiàn)實顯示提供了阻力。
技術(shù)實現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是提供一種基于opencv指令識別,臨近異構(gòu)分布式結(jié)構(gòu)的移動端增強現(xiàn)實交互方法,本發(fā)明通過膚色提取、指令集匹配,異端處理實現(xiàn)對攝入的視頻流做出實時的交互響應(yīng),利用總線近場通信模型,提高處理的高速性、實時性,提供符合應(yīng)用場景所需的交互方法。
本發(fā)明的基于臨近異構(gòu)分布式結(jié)構(gòu)的移動增強現(xiàn)實交互方法包括下列步驟:
首先,移動終端將采集的視頻流以切片的方式存儲到本地,并將采集的視頻流發(fā)送給一個臨近異構(gòu)識別處理裝置(臨近異構(gòu)識別處理裝置為預(yù)置的能與移動終端進(jìn)行通信的指令識別服務(wù)器,當(dāng)移動終端進(jìn)入到臨近異構(gòu)識別處理裝置的通信范圍內(nèi),則能實現(xiàn)通信,當(dāng)存在多個可通信的臨近異構(gòu)識別處理裝置時,任意選擇其中一個即可),移動終端和收到的視頻流的臨近異構(gòu)識別處理裝置分別進(jìn)行下述處理:
移動終端執(zhí)行下述步驟a1~a3:
步驟a1:計算屏幕坐標(biāo):
根據(jù)公式x′=[r|t]*x得到攝像機坐標(biāo)x′,其中r為移動終端的攝像裝置的外參旋轉(zhuǎn)矩陣,t是平移向量,x是世界坐標(biāo),符號“丨”表示矩陣分塊;
然后根據(jù)公式
步驟a2:對視頻流的幀圖像進(jìn)行二值化處理,再對各二值圖像進(jìn)行連通域分析,將連通域中的四邊行區(qū)域作為候選區(qū)域,將每一個候選區(qū)域與本地預(yù)置的目標(biāo)對象(目標(biāo)對象設(shè)置為矩形圖像塊)進(jìn)行圖像匹配,將與目標(biāo)對象匹配的候選區(qū)域作為每幀的標(biāo)識區(qū)域;
若標(biāo)識區(qū)域不是矩形,則基于屏幕坐標(biāo)對其進(jìn)行坐標(biāo)變換,得到矩形的標(biāo)識區(qū)域。
臨近異構(gòu)識別處理裝置執(zhí)行下述步驟b1~b3:
步驟b1:構(gòu)建指令分類器:以不同的手勢圖像作為訓(xùn)練樣本,對訓(xùn)練樣本進(jìn)行輪廓檢測,將輪廓檢測結(jié)果作為指令模型樣本值,基于指令模型樣本值構(gòu)建關(guān)于手勢與指令類型的分類器;
步驟b2:依次確定接收的視頻流每幀的指令類型值并回傳給移動終端;
其中每幀的指令類型值確定方式為:
對視頻流的幀圖像進(jìn)行膚色提取處理,得到膚色區(qū)域;再對膚色區(qū)域進(jìn)行輪廓檢測,將輪廓檢測結(jié)果作為指令特征值;
通過指令分類器對當(dāng)前幀的指令特征值進(jìn)行指令類型匹配,并將第一個匹配結(jié)果作為當(dāng)前幀的指令類型值;
最后,移動終端基于本地預(yù)置的指令類型值與虛擬物體的映射關(guān)系,將對應(yīng)每幀的指令類型值的虛擬物體疊加到當(dāng)前幀的標(biāo)識區(qū)域內(nèi),即將虛擬物體以圖像融合的方式疊加到當(dāng)前幀的各標(biāo)識區(qū)域內(nèi),生成交互視頻流。
本發(fā)明的有效效果為:本發(fā)明提供了一源輸入,多端處理,同端輸出,臨近異構(gòu)模型的增強現(xiàn)實交互方法,整合近場閑置資源,為高、精的識別過程提供充足的運算環(huán)境,對移動端本身來說,圖像指令的提取是一個透明的過程;結(jié)合開源的ar處理的框架,能夠快速在移動端搭建虛擬模型,從而能夠?qū)崟r準(zhǔn)確的完成ar虛擬場景與真實物體之間的交互。
附圖說明
圖1:本發(fā)明具體實施過程示意圖;
圖2:臨近異構(gòu)識別處理裝置的組成框架示意圖。
具體實施方式
為了讓發(fā)明的目的、方案以及其優(yōu)勢顯現(xiàn)的更加清楚,下面結(jié)合實施方式和附圖,對本發(fā)明進(jìn)行進(jìn)一步的闡述:
參見圖1,基于opencv實現(xiàn)本發(fā)明的基于臨近異構(gòu)分布式結(jié)構(gòu)的移動增強現(xiàn)實交互方法,其具體的包括下列步驟:s1:臨近異構(gòu)模式搭建:將移動端(如手機)和臨近異構(gòu)識別處理裝置(指令識別服務(wù)器)放在同一個本地網(wǎng)絡(luò)域下,以確保能被互相發(fā)現(xiàn)。移動端和指令識別服務(wù)器搭建自己的路由(router),兩個路由負(fù)責(zé)進(jìn)行通信交互,即移動端和指令識別服務(wù)器通過近距離無線傳輸方式alljoyn實現(xiàn)廣播和發(fā)現(xiàn)服務(wù)。其中指令識別服務(wù)器的單元結(jié)構(gòu)如圖2所示,包括主處理進(jìn)程、服務(wù)架構(gòu)層、基礎(chǔ)核心庫、alljoyn路由和操作系統(tǒng),主處理進(jìn)程用于實現(xiàn)服務(wù)主運算;服務(wù)架構(gòu)層是基于基礎(chǔ)核心庫組成的基礎(chǔ)服務(wù),為上層提供基礎(chǔ)組件;基礎(chǔ)核心庫提供最底層的基礎(chǔ)核心運算;alljoyn路由用于實現(xiàn)與移動端的近距離無線傳輸。
s2:移動端采集視頻流并以切片的方式存儲到本地(如利用開源ar框架artoolkit,設(shè)定一個固定的圖像分割閾值,通過此圖像分割閾值對視頻流的每一幀進(jìn)行分割,得到幀圖像。),同時將采集的視頻流通過近距離無線傳輸給一個指令識別服務(wù)器,移動終端和收到的視頻流的指令識別服務(wù)器分別進(jìn)行下述處理:
s3:指令識別服務(wù)器依次提取接收視頻流每幀的指令類型值:
s3-1:對視頻流的幀圖像進(jìn)行膚色提取處理,得到膚色區(qū)域:
膚色提取即膚色檢測,是利用膚色ycbcr顏色空間色彩模型進(jìn)行提取,人的膚色在外觀上的差異是由色度引起的,不同人的膚色分布集中在較小的區(qū)域內(nèi)。膚色的ycbcr顏色空間cbcr平面分布在近似的橢圓區(qū)域內(nèi),通過判斷當(dāng)前像素點的cbcr值是否落在膚色分布的橢圓區(qū)域內(nèi),就可以確認(rèn)當(dāng)前像素點是否屬于膚色。
因為移動端拍攝的圖像基本都為rgb顏色空間,故首先將幀圖像轉(zhuǎn)換成ycbcr顏色空間,并且在cbcr平面進(jìn)行投影,再進(jìn)行非線性變換k-l變換。根據(jù)膚色模型對像素點進(jìn)行篩選得到膚色區(qū)域,并將膚色區(qū)域均分為多個子區(qū)域,將各子區(qū)域的中心點的cbcr色度值作為當(dāng)前子區(qū)域的特征值,對膚色區(qū)域像素值進(jìn)行遍歷,將各子區(qū)域的cbcr色度值替換為當(dāng)前子區(qū)域的特征值。
s3-2:對得到的膚色區(qū)域的圖像進(jìn)行凸包檢測,首先對圖像進(jìn)行去噪和灰度化處理,設(shè)置輪廓檢測參數(shù),進(jìn)行閾值化操作,然后利用findcontours進(jìn)行輪廓檢測,檢測輸出結(jié)果為vector<vector<vec4i>>,其中vector是一種向量存儲數(shù)據(jù)集合,vec4i存儲了起始點、結(jié)束點、距離以及最遠(yuǎn)點到凸包的距離。凸包檢測會得到多個凸包缺陷,每一個凸包缺陷由n個vec4i進(jìn)行描述,據(jù)此形成一個指令特征值。
s3-3:基于預(yù)先構(gòu)建的指令分類器對當(dāng)前幀的指令特征值進(jìn)行指令類型匹配,并將第一個匹配結(jié)果作為當(dāng)前幀的指令類型值,即若當(dāng)前幀存在多個指令特征值,則串行對各指令特征值進(jìn)行分類匹配處理,每次從未匹配的指令特征值中任意選取一個,直到得到匹配結(jié)果則向移動端返回當(dāng)前幀的指令類型值。
其中構(gòu)建的指令分類器的具體過程為:
首先,以不同的手勢圖像作為訓(xùn)練樣本,對訓(xùn)練樣本進(jìn)行輪廓檢測,將輪廓檢測結(jié)果作為指令模型樣本值。
其中輪廓檢測具體為:對訓(xùn)練樣本圖像進(jìn)行凸包檢測,首先對圖像進(jìn)行去噪和灰度化處理,設(shè)置輪廓檢測參數(shù),進(jìn)行閾值化操作,然后利用findcontours進(jìn)行輪廓檢測,檢測輸出結(jié)果為vector<vector<vec4i>>,其中vector是一種向量存儲數(shù)據(jù)集合,其中vec4i存儲了起始點、結(jié)束點、距離以及最遠(yuǎn)點到凸包的距離。凸包檢測會得到多個凸包缺陷,每一個凸包缺陷由n個vec4i進(jìn)行描述,據(jù)此形成一個指令模型樣本描述符,即指令模型樣本值。
然后,基于得到的指令模型樣本值構(gòu)建關(guān)于手勢與指令類型的分類器。
s4:移動端的ar成像。
s4-1:攝像頭參數(shù)初始化,包括焦距、光圈、像素等;導(dǎo)入預(yù)設(shè)置的目標(biāo)對象文件,即由多個目標(biāo)對象圖像(矩形圖像塊)構(gòu)成的文件;
s4-2:計算計算屏幕坐標(biāo)(即圖像的三維坐標(biāo)注冊):
根據(jù)公式x′=[r|t]*x得到攝像機坐標(biāo)x′,其中r為移動終端的攝像裝置的外參旋轉(zhuǎn)矩陣,t是平移向量,x是世界坐標(biāo),符號“丨”表示矩陣分塊;
然后根據(jù)公式
s4-3:對本地存儲的幀圖像進(jìn)行二值化處理,再對各二值圖像進(jìn)行連通域分析,將連通域中的四邊行區(qū)域作為候選區(qū)域,將每一個候選區(qū)域與目標(biāo)對象圖像進(jìn)行圖像匹配,將與目標(biāo)對象匹配的候選區(qū)域作為幀圖像的標(biāo)識區(qū)域,并對幀圖像的標(biāo)識區(qū)域中的非矩形基于屏幕坐標(biāo)對其進(jìn)行坐標(biāo)變換,變換為矩形的標(biāo)識區(qū)域,即最終得到的幀圖像的標(biāo)識區(qū)域均為矩形區(qū)域,以用于對應(yīng)的指令類型。
其中匹配標(biāo)識區(qū)域具體為:假設(shè)有n幅關(guān)于目標(biāo)對象的圖像,其中各目標(biāo)對象包括m個標(biāo)定點,產(chǎn)生評價函數(shù):
s4-4:移動端基于本地預(yù)設(shè)的指令類型值與虛擬物體(標(biāo)識物體)的映射關(guān)系,根據(jù)收到的當(dāng)前幀的指令類型值查找對應(yīng)的標(biāo)識物體,并根據(jù)s4-3得到的標(biāo)識區(qū)域相對矩形的形變,確定相機針對標(biāo)識物體的具體姿態(tài),將標(biāo)識物體疊加融合到當(dāng)前幀的所有標(biāo)識區(qū)域內(nèi),得到真實圖像與虛擬物體融合的幀圖像;
s5:移動端開啟監(jiān)聽指令識別服務(wù)器的服務(wù),當(dāng)接收到的指令類型值出現(xiàn)變化時,查找與之匹配的虛擬物體,否則繼續(xù)基于當(dāng)前虛擬物體和標(biāo)識區(qū)域坐標(biāo)變化加載虛擬物體的坐標(biāo),實現(xiàn)操作虛擬模型的目的。