韓忠偉+馮長寶+孫沫麗+佟鑫


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