本發(fā)明涉及圖像識別技術(shù)領(lǐng)域,具體涉及一種基于詞匯樹檢索與暴力匹配的圖像識別方法。
背景技術(shù):
實(shí)時(shí)圖像搜索是一種可以支持用戶自定義的,超大規(guī)模的圖像數(shù)據(jù)庫的實(shí)時(shí)圖像識別技術(shù)。它可以實(shí)現(xiàn)對移動端設(shè)備的圖像輸入內(nèi)容進(jìn)行實(shí)時(shí)的識別。整個(gè)識別過程是在云端進(jìn)行的,這樣可以使用戶無需將龐大的圖像數(shù)據(jù)庫下載到本地,并且也可以充分地利用云端計(jì)算資源對數(shù)據(jù)庫進(jìn)行高速的檢索。
然而,目前基于云端的實(shí)時(shí)圖像識別技術(shù)其通過上傳本地圖片到服務(wù)器,服務(wù)器將帶識別的圖片與存儲的圖片逐一進(jìn)行比較,其存在以下缺陷:在無線網(wǎng)絡(luò)較差的情況下,用戶實(shí)時(shí)上傳圖像的速度會受到很大影響。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明為了解決上述技術(shù)問題提供一種基于詞匯樹檢索與暴力匹配的圖像識別方法。
本發(fā)明通過下述技術(shù)方案實(shí)現(xiàn):
一種基于詞匯樹檢索與暴力匹配的圖像識別方法,包括以下步驟,
圖像獲取步驟:獲取目標(biāo)圖像,并對目標(biāo)圖像使用ORB算法提取所有ORB特征點(diǎn),并對每一個(gè)ORB特征點(diǎn)生成相應(yīng)的描述子,生成該目標(biāo)圖像的ORB描述子序列;
圖像上傳步驟:將該ORB描述子序列上傳到基于描述子樣本的云端圖像數(shù)據(jù)庫中;
圖像識別步驟:云端圖像數(shù)據(jù)庫利用檢索詞匯樹的檢索算法對圖像進(jìn)行匹配識別并返回匹配度靠前的N張候選圖像,其中N為大于1的自然數(shù);
暴力匹配步驟:在云端圖像數(shù)據(jù)庫中找到候選圖像,并利用字符串匹配算法對候選圖像和目標(biāo)圖像的ORB描述子序列做一對一的暴力匹配以確定最佳匹配圖像。
本發(fā)明通過提取目標(biāo)圖像的ORB特征點(diǎn)以生成ORB描述子序列,并將ORB描述子序列上傳至基于描述子樣本的云端圖像數(shù)據(jù)庫中進(jìn)行檢索匹配,相比于上傳目標(biāo)圖像的方式,描述子的數(shù)據(jù)量小,減小對網(wǎng)絡(luò)的要求,即網(wǎng)絡(luò)較差對識別的速度影響小。在詞匯樹檢索完成之后利用字符串匹配算法識別最佳匹配圖像,保證了快速檢索的同時(shí)極大提高檢索的精度。
所述云端圖像數(shù)據(jù)庫的生成方法包括以下步驟:
描述子生成步驟:收集圖像,提取每張圖像的ORB特征點(diǎn),并對每個(gè)ORB特征點(diǎn)生成相應(yīng)的描述子以得到描述子樣本;
樹狀模型生成步驟:根據(jù)描述子樣本生成圖像數(shù)據(jù)庫的樹狀模型;
數(shù)據(jù)庫生成步驟:向樹狀模型中添加圖像,建立樹狀結(jié)構(gòu)的圖像數(shù)據(jù)庫。
現(xiàn)有的圖像匹配是圖像和圖像之間的匹配,檢索的時(shí)間的增加隨著圖像的增加線性增長。一個(gè)特征描述子到數(shù)據(jù)庫里匹配所有特征描述子,數(shù)據(jù)庫里的描述子越多,匹配的時(shí)間就越長,因?yàn)楸┝ζヅ涫且灰黄ヅ?,最后尋找距離最短的匹配組。在保證一定準(zhǔn)確度的前提下,其檢索速度和廣度存在矛盾,這兩點(diǎn)都與云端圖像數(shù)據(jù)庫的大小密切相關(guān)。而采用上述方法,由于數(shù)據(jù)庫中的描述子已經(jīng)進(jìn)行樹狀分類,在進(jìn)行匹配的時(shí)候,待匹配的描述子會尋找與其最相似的分支,而不需要遍歷真?zhèn)€數(shù)據(jù)庫,即樹狀檢索結(jié)構(gòu)可以讓待匹配的特征描述子不用一一匹配所有的描述子,檢索時(shí)間主要跟經(jīng)過的節(jié)點(diǎn)數(shù)有關(guān)系,數(shù)據(jù)庫中的描述子多不代表檢索經(jīng)過的節(jié)點(diǎn)數(shù)越多。所以檢索時(shí)間不是按數(shù)據(jù)庫的大小線性增加,而是對數(shù)增長,解決檢索廣度與速度之間的矛盾。而對于新加入圖像描述子會加入相應(yīng)的分支,而不是單純的增加,因此在廣度上也能很好的解決大數(shù)據(jù)庫的檢索情況。
所述描述子生成步驟具體為:收集圖像,分別對每張圖像進(jìn)行縮放以建立一個(gè)圖像金字塔,對圖像的各個(gè)尺度使用ORB算法提取所有ORB特征點(diǎn),并對每一個(gè)ORB特征點(diǎn)生成相應(yīng)的描述子。
所述樹狀模型生成步驟為:利用描述子之間的歐式距離作為判據(jù),對描述子樣本用K-means算法做聚合分類,生成圖像數(shù)據(jù)庫的樹狀模型。
所述樹狀模型生成步驟具體為:
A1、定義一個(gè)樹狀結(jié)構(gòu),其最大層數(shù)為L,每層最大子節(jié)點(diǎn)數(shù)為K;
A2、對描述子樣本用K-means算法做聚合分類,得到子節(jié)點(diǎn)分類結(jié)果,將每個(gè)子節(jié)點(diǎn)內(nèi)所有描述子的平均描述子作為該子節(jié)點(diǎn)的描述子;
A3、若該子節(jié)點(diǎn)內(nèi)描述子樣本的數(shù)量大于K的兩倍,則對該子節(jié)點(diǎn)內(nèi)的描述子樣本作進(jìn)一步的K-means分類,重復(fù)該步驟,直至樹狀結(jié)構(gòu)的最大層數(shù)小于等于L或者沒有子節(jié)點(diǎn)的描述子樣本數(shù)量大于K的兩倍;
A4、對所有的子節(jié)點(diǎn)依次排序標(biāo)號,生成圖像數(shù)據(jù)庫的樹狀模型。
所述數(shù)據(jù)庫生成步驟為:
B1、給圖像一個(gè)唯一的編號;
B2、對該圖像進(jìn)行縮放以建立一個(gè)圖像金字塔,對圖像的各個(gè)尺度使用ORB算法提取所有ORB特征點(diǎn),并對每一個(gè)ORB特征點(diǎn)生成相應(yīng)的描述子;
B3、將該圖像的所有描述子利用樹狀模型進(jìn)行分類,并將每個(gè)描述子的分類結(jié)果關(guān)聯(lián)在其分配到的子節(jié)點(diǎn)上;
B4、對每一張圖像做B1至B3的步驟,得到具有樹狀結(jié)構(gòu)的圖像數(shù)據(jù)庫。
作為優(yōu)選,所述最佳匹配圖像為暴力匹配中描述子序列的字符串匹配度最高的那張。
本發(fā)明與現(xiàn)有技術(shù)相比,具有如下的優(yōu)點(diǎn)和有益效果:
1、本發(fā)明得圖像數(shù)據(jù)庫基于描述子樣本構(gòu)建,在識別目標(biāo)圖像時(shí),通過對目標(biāo)圖像描述子的提取實(shí)現(xiàn)檢索匹配,相比于圖像,描述子的數(shù)據(jù)量小,網(wǎng)絡(luò)較差對識別的速度影響小。
2、本發(fā)明在詞匯樹檢索完成之后利用字符串匹配算法識別最佳匹配圖像,保證了快速檢索的同時(shí)極大提高檢索的精度。
3、本發(fā)明的方法基于樹狀檢索結(jié)構(gòu),其可讓待匹配的特征描述子不用一一匹配所有的描述子,檢索時(shí)間主要跟經(jīng)過的節(jié)點(diǎn)數(shù)有關(guān)系,隨著圖片數(shù)量的增加,其檢索時(shí)間不是按數(shù)據(jù)庫的大小線性增加,而是對數(shù)增長,大大提高檢索速度。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下面結(jié)合實(shí)施例,對本發(fā)明作進(jìn)一步的詳細(xì)說明,本發(fā)明的示意性實(shí)施方式及其說明僅用于解釋本發(fā)明,并不作為對本發(fā)明的限定。
實(shí)施例1
本實(shí)施例公開一種基于描述子樣本的云端圖像數(shù)據(jù)庫的生成方法,包括以下步驟:
描述子生成步驟:收集圖像,提取每張圖像的ORB特征點(diǎn),并對每個(gè)ORB特征點(diǎn)生成相應(yīng)的描述子以得到描述子樣本;
樹狀模型生成步驟:根據(jù)描述子樣本生成圖像數(shù)據(jù)庫的樹狀模型;
數(shù)據(jù)庫生成步驟:向樹狀模型中添加圖像,建立樹狀結(jié)構(gòu)的圖像數(shù)據(jù)庫。
具體的:
在描述子生成步驟中,收集的圖像數(shù)量要多且來自各種場景,一般需要幾萬張,其存放在一個(gè)文件夾內(nèi),常用的圖像格式均可,譬如JPG、JPEG、JPE、JFIF、BMP;分別對每張圖像進(jìn)行一定的縮放比例以建立一個(gè)圖像金字塔,對圖像的各個(gè)尺度使用ORB算法提取所有ORB特征點(diǎn),并對每一個(gè)ORB特征點(diǎn)生成相應(yīng)的描述子。對收集到的每個(gè)圖像均做該步驟的處理,ORB特征點(diǎn)的描述子是一個(gè)128位的二進(jìn)制序列。
在樹狀模型生成步驟中,利用描述子之間的歐式距離作為判據(jù),對描述子樣本用K-means算法做聚合分類,生成圖像數(shù)據(jù)庫的樹狀模型。樹狀模型生成后一般不做改動。較為詳細(xì)的,可采用下述步驟方法:
A1、定義一個(gè)樹狀結(jié)構(gòu),其最大層數(shù)為L,每層最大子節(jié)點(diǎn)數(shù)為K;
A2、對描述子樣本用K-means算法做聚合分類,得到子節(jié)點(diǎn)分類結(jié)果,將每個(gè)子節(jié)點(diǎn)內(nèi)所有描述子的平均描述子作為該子節(jié)點(diǎn)的描述子;
A3、若該子節(jié)點(diǎn)內(nèi)描述子樣本的數(shù)量大于K的兩倍,則對該子節(jié)點(diǎn)內(nèi)的描述子樣本作進(jìn)一步的K-means分類,重復(fù)該步驟,直至樹狀結(jié)構(gòu)的最大層數(shù)小于等于L或者沒有子節(jié)點(diǎn)的描述子樣本數(shù)量大于K的兩倍;
A4、在所有的K-means分類結(jié)束后,對所有的子節(jié)點(diǎn)從左到右依次排序標(biāo)號,生成圖像數(shù)據(jù)庫的樹狀模型。
向樹狀模型中添加所有需要的圖像數(shù)據(jù)以形成圖像數(shù)據(jù)庫,將需要添加到樹狀模型中的圖像存放在同一文件夾里,具體的可采用下述步驟:
B1、向樹狀模型中添加一張圖像的時(shí),給該圖像一個(gè)唯一的編號;
B2、對該圖像進(jìn)行縮放以建立一個(gè)圖像金字塔,對圖像的各個(gè)尺度使用ORB算法提取所有ORB特征點(diǎn),并對每一個(gè)ORB特征點(diǎn)生成相應(yīng)的描述子,這樣就獲得了可以代表這張圖像特征的一個(gè)ORB描述子序列;
B3、將該圖像的所有描述子利用樹狀模型進(jìn)行分類,并將每個(gè)描述子的分類結(jié)果關(guān)聯(lián)在其分配到的子節(jié)點(diǎn)上;分類完成后,樹狀模型的每一個(gè)子節(jié)點(diǎn)上就會記錄該編號的圖像所具有的描述子在各節(jié)點(diǎn)分別出現(xiàn)了幾次,而該編號圖像也會存儲其描述子在那些序號的子節(jié)點(diǎn)上分別出現(xiàn)了多少次;
B4、對每一張圖像做B1至B3的步驟,得到具有樹狀結(jié)構(gòu)的圖像數(shù)據(jù)庫。使用者可根據(jù)自身的需求,隨時(shí)任意的向數(shù)據(jù)庫中增加或刪除圖像。
按上述步驟方法生成了云端圖像數(shù)據(jù)庫,用戶需要對圖像進(jìn)行識別時(shí),可采用下列方法。
實(shí)施例2
一種基于詞匯樹檢索與暴力匹配的圖像識別方法,包括以下步驟,
圖像獲取步驟:獲取目標(biāo)圖像,并對目標(biāo)圖像使用ORB算法提取所有ORB特征點(diǎn),并對每一個(gè)ORB特征點(diǎn)生成相應(yīng)的描述子,生成該目標(biāo)圖像的ORB描述子序列;
圖像上傳步驟:將該ORB描述子序列上傳到基于描述子樣本的云端圖像數(shù)據(jù)庫中;
圖像識別步驟:云端圖像數(shù)據(jù)庫利用檢索詞匯樹的檢索算法對圖像進(jìn)行匹配識別并返回匹配度靠前的N張候選圖像,其中N為大于1的自然數(shù);譬如N為10;
暴力匹配步驟:在云端圖像數(shù)據(jù)庫中找到候選圖像,并利用字符串匹配算法對候選圖像和目標(biāo)圖像的ORB描述子序列做一對一的暴力匹配以確定最佳匹配圖像,并返回結(jié)果。
在詞匯樹檢索完成之后加入極小規(guī)模的暴力匹配,以保證檢索的精度。
具體的,用戶在使用實(shí)時(shí)圖像識別系統(tǒng)時(shí),用戶的移動端設(shè)備每采集到一幀目標(biāo)圖像,會先對采集到的目標(biāo)圖像使用ORB算法提取所有ORB特征點(diǎn),并對每一個(gè)ORB特征點(diǎn)生成相應(yīng)的描述子,生成該目標(biāo)圖像的ORB描述子序列,并將此序列發(fā)送到云端。與采集到的目標(biāo)圖像相比,ORB描述子序列的數(shù)據(jù)量會小非常多。
云端收到ORB描述子序列后,即開始利用檢索詞匯樹的檢索算法,在已生成的樹形圖像數(shù)據(jù)庫中尋找該圖像匹配得分靠前的N張候選圖像,譬如10張。每一次檢索,可以生成一個(gè)可自定義長度的按照匹配得分高低排列匹配結(jié)果編號序列,即利用詞匯樹圖像數(shù)據(jù)庫檢索快捷的特性,迅速地找出與目標(biāo)圖像類似的若干張候選圖像。
根據(jù)候選圖像編號,從圖像數(shù)據(jù)庫中找到這些圖像,并將這N張圖像與目標(biāo)圖像的描述子序列做一對一的暴力匹配,通過暴力匹配的得分來最終確定那一張圖像才是最佳匹配,最佳匹配圖像即為暴力匹配中描述子序列的字符串匹配度最高的那張。用暴力匹配可以彌補(bǔ)在詞匯樹結(jié)構(gòu)大小有限的情況下檢索精度的不足,并且,由于已經(jīng)通過檢索詞匯樹將最佳匹配可能存在的范圍縮小到若干張候選圖像中,所以對剩余的最佳匹配候選圖像進(jìn)行暴力匹配將是十分迅速的。
以上所述的具體實(shí)施方式,對本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施方式而已,并不用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。