韓忠偉+馮長(zhǎng)寶+孫沫麗+佟鑫
摘 要 本文應(yīng)用的技術(shù)采用OpenCV技術(shù)提取主要三維,運(yùn)用OpenGL功能強(qiáng)大且適用于所有的主流操作系統(tǒng)平臺(tái)應(yīng)用三維圖形信息構(gòu)建三維圖形;將全部圖形信息運(yùn)行在flash平臺(tái)構(gòu)建游戲三維場(chǎng)景實(shí)現(xiàn)三維游戲的框架搭建。
關(guān)鍵詞 OpenGL;OpenCV:flash平臺(tái);三維游戲
中圖分類號(hào) TP3
文獻(xiàn)標(biāo)識(shí)碼 A
文章編號(hào) 1674-6708(2016) 154-0059-02
Flash的游戲制作中對(duì)于三維游戲的插件應(yīng)用一直以來(lái)存在質(zhì)量及速度的不足,基于OpenGL和OpenCV技術(shù)進(jìn)行圖形的三維構(gòu)建應(yīng)用flashCC建立Flash三維游戲優(yōu)勢(shì)明顯,首先是可以應(yīng)用C++語(yǔ)言進(jìn)行圖形建模這樣就在構(gòu)建及渲染的速度上占有優(yōu)勢(shì),其次應(yīng)用該技術(shù)建模不依托于3D繪制軟件經(jīng)驗(yàn),再次呈現(xiàn)出來(lái)的flash三維游戲更具有游戲的沉浸性。本文所做的研究既有利于建模又有利于移動(dòng)端Flash三維游戲的擴(kuò)展。
1 方案設(shè)計(jì)
1) OpenCV識(shí)別技術(shù):通過(guò)OpenCV的LBP分類算法實(shí)現(xiàn)x,y軸坐標(biāo)及半徑極限求導(dǎo),逼近柏鄰點(diǎn)坐標(biāo)進(jìn)行修正指導(dǎo)遍歷出無(wú)限逼近所識(shí)別圖形的外圍,實(shí)現(xiàn)坐標(biāo)的數(shù)值獲取回傳給OpenGL函數(shù)。如果單純考慮分類算法的實(shí)用性,那么該算法中所分類的只是一個(gè)小的區(qū)域的范圍,不能夠?qū)⑺R(shí)別的區(qū)域全部的歸納出來(lái),這顯然不符合要進(jìn)行測(cè)試的要求。為了適應(yīng)不同規(guī)模及周邊顏色及范圍的干擾需要將原有的算法進(jìn)行改進(jìn),LBP分類算法改進(jìn)中,將原有的局限性的范圍擴(kuò)張到無(wú)限大,這也是一個(gè)局限性的因?yàn)閿z像的范圍有限制,所以應(yīng)用圓形的區(qū)域進(jìn)行掃描,改進(jìn)后的LBP算子允許在半徑為R的圓形鄰域內(nèi)有任意多個(gè)像素點(diǎn)。從而得到了諸如半徑為R的圓形區(qū)域內(nèi)含有P個(gè)采樣點(diǎn)的LBP算子;
2)特征提?。夯舴蜃儞Q(Hough Transform)是圖像處理中的一種特征提取技術(shù)圓是在三維空間有下面這3個(gè)參數(shù)來(lái)表示了,其對(duì)應(yīng)一條三維空間的曲線,那么與二維的霍夫線變換同樣的道理,對(duì)于多個(gè)邊緣點(diǎn)越多這些點(diǎn)對(duì)應(yīng)的三維空間曲線交于一點(diǎn)那么經(jīng)過(guò)的共同圓上的點(diǎn)就越多,采用設(shè)置閾值的方法來(lái)判斷一個(gè)圓是否被檢測(cè)到,運(yùn)用HoughCircles函數(shù)可以利用霍夫變換算法檢測(cè)處出灰度圖中的圓。
3) OpenGL重建模型:OpenGL是一款消耗內(nèi)存極低的圖形加速接口,應(yīng)用類庫(kù)中的函數(shù)可以直接繪制出基礎(chǔ)的圖形,尤其是三維圖形的繪制。在獲取物體坐標(biāo)值后應(yīng)用自帶類庫(kù)及改進(jìn)對(duì)于物體建模的算法可以實(shí)現(xiàn)三維圖形的繪制,同時(shí)加入高斯函數(shù)及貝葉斯公式改進(jìn)對(duì)于三維建模的基礎(chǔ)算法可以使得坐標(biāo)的轉(zhuǎn)換更加的精準(zhǔn),可以生成更為復(fù)雜的圖形。
2 程序設(shè)計(jì)
1) OpenCV的圖形特征提取編寫
實(shí)驗(yàn)過(guò)程中盡量采用霍夫函數(shù)變換來(lái)解決圖形識(shí)別的問(wèn)題。基于圖形的識(shí)別過(guò)程中由于識(shí)別的圖形有的簡(jiǎn)單有的十分的復(fù)雜,本文在研究過(guò)程中采用將圖形切割成集中簡(jiǎn)單的圖形進(jìn)行識(shí)別。經(jīng)典Hough變換的實(shí)質(zhì)是對(duì)圖象進(jìn)行坐標(biāo)變換,使變換的結(jié)果更易于識(shí)別和檢測(cè)。
2)邊緣檢測(cè)
Canny算子用作邊緣檢測(cè)與hough相結(jié)合對(duì)邊緣降噪有很好的影響性;canny算法主要是從高斯函數(shù)中獲取如下公式1:
canny算法主要是從x,y坐標(biāo)來(lái)歸一化圖形邊緣。設(shè)x,?表示兩維高斯函數(shù)表示圖像,算子中的參數(shù)可以在橫軸及縱軸進(jìn)行逼近求導(dǎo),在兩個(gè)方向進(jìn)行求導(dǎo)可以大大降低邊緣噪點(diǎn)的干擾,
識(shí)別公式設(shè)計(jì)
公式中的r為要識(shí)別物體的圓周逼近半徑,h為物體高度,w為寬度,x,y為圓點(diǎn)坐標(biāo)
將x,y方向帶入canny算法得出計(jì)算的公式。
K值為遞歸條件,節(jié)點(diǎn)矢量。
3) OpenGL模型重構(gòu):構(gòu)建三維圖像的方法主要是應(yīng)用二維坐標(biāo)映射到三維模型,這樣的設(shè)計(jì)主要是依托于反映射。公式的變換主要有NURBS曲面構(gòu)建公式(4)
K值為遞歸條件,節(jié)點(diǎn)矢量。
OpenGL的移植性可為構(gòu)建模型到Flash平臺(tái)提供良好的底層支持。渲染的高效性為建構(gòu)物體提供紋理映射當(dāng)OpenGL圖形接口調(diào)用到OpenCV所識(shí)別到的圖形屬性后,將所得到的值按照?qǐng)D形的固定屬性進(jìn)行參數(shù)傳值。當(dāng)程序簡(jiǎn)單執(zhí)行圖形建構(gòu)后為使圖形在場(chǎng)景中顯示出現(xiàn)實(shí)的效果,這樣的正交投影會(huì)使得圖形矩陣更具有逼真效果。
4)在flash平臺(tái)上實(shí)現(xiàn)三維場(chǎng)景。本文通過(guò)研究Flascc這個(gè)編譯器將flash軟件與C++編譯下的OpenGL圖形模型鏈接在一起。Flash c++編譯器(FlasCC)提供了一個(gè)完整的基于GCC C/c++開發(fā)環(huán)境,可以把C/C++代碼編譯到指定的Adobe Flash Player和Adobe AIR中。
3 實(shí)驗(yàn)結(jié)果
4 結(jié)論
本文利用OpenGL和OpenCV技術(shù)實(shí)現(xiàn)了識(shí)別圖形并將圖形的屬性傳值給OpenGL程序,由C++編譯OpenGL處理的數(shù)據(jù),將數(shù)據(jù)的全部?jī)?nèi)容與構(gòu)建三維圖形,在構(gòu)建后將圖形進(jìn)行紋理映射使圖形更具有增強(qiáng)現(xiàn)實(shí)的視覺感。實(shí)現(xiàn)了三維圖形的效果。在加載圖形效果測(cè)試后,運(yùn)行FlashCC編譯器,將Flash平臺(tái)下的AS代碼層調(diào)用C++編譯好的OpenGL圖形處理類,這樣融合了三維圖形的場(chǎng)景及構(gòu)建的物體結(jié)合了AS調(diào)用的Flash本身的類庫(kù)形成和了具有Flash網(wǎng)頁(yè)獨(dú)特平臺(tái)的三維游戲場(chǎng)景。在實(shí)驗(yàn)的識(shí)別過(guò)程中分類準(zhǔn)確率達(dá)到70%,測(cè)試樣本只需平均9秒鐘時(shí)間即可得到結(jié)果反饋。本研究有效的總結(jié)了識(shí)別技術(shù)與建模技術(shù)的融合,并最終實(shí)現(xiàn)C++編譯三維效果呈現(xiàn)在Flash平臺(tái)上,在flash三維構(gòu)建領(lǐng)域取得了一些研究的成果。在下一階段工作中,將增加粒子效果的真實(shí)性,同時(shí)將考慮在移動(dòng)終端進(jìn)行渲染的預(yù)處理功能來(lái)提高系統(tǒng)運(yùn)行效率。