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