本發(fā)明涉及一種用于查找最近鄰的方法和裝置。更特別地,本發(fā)明涉及多維數(shù)據(jù)(例如,矢量)的分類、搜索和匹配以查找最近鄰。該方法作為尺度不變特征轉換(SIFT)算法的一部分尤其有用。
背景技術:美國專利6711293B1的發(fā)明人羅爾(Lowe)利用了被認為是最優(yōu)柱優(yōu)先(Best-bin-first)搜索的k維樹算法(k-dtreealgorithm)的修正,最優(yōu)柱優(yōu)先搜索算法能夠只利用有限量的計算以很大的概率識別最近鄰。US2010/0067745公開了一種用于視頻中的對象收集和識別的方法。尤其是,它涉及人臉圖像的識別。該方法利用了很可能與同一人相關聯(lián)的視頻對象的集群。如果新圖像到現(xiàn)有集群的距離小于預定的第一閾值距離,則該新圖像被視為屬于該集群。如果新圖像到該集群的距離大于第二閾值距離(該第二閾值距離小于該第一閾值距離),則該新圖像成為該集群的一部分。Ye,L.等人的“AutocannibalisticandAnyspaceIndexingAlgorithmswithApplicationstoSensorDataMining”,加利福尼亞大學計算機科學與工程系,Riverside,US,85-96,提供了變化的Orchard算法(Orchardalgorithm)。在此,犧牲了速度以減少對內存的需求。這一設計仔細推敲了犧牲多少速度以節(jié)約內存。然而,無論再怎樣的情況下,該算法都要求了空間的最小值。在Orchard算法中,對于數(shù)據(jù)集的每項都計算出其近鄰的分類表。對較大的數(shù)據(jù)集,這就需要大量的內存。在變化的Orchard算法中,相互接近的項與項的行被刪除以節(jié)約空間。因此,搜索算法犧牲了速度以換取存儲空間。Ye等人.進一步提出了動態(tài)的內存分配以對算法進行優(yōu)化。VidalRuiz,E.,“Analgorithmforfindingnearestneighboursin(approximately)constantaveragetime”,PatternRecognitionLetters4(1986),145-157,涉及以近似恒定的平均時間復雜度(例如,與數(shù)據(jù)集的規(guī)模無關)查找給定樣本的最近鄰的算法。
技術實現(xiàn)要素:最近鄰的搜索問題(最近鄰搜索,也被認為是接近度搜索、相似度搜索或最近點搜索)出現(xiàn)在眾多應用領域當中,包括,但并不僅限于:模式識別(尤其用于光學特性識別);統(tǒng)計分類(k最近鄰算法);計算機視覺;數(shù)據(jù)庫中基于內容的圖像檢索;編碼理論;數(shù)據(jù)壓縮;推薦系統(tǒng);網(wǎng)絡銷售;DNA測序;拼寫檢查(建議正確的拼寫);剽竊檢測;用于預測職業(yè)運動員的職業(yè)道路的相似度分數(shù);集群分析(將一組觀察數(shù)據(jù)分配到子集,(例如,集群)以便相同集群里的觀察數(shù)據(jù)在某種程度上是相似的,該分配通?;跉W氏距離(Euclideandistance));多元密度估計和模式分類;以及機器學習。本發(fā)明的發(fā)明人發(fā)明出允許更短的查找時間,并且更能夠容易地適用于并行處理以允許另外縮短查找時間的方法。根據(jù)本發(fā)明的一個方面,本發(fā)明涉及一種在由多個矢量組成的數(shù)據(jù)集中對一特定矢量進行匹配的方法,該方法包括以下步驟:i.選擇一參考點矢量;ii計算所述參考點矢量與所述數(shù)據(jù)集中的所述矢量之間的距離d;iii.將所述數(shù)據(jù)集中的所述矢量分類到不同的組中,所述每個組中的矢量與所述參考點矢量有相同距離dgroup;iv.隨后將包括兩個以上矢量的所述每個組進行重新排列,以便所述組中的第二矢量到所述組中的第一矢量有最小距離,并且所述組中每個后續(xù)的矢量到組中的前一個矢量都有最小距離;v.識別對于所述特定矢量的最佳匹配,通過:a.計算所述參考點矢量和所述特定矢量之間的距離dspecific;b.識別具有最接近于計算的所述距離dspecific的距離d的矢量的一個或多個組;c.在所識別的一個或多個組中識別具有與所述特定矢量最近的距離dminimum的一個或多個矢量;d.識別與所述參考點矢量距離為d的任一額外的組,所述距離d從所述參考點矢量開始并且在從零矢量和dspecific-dminimum中的較大的一個到dspecific+dminimum的區(qū)間上;以及e.重復步驟4.3和4.4直到在所述區(qū)間上的所有組都被驗證過。本領域的技術人員將意識到,該方法同樣適用于矩陣和張量。用于更佳的匹配的搜索適用于并行處理。本領域的技術人員將更進一步地意識到,該方法能夠很容易地適用于查找第二佳的匹配、第三佳的匹配,等等。根據(jù)本發(fā)明的一個方面,本發(fā)明涉及一種在由多個矢量組成的數(shù)據(jù)集中對一特定矢量進行匹配的方法,其中,所述多個矢量表現(xiàn)出尺度不變特征;為了在至少一幅圖像中識別尺度不變特征,所述方法包括:i.選擇一參考點矢量;ii計算所述參考點矢量與所述數(shù)據(jù)集中的所述矢量之間的距離d;iii.將所述數(shù)據(jù)集中的所述矢量分類到不同的組中,所述每個矢量與所述參考點矢量有相同距離dgroup;iv.隨后將包括兩個以上矢量的所述每個組進行重新排列,以便所述組中的第二矢量到組中的第一矢量有最小距離,并且組中每個后續(xù)的矢量到所述組中的前一個矢量都有最小距離;v.識別對于所述特定矢量的最佳匹配,通過:a.計算所述參考點矢量和所述特定矢量之間的距離dspecific;b.識別具有最接近于計算的所述距離dspecific的距離d的矢量的一個或多個組;c.在所識別的一個或多個組中識別具有與所述特定矢量最接近的距離dminimum的一個或多個矢量;d.識別與所述參考點矢量距離為d的任一額外組,所述距離d從所述參考點矢量開始并且在從零矢量和dspecific-dminimum中的較大的一個到dspecific+dminimum的區(qū)間上;以及e.重復步驟4.3和4.4直到在所述區(qū)間上的所有組都被驗證過。根據(jù)本發(fā)明的一個方面,本發(fā)明涉及一種在由多個矢量組成的數(shù)據(jù)集中對一特定矢量進行匹配的方法,所述方法包括:i.選擇一參考點矢量;ii計算所述參考點矢量與所述數(shù)據(jù)集中的矢量之間的距離d;iii.將所述數(shù)據(jù)集中的所述矢量分類到不同的組中,所述每個組中的矢量與所述參考點矢量有相同距離dgroup;iv.隨后將包括一個或者多個矢量的所述每個組進行重新排列,以便所述組中的第二矢量到所述組中的第一矢量有最小距離,并且組中每個后續(xù)的矢量到組中的前一個矢量都有最小距離;這一方面使隨后的數(shù)據(jù)集中的特定矢量能夠快速匹配。根據(jù)本發(fā)明的一個方面,本發(fā)明涉及一種在由多個矢量組成的數(shù)據(jù)集中對一特定矢量進行匹配的方法,所述多個矢量在至少一幅圖像中表現(xiàn)出尺度不變特征;為了隨后在至少一幅圖像中識別尺度不變特征,所述方法包括以下步驟:i.選擇一參考點矢量;ii計算所述參考點矢量與所述數(shù)據(jù)集中的矢量之間的距離d;iii.將所述數(shù)據(jù)集中的所述矢量分類到不同的組中,所述每個組中的矢量與參考點矢量有相同距離dgroup;iv.隨后將包括一個或者多個矢量的所述每個組進行重新排列,以便所述組中的第二矢量到組中的第一矢量有最小距離,并且組中每個后續(xù)的矢量到組中的前一個矢量都有最小距離。根據(jù)本發(fā)明的一個方面,本發(fā)明涉及一種識別圖像特征的方法,所述圖像特征在由多個像素所定義的原始圖像中的不同尺度上是穩(wěn)定的,所述方法包括:i.通過對將不同的模糊度應用于所述原始圖像得到的差值進行計算,由一個原始圖像得到多個差分圖像;ii在所述多個差分圖像上找出像素幅度極值;iii.對于每個所述差分圖像上的每個所述像素產生一像素梯度矢量;iv.利用根據(jù)本發(fā)明的方法,將矢量方向與關聯(lián)于每個差分圖像的各自當前的最大及最小幅度像素相聯(lián)系。根據(jù)本發(fā)明的一個方面,本發(fā)明涉及一種用于在由多個像素所定義的圖像中識別尺度不變特征的圖像處理設備,所述圖像處理設備包括處理器電路,所述處理器電路配置為:實現(xiàn)根據(jù)本發(fā)明的方法。根據(jù)本發(fā)明的一個方面,本發(fā)明涉及實現(xiàn)根據(jù)本發(fā)明的方法的軟件程序。根據(jù)本發(fā)明的一個方面,本發(fā)明涉及計算機程序,所述計算機程序包程序代碼模塊,所述程序代碼模塊用于當所述程序在計算機上運行時,執(zhí)行任意一個方法權利要求中的所有步驟。根據(jù)本發(fā)明的一個方面,本發(fā)明涉及一計算機程序產品,所述計算機程序產品包括存儲在計算機可讀介質上的程序代碼模塊,所述程序代碼模塊用于當所述程序產品在計算機上運行時,執(zhí)行任意一個方法權利要求中的所有步驟。具體實施方式以下提供了附加的方面以及實施例。根據(jù)本發(fā)明的一個實施例,本發(fā)明涉及一種用于在由多個矢量組成的數(shù)據(jù)集中對一特定矢量進行匹配的方法,該方法包括以下步驟:i.選擇一參考點矢量;ii計算所述參考點矢量與所述數(shù)據(jù)集中的矢量之間的距離d;iii.將所述數(shù)據(jù)集中的矢量分類到不同的組,所述每個組中的矢量與所述參考點矢量有相同距離dgroup;iv.隨后將包括兩個以上矢量的所述每個組進行重新排列,以便所述組中的第二矢量到所述組中的第一矢量有最小距離,并且所述組中每個后續(xù)的矢量到組中的前一個矢量都有最小距離;v.識別對于所述特定矢量的最佳匹配,通過:a.計算所述參考點矢量和所述特定矢量之間的距離dspecific;b.識別具有最接近于計算的所述距離dspecific的距離d的矢量的一個或多個組;c.在所識別的一個或多個組中識別具有與所述特定矢量最接近的距離dminimum的一個或多個矢量;d.識別與所述參考點矢量距離為d的任一額外組,所述距離d從所述參考點矢量開始并且在從零矢量和dspecific-dminimum中的較大的一個到dspecific+dminimum的區(qū)間上;以及e.重復步驟5.3和5.4直到在所述區(qū)間上的所有組都被驗證過。因為dspecific-dminimum可能小于零,所以有必要取零和dspecific-dminimum之中的較大的一個。優(yōu)選地,使用整個區(qū)間,例如,包括從所述參考點矢量開始并且距離的限制值1)為零和dspecific-dminimum中的較大值以及2)dspecific+dminimum。在次選的方法中,當僅僅找到良好的候選點時,僅僅使用這個區(qū)間上的組(例如,為了節(jié)省時間)。當識別到更好的匹配時,距離dminimum變得更短。因此,區(qū)間dspecific-dminimum到dspecific+dminimum變得更小,并且檢查的額外組的數(shù)量減少。對于更佳的匹配的查找適用于并行處理;例如,可以通過對具有短于dspecific的距離d的組以及獨立地對具有大于dspecific的距離d的組進行搜索來進行搜索。這樣的獨立的搜索能夠適當?shù)乇容^并且接著共享迄今為止所識別出的最短距離dminimum。此外,本方法能夠很容易地適用于查找第二佳的匹配、第三佳的匹配,等等。根據(jù)本發(fā)明的一個方面,本發(fā)明涉及一種在由多個矢量組成的數(shù)據(jù)集中對一特定矢量進行匹配的方法,其中,所述多個矢量表現(xiàn)出尺度不變特征;為了在至少一幅圖像中識別尺度不變特征,所述方法包括:ix.選擇一參考點矢量;x.計算所述參考點矢量與所述數(shù)據(jù)集中的所述矢量之間的距離d;xi.將所述數(shù)據(jù)集中的所述矢量分類到不同的矢量組中,所述每個組中的矢量與參考點矢量有相同距離dgroup;xii隨后將包括多于兩個矢量的所述每個組進行重新排列,以便所述組中的第二矢量到組中的第一矢量有最小距離,并且組中每個后續(xù)的矢量到所述組中的前一個矢量都有最小距離;xiii.識別對于所述特定矢量的最佳匹配,通過:a.計算所述參考點矢量和所述特定矢量之間的距離dspecific;b.識別具有最接近于計算的所述距離dspecific的距離d的矢量的一個或多個組;c.在所識別的一個或多個組中識別具有與所述特定矢量最接近的距離dminimum的一個或多個矢量;d.識別與所述參考點矢量距離為d的任一額外組,所述距離d從所述點矢量開始并且在從零矢量和dspecific-dminimum中的較大的一個到dspecific+dminimum的區(qū)間上;以及e.重復步驟5.3和5.4直到在所述區(qū)間上的所有組都被驗證過。根據(jù)本發(fā)明的一個實施例,該實施例涉及根據(jù)本發(fā)明的一種方法,其中,接下來的待檢驗的組是具有最接近dspecific的距離d的未檢驗的組。對于未檢驗的組,組中的矢量還沒有被檢驗以進行相比dminimum更接近于特定矢量的矢量的識別??商娲兀墒顾霾檎?,例如,開始于具有最接近dspecific的距離的組并且在未檢驗的組中依次遞減或遞增;或者優(yōu)選地,利用并行處理,同時遞減和遞增。根據(jù)本發(fā)明的一個實施例,該實施例涉及根據(jù)本發(fā)明的一種方法,其中,所述矢量在至少一個圖像中表現(xiàn)出特征。根據(jù)本發(fā)明的一個實施例,該實施例涉及根據(jù)本發(fā)明的一種方法,其中,所述矢量在至少一個圖像中表現(xiàn)出尺度不變特征。根據(jù)本發(fā)明的一個實施例,該實施例涉及根據(jù)本發(fā)明的一種方法,其中,所述方法用于在至少一個圖像中識別尺度不變特征。根據(jù)本發(fā)明的一個實施例,該實施例涉及根據(jù)本發(fā)明的一種方法,其中,所述矢量是多維的。根據(jù)本發(fā)明的一個實施例,該實施例涉及根據(jù)本發(fā)明的一種方法,其中,將所述距離d、dgroup、dspecific以及dminimum作為組中的選擇的距離進行計算,所述組包含歐式(Euclidean)距離、馬氏(Mahalanobis)距離、曼哈坦(Manhattan)距離、切比雪夫(Chebyshev)距離以及閔科夫斯基(Minkowski)距離。馬氏距離意味著基于協(xié)方差矩陣的標準化以使得距離按比例尺度不變。曼哈坦距離意味著僅僅沿軸對齊方向測量距離。切比雪夫距離意味著測量距離時假設只與最重要的維相關。閔科夫斯基距離意味著統(tǒng)一了歐氏距離、曼哈坦距離和切比雪夫距離的概括。根據(jù)本發(fā)明的一個實施例,該實施例涉及根據(jù)本發(fā)明的一種方法,其中,將所述距離d、dgroup、dspecific以及dminimum作為歐式距離進行計算。根據(jù)本發(fā)明的一個實施例,該實施例涉及根據(jù)本發(fā)明的一種方法,其中,所述參考點矢量在數(shù)據(jù)集中選取。根據(jù)本發(fā)明的一個實施例,該實施例涉及根據(jù)本發(fā)明的一種方法,其中,所述參考點矢量選為數(shù)據(jù)集的中點。根據(jù)本發(fā)明的一個方面,本發(fā)明涉及一種對由多個矢量組成的數(shù)據(jù)集進行排列的方法,所述多個矢量用于對該數(shù)據(jù)集中的一特定矢量進行后續(xù)匹配,所述方法包括:i.選擇一參考點矢量;ii計算所述參考點矢量與所述數(shù)據(jù)集中的矢量之間的距離d;iii.將所述數(shù)據(jù)集中的所述矢量分類到不同的矢量組中,所述每個組中的矢量與參考點矢量有相同距離dgroup;iv.隨后將包括多于兩個矢量的所述每個組進行重新排列,以便所述組中的第二矢量到所述組中的第一矢量有最小距離,并且組中每個后續(xù)的矢量到組中的前一個矢量都有最小距離;根據(jù)本發(fā)明的一個方面,本發(fā)明涉及一種對由多個矢量組成的數(shù)據(jù)集進行排列的方法,所述多個矢量用于對所述數(shù)據(jù)集中的一特定矢量進行后續(xù)匹配,所述多個矢量在至少一幅圖像中表現(xiàn)出尺度不變特征;為了隨后在至少一幅圖像中識別尺度不變特征,所述方法包括以下步驟:i.選擇一參考點矢量;ii計算所述參考點矢量與所述數(shù)據(jù)集中的矢量之間的距離d;iii.將所述數(shù)據(jù)集中的所述矢量分類到不同的矢量組中,所述每個組中的矢量與所述參考點矢量有相同距離dgroup的矢量組成;iv.隨后將包括多于兩個矢量的所述每個組進行重新排列,以便所述組中的第二矢量到組中的第一矢量有最小距離,并且組中每個后續(xù)的矢量到組中的前一個矢量都有最小距離;根據(jù)本發(fā)明的一個實施例,本發(fā)明涉及所述方法的這一方面,所述方法用于在由多個矢量組成的數(shù)據(jù)集中對一特定矢量進行匹配,優(yōu)選地,以在至少一個圖像中識別尺度不變特征,所述方法包括:v.識別對于所述特定矢量的最佳匹配,通過:a.計算所述參考點矢量和所述特定矢量之間的距離dspecific;b.識別具有最接近于計算的所述距離dspecific的距離d的矢量的一個或多個組;c.在所識別的一個或多個組中識別具有與所述特定矢量最接近的距離dminimum的一個或多個矢量;以及d.識別與所述參考點矢量距離為d的任一額外組,所述距離d從所述參考點矢量開始并且在從零矢量和dspecific-dminimum中的較大的一個到dspecific+dminimum的區(qū)間上;以及e.重復步驟5.3和5.4直到在所述區(qū)間上的所有組都被驗證過。本實施例說明所述方法的這一方面可以首先排列數(shù)據(jù)集,并且隨后允許每一次匹配都快速完成。根據(jù)本發(fā)明的一個實施例,本發(fā)明涉及一種根據(jù)本發(fā)明的識別圖像特征的方法,所述圖像特征在由多個像素所定義的原始圖像中的不同尺度上是穩(wěn)定的,所述方法包括:i.通過對將不同的模糊度應用于所述原始圖像上得到的差值進行計算,由所述原始圖像得到多個差分圖像;ii在所述多個差分圖像上找出像素幅度極值;iii.對于每個所述差分圖像上的每個所述像素產生一像素梯度矢量;iv.利用根據(jù)本發(fā)明的方法,將矢量方向與關聯(lián)于每個差分圖像的各自當前的最大及最小幅度像素相聯(lián)系。根據(jù)本發(fā)明的一個實施例,本發(fā)明涉及一種用于在由多個像素所定義的圖像中識別尺度不變特征的圖像處理設備,所述圖像處理設備包括處理器電路,所述處理器電路配置為:實現(xiàn)根據(jù)本發(fā)明的方法。根據(jù)本發(fā)明的一個實施例,本發(fā)明涉及根據(jù)本發(fā)明的圖像處理設備,所述圖像處理設備包括多個芯片,其中每個所述芯片配置為執(zhí)行針對特定矢量的最佳匹配的識別的一部分。根據(jù)本發(fā)明的一個實施例,本發(fā)明涉及根據(jù)本發(fā)明的圖像處理設備,所述圖像處理設備包括由GPU、DSP、FPGA和ASIC組成的組中的至少一個所選元件。根據(jù)本發(fā)明的一個實施例,本發(fā)明涉及根據(jù)本發(fā)明的圖像處理設備,所述圖像處理設備包括:用于儲存所述參考點矢量、所述數(shù)據(jù)集當中分類后的矢量、所述距離d和所述距離dgroup的裝置;以及用于接收所述特定矢量的裝置。根據(jù)本發(fā)明的一個實施例,本發(fā)明涉及計算機程序,所述計算機程序包括程序代碼模塊,所述程序代碼模塊用于當在計算機上運行所述程序時,執(zhí)行權利要求中的任意一個中的所述方法的所有步驟。根據(jù)本發(fā)明的一個實施例,本發(fā)明涉及計算機程序產品,所述計算機程序產品包括存儲在計算機可讀介質上的程序代碼模塊,所述程序代碼模塊當所述程序產品在計算機上運行時,用于執(zhí)行任意一個方法權利要求中的方法。根據(jù)本發(fā)明的一個實施例,本發(fā)明涉及執(zhí)行根據(jù)本發(fā)明的方法的軟件程序。根據(jù)本發(fā)明的一個實施例,本發(fā)明涉及根據(jù)本發(fā)明的軟件程序,所述軟件程序適用于在由多個像素定義的一個圖像中識別尺度不變特征。所有引用的參考文獻都通過引用而并入本文。附圖和示例被用于說明而非限制本發(fā)明。很清楚,對于本領域內的技術人員,本發(fā)明的各個方面、實施例和權利要求可以結合使用。附圖說明如下為附圖并且將在隨后對有些附圖作進一步的說明。圖1示出作為數(shù)據(jù)庫規(guī)模的函數(shù)的預期的查找量。圖2示出再分配的內存的一個說明示例。圖3示出映射到歐式空間上的圓中的點的一個說明示例。圖4示出分類的先進先出(FIFO)單元數(shù)據(jù)字段的一個示例。圖5A示出擴展FIFO中的數(shù)據(jù)分配的一個說明示例。圖5B示出數(shù)據(jù)分類過程的一個實施例。圖5C示出矢量匹配過程的一個實施例。圖5D示出粗提取的一個實施例。圖5E和5F示出精提取的一個實施例。圖6示出描述第一分類方法的流程圖。圖7示出描述第二分類方法的流程圖。圖8示出描述粗提取和數(shù)據(jù)矢量匹配方法的流程圖。圖9示出描述對小型數(shù)據(jù)庫進行粗提取和數(shù)據(jù)矢量匹配方法的流程圖。圖10示出圖9的延續(xù)。圖11示出圖9的延續(xù)。圖12示出圖9的延續(xù)。圖13示出用于本發(fā)明的方法的硬件實現(xiàn)的示意圖。圖14示出在歐式空間(Euclideanspace)中進行映射的一個說明示例。選擇一參考點矢量(由箭頭1的頂端示出)。在圖14中,參考點矢量在坐標軸的原點上。與參考點矢量等距離的矢量集中在一起。這由圖14中的圓示出,并且,對于這一組,與參考點矢量的相等距離為dgroup。對參考點矢量和一待被匹配的特定矢量(由箭頭2的頂端示出)間的距離dspecific進行計算。選擇具有最接近于dspecific的dgroup的矢量的組。在這些組中找出與特定矢量距離為最小距離dminimum的矢量。隨后,需要對距離在從零矢量和dspecific-dminimum中的較大的一個到dspecific+dminimum的區(qū)間上的未檢驗的組進行檢驗。一旦識別到具有更小的最小距離dminimum的矢量,則需要對更少的未檢驗的組進行查找以識別更好的匹配。示例本示例涉及實現(xiàn)本發(fā)明的實施例的一種方法,所述方法用于通過組織和搜索存儲器單元中的n維數(shù)據(jù)矢量進行高速數(shù)據(jù)矢量匹配。該方法對于幾種應用來說是很有用的,這些應用例如,涉及多維搜索關鍵字的搜索(例如,范圍搜索和最近鄰搜索)。本方法依賴于在特殊的存儲架構下對參考數(shù)據(jù)矢量進行靜態(tài)組織,以在某種程度上提高對動態(tài)輸入的數(shù)據(jù)矢量的實時查找和匹配的速度。本方法和發(fā)明潛在地減少了數(shù)據(jù)庫中的搜索量以查找數(shù)據(jù)矢量和因數(shù)log2(size)之間的匹配,其中size是以數(shù)據(jù)矢量的數(shù)量計的參考數(shù)據(jù)庫的規(guī)模。這由圖1說明。本方法可以在圖形處理單元(GPUs)、數(shù)字信號處理器(DSPs)和并行處理硬件(例如,F(xiàn)PGAs和ASIAs)中實現(xiàn)。本方法通過以特定的排列對參考數(shù)據(jù)矢量進行架構來實現(xiàn),所述特定的排列允許適合的并且加快的對一引入數(shù)據(jù)矢量的搜索和匹配方案。本方法包括分類階段以及搜索和匹配階段。給定一在存儲元件中任意分配的n維參考數(shù)據(jù)矢量的數(shù)據(jù)庫,本方法解決了在參考數(shù)據(jù)矢量當中查找出與新的引入數(shù)據(jù)矢量的匹配的或是最近鄰參考數(shù)據(jù)矢量的問題。在本文中,匹配的數(shù)據(jù)矢量定義為具有到引入數(shù)據(jù)矢量的最小距離(例如,歐氏距離)的矢量。在本方法中,參考數(shù)據(jù)矢量作為增加的到公共參考數(shù)據(jù)矢量的距離的函數(shù)首先在內存里重新排列。公共參考數(shù)據(jù)矢量任意地或通過確定的標準矢量在已有的數(shù)據(jù)矢量的集合中選擇。當重新排列完成時,排列的內存的第一單元處的數(shù)據(jù)矢量包含一具有到公共參考數(shù)據(jù)矢量的最小距離的數(shù)據(jù)矢量。分類后的內存的后續(xù)地址則保存其余的具有到參考數(shù)據(jù)矢量的相同的最小距離的數(shù)據(jù)矢量(倘若存在這樣的矢量)。另外,這些上升的地址將參考數(shù)據(jù)矢量與增加的到公共參考矢量的距離一同保存。具有到公共參考矢量的相同距離的矢量以這樣一種方式排列:如果內存中的地址“X”保存數(shù)據(jù)矢量“A”以及到公共參考矢量的距離“Y”,那么單元“X+1”保存參考數(shù)據(jù)矢量的數(shù)據(jù)矢量“B”,該數(shù)據(jù)矢量“B”同時具有到公共參考矢量的相同距離以及到“A”的最小距離(倘若存在這樣的矢量)。然后單元“X+2”保存具有到公共參考矢量的距離“Y”以及具有到“B”的最小距離的矢量“C”(倘若存在這樣的矢量)。圖2提供了分類后的內存排列的一個說明示例。在圖中,點“D”表示具有到公共參考的絕對最小距離并且因此位于第一內存地址處的單一數(shù)據(jù)矢量。點“S”表示具有到公共參考的第二最小的距離的數(shù)據(jù)矢量并以此類推。在圖中,點“A”、“B”和“C”表示三個具有到公共參考點的相同的距離的數(shù)據(jù)矢量。點“B”表示具有到“A”表示的參考數(shù)據(jù)矢量的最短距離的數(shù)據(jù)矢量,并且同樣地,點“C”表示具有到“B”表示的參考數(shù)據(jù)矢量的最短距離的數(shù)據(jù)矢量。在分類過程中,消除重復的數(shù)據(jù)矢量。在結果數(shù)組中的每個數(shù)據(jù)矢量沿著該數(shù)據(jù)矢量到公共參考點的距離與簡化了索引和搜索的其它數(shù)據(jù)字段一起保存在相同的存儲單元。這由圖4說明。以所述方式完成數(shù)據(jù)矢量的重新排列后,在已有的參考數(shù)據(jù)矢量中與引入數(shù)據(jù)矢量的最佳匹配或最近鄰的快速斷定能夠利用連續(xù)的近似方法完成。在本方法中,首先對引入數(shù)據(jù)矢量到公共參考矢量的距離進行計算,并且將計算的距離與存儲在排列后的內存中的中間單元的距離進行比較。如果計算的距離小于存儲的距離,那么則估計最佳匹配在內存的較低的一半中。在此情況下,下一步的搜索將通過將計算的距離與存儲在內存較低的一半的中間的內存單元的數(shù)據(jù)矢量進行比較來完成。相反地,如果計算的距離大于存儲在內存中的距離,則估計最近鄰在排列后的內存的較高的一半中的某一單元。在此情況下,下一步的搜索通過將計算的距離與存儲在內存較高的一半中的中間單元的距離進行比較來完成。最終當計算的距離等于存儲的距離時,則估計最近鄰為存儲在在中間內存單元周圍的參考數(shù)據(jù)矢量的其中一個。在本方法中,n維數(shù)據(jù)矢量被粗分類,并且按照到任意選擇的由一數(shù)據(jù)矢量表示的單一參考點的距離升序保存在一FIFO中。從而,創(chuàng)建一個歐式空間,其中所有的參考數(shù)據(jù)矢量被作為到公共參考點的距離的函數(shù)映射到點上,如圖3中的示例所示。分類的參考點到公共參考點的各自的距離可選地與參考點一同保存在相同內存地址上,以避免在選擇過程中再次計算,這種方法的代價則是對內存的增加的需求。參考點是分類的數(shù)據(jù)矢量中的一個,因此分類后的存儲元件(例如,F(xiàn)IFO)中的第一個點即是具有到參考點的最小距離的數(shù)據(jù)矢量。分類后的內存中的之后的地址保存具有到任意排列的參考點的相同的最小距離的所有數(shù)據(jù)矢量,并跟隨有具有到參考點的第二最小的距離的矢量,并以此類推。因此,分類的存儲空間的最后的地址保存具有到參考數(shù)據(jù)矢量的最大距離的數(shù)據(jù)矢量集。在圖3所示的示例中,中心參考點周圍的內圓包含其自身的表示具有到參考的最小距離的數(shù)據(jù)矢量的圓周;而以粗黑圓周表示的外圓包含表示在參考數(shù)據(jù)集的示例中具有到參考的最大距離的數(shù)據(jù)矢量的點。如圖3所指出的,具有到參考點相同距離的數(shù)據(jù)點形成一個圓周,該圓周以參考點為圓心,以所述相同距離為半徑。在粗分類之后的精分類中,這些點依然被作為它們彼此之間的距離的函數(shù)以連續(xù)的內存地址包含相互最近的點的方式排列在FIFO中,并且通過它們之間的最短距離來識別。(例如,如果地址“X”包含具有到公共參考點的距離為“Y”的數(shù)據(jù)點“A”,那么地址“X+1”則包含一具有到“A”的最短距離并且到公共參考數(shù)據(jù)點的相同距離“Y”的數(shù)據(jù)點“B”,倘若圖3中映射的參考點集中存在這樣的點)。圖6和圖7分別說明了粗分類過程和精分類過程。粗分類和精分類階段提供一FIFO/內存以及數(shù)據(jù)結構,該數(shù)據(jù)結構有助于快速查找參考數(shù)據(jù)矢量以和到來的數(shù)據(jù)矢量進行匹配。分類后的單一FIFO/存儲單元處的數(shù)據(jù)結構由圖4說明,以及在圖5A中對作為結果的FIFO/內存結構進行例示。正如附圖中所說明的,擴展FIFO/內存中每個單元包含了以下數(shù)據(jù)字段(下劃線部分):數(shù)據(jù)矢量字段(DataVectorField):表示包括參考點在內的n維數(shù)據(jù)矢量的數(shù)據(jù)字段;距離字段(Dist.Field)(可選):表示計算得到的特定數(shù)據(jù)矢量到所選擇的公共參考數(shù)據(jù)矢量(在本申請中,稱為公共參考點)的距離的距離字段。這是個可選的字段。能夠消除該字段以減小內存規(guī)模要求。當該字段被消除時,該距離會在需要時立時計算得到。規(guī)模/索引字段(Size/IndexField)以及重復標志字段(Rep.FlagField):規(guī)模/索引字段包含表示規(guī)?;蛩饕膬蓚€值其中之一。假如FIFO/存儲單元包含在距離字段中給定距離的第一數(shù)據(jù)矢量,則所述字段將包含一個表示具有到公共參考的相同的距離的數(shù)據(jù)矢量集規(guī)模的值,否則,所述字段包含一個表示具有到參考相同距離的連續(xù)的數(shù)據(jù)矢量的增加的索引的數(shù)字。重復標志字段是一個重復的標志字段,如果距離字段中的距離是之前FIFO單元的重復則該字段設為“1”,否則重置為“0”。在圖5A的示例中,地址“00000”處的規(guī)模/索引字段中的數(shù)字“3”指明總共有3個具有到所選參考點的距離為“xxxx”的參考數(shù)據(jù)矢量。地址“00000”處的的重復標志字段中的“0”指明該數(shù)據(jù)矢量字段中的數(shù)據(jù)矢量是具有到參考點的距離為“xxxx”的FIFO中的第一個。地址“00001”處,將重復標志設為“1”以指明該單元中的數(shù)據(jù)矢量具有與之前的地址(此處為“00000”)相同的到參考點的距離,重復標志字段中的索引值“1”指明在FIFO中只有一個之前的單元,該單元有一與當前參考相同距離的參考數(shù)據(jù)矢量;而地址“00003”處的值“3”指明在FIFO中總共有3個之前的FIFO單元,該單元存儲了具有到參考的和該地址上數(shù)據(jù)矢量相同的距離的參考數(shù)據(jù)矢量。在操作時計算得到引入的數(shù)據(jù)矢量到公共參考點的距離,并且將所得距離與存儲在FIFO中的或者同樣在操作時計算得到的存儲的距離進行比較從而查找出到能夠包圍該引入點的圓的圓周最近的圓周。該最近的的圓周通過圖8中的流程圖找出。該圖中使用了以下縮略語:●Addr.:先進先出隊列地址(FIFOaddress)的縮略語?!馭trt.:代表開始(Start)(例如,“StrtAddr.”代表FIFO中搜索開始的地址的起始地址?!癊ndAddr.”是搜索結束地址)。當縮略詞“Strt”被單獨使用時則意思是搜索起始地址?!馝nd:意思是搜索結束地址?!馜ist.:代表距離(distance)?!馝ucl.:代表歐幾里得(Euclidean)。在圖中,歐氏距離被用作一個示例并且命名為“Eucl.Dist”?!馬es.:代表結果(result)。在圖中,Res.被作為一個寄存器?!馛rnt.:代表當前(current);當單獨使用該縮略詞時,則意思是當前先進先出隊列的地址?!馧dx.:代表索引并因此,應該是由索引數(shù)據(jù)字段表示的索引(如本申請之前所說明的)。見圖5A。●Rev.:單詞反向(reverse)的縮略語。此處,Rev.是一標志;當其被設置時,則使得從FIFO中的讀取從當前圓的最后一個點開始。參照圖3,最后一個點為點“D”。此處的意圖是越過不相干的點以達到點的遍歷比較。●Rd.:代表讀取(read)。此處用于指明FIFO讀取地址以及將讀取地址與FIFO寫入地址進行辨別?!馭ize:指的是規(guī)模字段中的值(如圖5A所說明的)。●Repeatedflag:這是重復標志的值(如圖5A所說明的)?!馡nitial:這是通過粗查找所查找到的初始FIFO查找地址。所述比較隨后被細化以在最近的和鄰近的圓周上的點之中搜索具有到引入點的最小距離的最近鄰。圖9、10、11和12說明了搜索和匹配的過程。附錄圖像特征(例如,SIFT特征)能夠表示為矢量。這一點在伴有下述引用的本附錄中得到例證。本領域的技術人員對SIFT方法都很熟悉(例如,由US6711293B1和維基百科可知)。應當注意,美國專利6711293B1使用術語“子區(qū)域描述符(subregiondescriptor)的集”而維基百科交替地使用術語“描述符矢量”、“矢量”或“描述符”。在本要求以及說明的其余部分,使用“矢量”。以下為維基百科“尺度不變特性變換”(以下重點強調的):關鍵點描述符之前的步驟在特定的尺度上查找到關鍵點的位置并且給關鍵點的位置分配了方位。這就保證了圖像的位置、尺度和旋轉的不變性?,F(xiàn)在,我們想要對于每個關鍵點計算一描述符矢量以使得該描述符相對于剩余的變量是高度區(qū)別并且局部不變的(例如,3D視角,等等)。這一步在最接近關鍵點尺度的圖像上執(zhí)行。首先,在4x4個像素(每個像素為8個二進制位)的鄰近區(qū)域上建立一組方位直方圖。這些直方圖由圍繞關鍵點的16x16的區(qū)域中樣本的大小和方向的值計算得出,以使得每個直方圖包含來自于原始鄰近區(qū)域中的一4x4的子區(qū)域的樣本。而且,利用高斯函數(shù)對直方圖的大小進行加權(σ等于描述符窗口寬度的一半)。然后,描述符成為直方圖的所有值構成的的矢量。由于存在4×4=16個直方圖并且每個直方圖由8個二進制位組成,該矢量就有128個元素。然后將該矢量標準化到單位長度以提高其在照射中的仿射變換下的不變性。為了減少非線性照射的影響,應用一0.2的閾值并且再次將該矢量標準化。盡管描述符的維度看似很高(例如,128),比之更低維度的描述符則無法在匹配任務的范圍內同樣地執(zhí)行,并且,由于用于查找最近鄰的近似的BBF,計算成本仍然很低。更長的描述符能夠有更好的表現(xiàn),但是并不是很多,并且伴隨有對失真和閉合的更高的敏感度的危險。并且已經表明,視角改變50度以上,則特征匹配精確度在50%以上。因而,SIFT描述符對較小的仿射變換是不變的。為了測試SIFT描述符的辨別能力,針對測試數(shù)據(jù)庫中的數(shù)量變化的關鍵點測量匹配精度,并且表明,對于非常大的數(shù)據(jù)庫規(guī)模,匹配精確度僅僅稍稍有所降低,由此表明SIFT特征非常顯著。引用US6711293B1,[0071]中的說明:在塊198中,已經對子區(qū)域中最后一個感興趣的點進行檢驗,然后塊202指揮處理器22儲存所述角分量集以及與其相關聯(lián)的與區(qū)域相關聯(lián)的分量描述符元素。因此,對于每個完整的區(qū)域,有8個128個數(shù)字的分量子區(qū)域描述符的集,表示了極值周圍的整個區(qū)域。所述8個分量子區(qū)域描述符的集表示圖像的一個尺度不變特征。