毛江雄++李曉蕾
摘 要:針對(duì)目前交友平臺(tái)“搜友引擎”大多是基于文本搜索而建立,用戶難以用文字準(zhǔn)確表達(dá)交友需求,使得許多會(huì)員不能搜索到心儀的交友對(duì)象。從而提出了一種基于JavaCV視覺(jué)處理技術(shù)的智能交友平臺(tái)。
關(guān)鍵詞:JavaCV 人臉識(shí)別 交友平臺(tái)
中圖分類號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2014)03(a)-0022-01
隨著信息技術(shù)的不斷革新,使得網(wǎng)絡(luò)交友方式近年開(kāi)始普及,隨之誕生的交友網(wǎng)站打破了傳統(tǒng)交友的局限性,為人們提供了不受時(shí)間、空間限制的交友平臺(tái),擴(kuò)大生活交友圈。然而,當(dāng)前交友平臺(tái)的好友搜索機(jī)制不健全,只能通過(guò)文本搜索好友,不然準(zhǔn)確的描述出用戶交友的需求,使得許多用戶不能搜索到心儀的交友對(duì)象。
基于JavaCV視覺(jué)處理的交友平臺(tái)在文本搜索的基礎(chǔ)之上添加了圖像搜索技術(shù),將枯燥的文字與生動(dòng)的圖像相結(jié)合,能夠充分滿足會(huì)員的需求,不僅可以提高交友的效率,更能增加成功率。在眾多的視覺(jué)處理中,JavaCV是一款開(kāi)源的視覺(jué)處理庫(kù),帶有硬件加速的全屏幕圖像顯示,用戶友好的幾何和色彩的相機(jī)校準(zhǔn)等功能,使視覺(jué)處理平臺(tái)友好性、精準(zhǔn)性提高。
1 JavaCV視覺(jué)處理技術(shù)的研究
1.1 JavaCV的原理
JavaCV是一款開(kāi)源的視覺(jué)處理庫(kù),其中封裝了OpenCV、libdc1394、OpenKinect、videoInput和ARToolKitPlus等計(jì)算機(jī)視覺(jué)編程人員常用庫(kù)的接口,通過(guò)調(diào)用接口來(lái)實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺(jué)很多方面的通用算法。
1.2 JavaCV視覺(jué)處理過(guò)程
JavaCV視覺(jué)處理包括三個(gè)步驟:加載圖像、顯示圖像、處理圖像。
(1)加載圖像:圖像之間有很多不同的類型,其內(nèi)部結(jié)構(gòu)也不同,想要讀入圖像文件到內(nèi)存,必需根據(jù)圖像內(nèi)部結(jié)構(gòu)選擇適合的方法進(jìn)行讀取。JavaCV的視覺(jué)處理庫(kù)中提供了相應(yīng)函數(shù),可以將任何格式的圖像數(shù)據(jù)從文件中加載進(jìn)來(lái),方便了后續(xù)的處理。
(2)顯示圖像:在窗口中顯示出加載的圖像,是由JavaCV的視覺(jué)處理庫(kù)提供兩個(gè)函數(shù)去實(shí)現(xiàn),一個(gè)函數(shù)用于在屏幕上創(chuàng)建一個(gè)將被顯示的圖像包含于在其中的窗口;另一個(gè)函數(shù)用于在已經(jīng)創(chuàng)建好的窗口中顯示需要加載的圖像。
(3)處理圖像:主要運(yùn)用JavaCV中的函數(shù)去實(shí)現(xiàn)圖像處理過(guò)程中的一些基本算法,包括彩色轉(zhuǎn)換為灰度、形態(tài)學(xué)操作、閾值2值化和邊緣提取等。
2 搭建智能交友平臺(tái)
2.1 系統(tǒng)的功能
本系統(tǒng)通過(guò)面向?qū)ο蟮姆椒ㄟM(jìn)行設(shè)計(jì),采用流行的B/S體系結(jié)構(gòu)建模,主要用到的技術(shù)工具有Tomcat6.0應(yīng)用服務(wù)器、SQL Server數(shù)據(jù)庫(kù)服務(wù)器,應(yīng)用java語(yǔ)言開(kāi)發(fā)。同時(shí)配備了與之匹配的移動(dòng)客戶端。
智能交友平臺(tái)主要是五大功能模塊:基于JavaCV的圖像搜索、交友咨詢、交友俱樂(lè)部、移動(dòng)客戶端、在線聊天等。
(1)基于JavaCV的圖像搜索:通過(guò)搜索圖像文本或者視覺(jué)特征,為用戶提供交友平臺(tái)上相關(guān)會(huì)員圖形圖像資料檢索服務(wù),找到與條件契合度最高的會(huì)員,從而提高搜索準(zhǔn)確性。
(2)交友咨詢:幫助用戶分析解決交友問(wèn)題或提出交友待人建議,并通過(guò)用戶自身?xiàng)l件,為其推薦具有共同話題和性格匹配的會(huì)員,提高交友成功率。
(3)交友俱樂(lè)部:在實(shí)名認(rèn)證的前提之下,為會(huì)員提供進(jìn)一步的交流溝通。
(4)移動(dòng)客戶端:提供基于Android系統(tǒng)的移動(dòng)交友客戶端,通過(guò)手機(jī)終端實(shí)時(shí)隨時(shí)隨地交流溝通。
(5)在線聊天:方便會(huì)員之間的溝通,在線互動(dòng)、了解,促進(jìn)情感交流。
2.2 實(shí)現(xiàn)過(guò)程
在Android系統(tǒng)下基于JavaCV的視覺(jué)處理實(shí)現(xiàn)需利用Android應(yīng)用程序框架編寫Android端代碼;通過(guò)JNI與JavaCV接口編寫本地C/C++代碼,并利用AndroidNDK對(duì)其進(jìn)行編譯生成Java代碼可調(diào)用的共享庫(kù),最后通過(guò)SDK生產(chǎn)Android應(yīng)用程序。
當(dāng)使用JavaCV的圖像搜索功能時(shí),系統(tǒng)會(huì)自動(dòng)讀取存儲(chǔ)在客戶端上的圖片,并顯示加載到屏幕上,用戶選擇其中的一幅圖片進(jìn)行搜索,系統(tǒng)后臺(tái)根據(jù)所上傳的圖片開(kāi)始對(duì)其進(jìn)行視覺(jué)處理。
2.2.1 建立靜態(tài)UI
首先,基于JavaCV的圖像搜索功能,需要新建兩個(gè)xml布局文件。分別加載系統(tǒng)中的圖片到屏幕中和顯示需要進(jìn)行視覺(jué)處理的圖片。其次,新建兩個(gè)Java源文件并繼承Activity類。通過(guò)相應(yīng)方法對(duì)UI進(jìn)行布局。通過(guò)設(shè)置適配器來(lái)顯示UI中的控件,并加載系統(tǒng)內(nèi)的圖片資源。
2.2.2 實(shí)現(xiàn)后臺(tái)運(yùn)行視覺(jué)處理函數(shù)
Service是運(yùn)行在后臺(tái)的服務(wù),與其他組件一樣都是運(yùn)行在主線程中,主要負(fù)責(zé)分配處理事件給用戶接口的插件,確保UI操作在Service運(yùn)行程中不會(huì)被阻塞,費(fèi)時(shí)的操作應(yīng)該運(yùn)行在其他線程。本系統(tǒng)通過(guò)IntentService啟動(dòng)服務(wù),這時(shí)系統(tǒng)會(huì)建立一個(gè)新線程,并在此線程中執(zhí)行onHandleIntent方法,所以視覺(jué)處理操作可以在此方法中實(shí)現(xiàn)。
2.2.3 更新UI
當(dāng)視覺(jué)處理操作完成時(shí),系統(tǒng)獲得人臉位置信息并將此信息發(fā)送到主線程UI更新方法中進(jìn)行更新,不能通過(guò)onHandleIntent方法進(jìn)行實(shí)現(xiàn),所以必需在主線程中完成UI更新。
2.2.4 利用JNI實(shí)現(xiàn)基于JavaCV的視覺(jué)處理函數(shù)
先建立native方法所對(duì)應(yīng)的C/C++函數(shù)聲明,通過(guò)JDK提供的javah工具可生成包含此函數(shù)聲明的頭文件,并執(zhí)行javah命令。隨后在工程目錄下新建JNI文件夾,將生成的頭文件拷貝到此文件夾下,同時(shí)新建C++源代碼文件并引入此頭文件,編寫函數(shù)實(shí)現(xiàn)代碼。
2.2.5 設(shè)置客戶端人臉位置信息
客戶端通過(guò)JNI對(duì)C/C++端進(jìn)行交互,來(lái)獲取IntentService類中存放識(shí)別到的人臉的位置信息,并加載到客戶端中,當(dāng)JavaCV視覺(jué)處理操作執(zhí)行完成后對(duì)其進(jìn)更新與讀取。
3 研究結(jié)果與分析
本文中的系統(tǒng)主要功能是運(yùn)用JavaCV視覺(jué)處理技術(shù),為用戶提供交友平臺(tái)上相關(guān)會(huì)員圖形圖像資料檢索服務(wù),通過(guò)輸入與圖片內(nèi)容相似的關(guān)鍵字與數(shù)據(jù)庫(kù)中存儲(chǔ)的特征模板進(jìn)行搜索匹配,通過(guò)設(shè)定一個(gè)閾值,當(dāng)相似度超過(guò)這一閾值,則把匹配得到的結(jié)果輸出。從而提高交友的效率,更能增加成功率。
4 結(jié)語(yǔ)
本文的系統(tǒng)基于JavaCV視覺(jué)處理打造了一個(gè)以誠(chéng)信交友、圖像接收與搜索、情感咨詢等功能為基礎(chǔ)的智能交友平臺(tái)。提供一個(gè)為了人們誠(chéng)心交友,而去結(jié)交認(rèn)識(shí)他人、尋找知己的一個(gè)網(wǎng)絡(luò)交友平臺(tái)。通過(guò)該平臺(tái)可以結(jié)識(shí)來(lái)自全國(guó)各地的網(wǎng)友。也是基于網(wǎng)絡(luò)平臺(tái)的廣泛性、互通性、娛樂(lè)性、經(jīng)濟(jì)性、安全性等優(yōu)點(diǎn)而立足本世紀(jì)的一種網(wǎng)絡(luò)交流方式中的互動(dòng)型服務(wù)平臺(tái)。
參考文獻(xiàn)
[1] 姚昱曼,劉衛(wèi)國(guó).Android的架構(gòu)與應(yīng)用開(kāi)發(fā)研究[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2008(11).
[2] 趙宏偉.Android NDK開(kāi)發(fā)環(huán)境實(shí)現(xiàn)與應(yīng)用[J].電腦知識(shí)與技術(shù),2010(35).
[3] 張瑩,李勇平,敖新宇.基于OpenCV通用人臉檢測(cè)模塊設(shè)計(jì)[J].計(jì)算機(jī)工程與科學(xué),2011(1):97-101.
[4] 王宏彬,李燈熬,趙菊敏,等.利用OpenCV實(shí)現(xiàn)在Android系統(tǒng)下的人臉檢測(cè)[J].軟件,2011,32(12).endprint