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