KD tree學習筆記

2021-06-23 02:15:27 字數 1567 閱讀 2791

如上圖(a),我們先對待識別的物體的影象進行sift特徵點的檢測和特徵點的描述,然後得到了sift特徵點集合。接下來生成物體目標描述要做的就是對特徵點集合進行資料組織,形成一種特殊的表示,其作用是為了加速特徵點匹配的過程。所謂的特徵點匹配本質上是乙個通過距離函式(例如歐式距離)在高維向量之間進行相似性檢索的問題,簡單來講就是範圍查詢或者k近鄰查詢的問題。

範圍查詢就是給定查詢點和查詢距離閾值,從資料集中找出所有與查詢點距離小於查詢距離閾值的資料;k近鄰查詢就是給定查詢點和正整數k,從資料集中找到距離查詢點最近的k個資料,當k=1時,它就是最近鄰查詢。

如上圖(b)我們從輸入影象中進行sift特徵點的檢測和特徵點的描述後,得到了乙個待查詢點的集合,接下來就是要找出集合中的每乙個待查詢點在(a)過程得到的目標物體的特徵點集合中進行2近鄰查詢(即得到最近鄰和次近鄰),得到一組特徵點的匹配對《待查詢點,待查詢點的最近鄰》;得到所有匹配對後,然後通過閾值法(與最近鄰的距離要小於乙個常數)和比值法(與最近鄰的距離比次近鄰的距離要小於乙個常數)進行提純,濾去較差的匹配對。得到最終的匹配對集合。

簡介:k-d樹(k-dimensional樹的簡稱),是一種分割k維資料空間的資料結構。主要應用於多維空間關鍵資料的搜尋(如:範圍搜尋和最近鄰搜尋)。

一、k近鄰演算法

k最近鄰(k-nearest neighbour,knn)分類演算法,是乙個理論上比較成熟的方法,也是最簡單的機器學習演算法之一。

該方法的思路是:如果乙個樣本在特徵空間中的k個最相似(即特徵空間中最鄰近)的樣本中的大多數屬於某乙個類別,則該樣本也屬於這個類別。knn演算法中,所選擇的鄰居都是已經正確分類的物件。該方法在定類決策上只依據最鄰近的乙個或者幾個樣本的類別來決定待分樣本所屬的類別。 knn方法雖然從原理上也依賴於極限定理,但在類別決策時,只與極少量的相鄰樣本有關。由於knn

方法主要靠周圍有限的鄰近的樣本,而不是靠判別類域的方法來確定所屬類別的,因此對於類域的交叉或重疊較多的待分樣本集來說,knn方法較其他方法更為適合。

由bentley於2023年提出,二叉索引樹的不同之處在於,kdtree的每個節點表示k為空間中的乙個點,且樹的每一層都根據這層的分辨器做出分枝決策。

kd-tree性質:

1) 若它的左子樹不為空,則左子樹上所有節點的第d維的值均小於它的根節點的第d維的值,其中d為根節點的分辨器值;

2) 若它的右子樹不為空,則右子樹上所有節點的第d維的值均大於或等於它的根節點的第d維的值;

3) 它的左右子樹也分別為ki-tree

基於kd-tree索引的近似最近鄰搜尋的過程如下:

1)根據輸入的k維資料點集 建立kdtree;

2)利用優先佇列,針對給定的目標點,搜尋整個kd tree,找到m個最近鄰的點:從根節點開始掃瞄到葉子節點,錯過的節點進入有限佇列;然後再從佇列中取出當前維度上距離最小的點,重複掃瞄到葉子節點,直到隊列為空,或掃瞄次數達到設定上限值;

3)若找到m個最近鄰點,比較最近鄰點和次近鄰點到目標點的距離,若小於給定的閡值,則選擇該最近鄰點作為搜尋結果;若沒有找到,則返回空。為了計算簡便,這裡取m=2。

學習筆記 kd tree

kd tree用來維護n維空間中的點的一種資料結構。支援插入 刪除 查詢k臨近 包括最遠點對和最近點對 kd tree本質是一顆二叉樹。每一層選擇乙個維度,找到當前維度的中點 讓樹盡量平衡 經過這個點,在當前維度切割,分成左右兩個子樹。通常維度的選擇是順次迴圈的,較易實現。更優的方法是找到方差最大的...

KD Tree學習筆記

kdtree是一種用於分割k維資料空間的資料結構,主要應用於多維空間關鍵資料的搜尋。例如 範圍搜尋和最近鄰搜尋 kdtree的每個節點表示k維空間的乙個點 每次空間劃分按照輪轉法劃分,即如果這次選擇了在第i維上劃分,則下一次就在 i 1 k上劃分 int id,n,k,c struct p p ma...

K D Tree 學習筆記

又是乙個不需要證明的東西,複雜度基本玄學。具體來說 k d tree 是解決高維問題的乙個資料結構 其實一般是二維 k d tree 本質上是一棵二叉搜尋樹,其的基本思想就是遍歷整個狀態空間加剪枝。設問題維度是k,其單次查詢的複雜度大概是 o n 我們一般採用每次隨機找乙個維度,以這個維度排序,且以...