扈樂華 顧思思 李 文
(1.湖南科技學院 電子與信息工程學院,湖南永州 425199;2.湖南科技學院 教務處,湖南永州 425199)
開發(fā)小游戲程序關鍵在于解決兩個問題,第一個是連接判斷算法,另一個是人臉識別算法。
連接判斷的方法有很多,常用的有分類判斷算法、A-Star 算法和廣度優(yōu)先算法[1]。其中分類判斷算法是根據(jù)具體連線的次數(shù)來進行分類判斷 的,存在三種情況:有0 個折線,1 個折線,2 個折線,不能超過三個折線;A-Star 算法是在靜態(tài)條件下求最短路徑使用的最有效的一種直接搜尋方法,也是一種非常有效的解決搜索問題的算法,算法的效率與所采用的預估值差值相關聯(lián),預估值越接近真實值,算法的速度越快;廣度優(yōu)先算法將所有滿足條件的塊存放在同一個集合里,只需要簡單判斷另一個點是否也在此集合當中即可。
判斷人臉識別是圖像處理中一個非常重要的課題,可以包括四個步驟:人臉圖像數(shù)據(jù)采集、人臉圖像數(shù)據(jù)預處理、人臉特征提取和人臉的識別[2]。本系統(tǒng)對算法要求不高,需要在靜態(tài)圖片下識別特征比較明顯的人臉圖片,采用常用的 AdaBoost 算法檢測出人臉[3],并將人臉范圍標注出來。然后按照一定比例進行裁剪縮放形成所需要的圖像資源。
系統(tǒng)主要包括四個大的模塊實現(xiàn),圖像塊模塊、圖像獲取模塊、界面設置模塊、參數(shù)配置模塊。如圖2 所示:
圖1 系統(tǒng)模塊圖
圖像塊模塊:主要包括圖像塊類、圖像塊編號類、圖像塊列表類。
圖像獲取模塊:主要包括圖像獲取、人臉識別、縮放、剪切處理類。
界面設置模塊:主要包括游戲首界面、文件瀏覽界面、游戲主界面。
參數(shù)配置模塊:主要包括游戲時間、游戲連線、游戲音樂、游戲總體設置。
系統(tǒng)采用分類判斷算法,具體劃分為如下3 種情況來分析。
⑴0 折線(一條直線連接)
將連接的方式分為水平和垂直兩個方向,如圖2 所示,只需要簡單判斷兩個點之間有沒有其他障礙物。
圖2 0 折線
⑵1 個折線(兩條直線)
此連接方式也具有兩種方式,水平方向檢測以及垂直方向檢測,如圖3 所示只要做兩個方向的檢測,檢測一條路徑上是否存在障礙物,最終來判斷是否可連接。
圖3 1 折線
⑶2 個折線
2 個折線可以分解為1 個折線再加上一個水平方向檢測或垂直方向檢測,如圖4 所示。垂直和水平方向分別穿過紅點的直線由四條,遍歷四條直線上兩個紅點之間的所有點,只要存在點滿足存在一個點至一個紅點通過水平或垂直檢測,同時到另一個紅點可通過一個拐角連接檢測。
圖4 2 折線
系統(tǒng)主要采用 AdaBoost 算法實現(xiàn),AdaBoost算法重點在于弱分類器和強分類器。重點介紹弱分類器選取和訓練。
首先選取弱分類器,基本的算法公式如下。
期中參數(shù)f 是特征,θ 是閾值,p 指的是不等號方向,x 表示檢測子窗口。針對每一個特征f,訓練對應的弱分類器 h(x,f,p,θ)。
最后訓練弱分類器主要可以分文以下四個步驟:
⑴針對每一個特征f,計算所有對應的特征值;
⑵排序特征值;
⑶對排序好的特征值的計算;
⑷閾值分類誤差值的計算,公式如下:
系統(tǒng)實現(xiàn)主要采用 Java 開發(fā)語言,Android Studio 集成開發(fā)工具進行程序開發(fā),PC 端的模擬器采用開源的夜神模擬器。按照模塊劃分依次實現(xiàn),并經(jīng)過多種方式的測試,游戲運行流暢。本游戲主要可以在Android 智能終端以及PC 端Android 模擬器運行。最終游戲實現(xiàn)的主界面效果如圖5 所示。
圖5 游戲主界面
基于人臉識別的連連看游戲軟件,實現(xiàn)了四大功能模塊,即圖像塊模塊、圖像獲取模塊、界面模塊、參數(shù)配置模塊。其中要解決的關鍵問題是實現(xiàn)人臉識別算法以及連接判斷算法。游戲程序界面美觀,趣味性強,也具備較強的可玩性。該款游戲與同類游戲相比,客戶可以根據(jù)需求上傳自己的個性照片。但是,采用的人臉識別算法也存在完善空間,對像素差或者人臉模糊圖片識別并沒有達到理想效果,在后期工作中,需要更加進一步對人臉識別算法進行研究,達到更加高的識別效率。