鄰近算法,或者說K近鄰(KNN, K-NearestNeighbor)的核心思想是如果一個樣本在特徵空間中的k個最相鄰的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別,並具有這個類別上樣本的特性。kNN算法需要一個已經分好類的訓練數據集,然後對沒有分類(沒有標記)的記錄進行分類,kNN確定訓練數據集中與該記錄相似度"最近"的k條記錄,將無標記的測試例子分配到k個近鄰中佔比最大的那個類中。
k 鄰近算法需要做的三件事請:
1、特徵空間(已經分好類的訓練數據集)
2、計算該記錄(未知分類)與訓練數據中每條記錄之間的距離,確定最近的鄰居
3、確定k個最近的鄰居和k的值,訓練集中與該待分類記錄相似度最近的記錄條數
4、獲得多數類,使用最近鄰居的類標籤來確定未知記錄的類標籤
KNN 算法一般用在背景分割中,背景分割是許多可視化應用中重要操作。比如:一個靜止的攝像頭計算進出房間的遊客數量的計數器,或者交通攝像頭的車輛信息提取等等。在所有這些案例中都要獨立 提取人或者車,從技術上講,需要將動態的前景與靜態的背景分離。
在實opencv BackgroundSubtractorKNN 類中有實現。