特徵提取
特徵的種類在影象領域主要分為點,線,面。線特徵和面特徵對影象資訊利用得更多,因而其分辨性更高。但遺憾的是,由於線特徵和面特徵提取的條件比較苛刻,因此在實際應用中並不廣泛。(儘管在slam中也有點線結合的例項,在影象紋理較弱的情況下,線特徵可以發揮更大的用處。但是卻是在增加計算量的同時,提高的效能較為有限。)隨著深度學習在影象方面的不斷提公升,基於全圖學習得到的特徵向量效能不斷提高,甚至超越了手工設計的特徵點。這也是前面所說的,由於對影象資訊利用得更加全面,才使得特徵向量的識別效能越來越好。
在視覺slam中,特徵主要還是用點特徵。
>>點特徵主要分為兩大類:
基於手工設計的特徵點:這類特徵點主要是憑藉人們對幾何學以及數學上的一些認識,對影象中的某一塊特殊區域進行建模得到描述函式。典型的比如sift,利用差分高斯金字塔計算影象中比較特殊的點,再通過該點的領域資訊對其進行描述,得到最終的描述函式。
基於深度學習得到的特徵向量:這類特徵點主要是對深度學習網路進行設計,使其通過多個卷積和池化操作來取得影象中比較有用的資訊。說起來是比較抽象的,個人理解,深度學習雖然看起來是個大箱子,但是實際上,各個卷基層都是乙個函式 $f_(x)$,最終的輸出就是多個復合函式的函式值 $g = f_(f_(...f_(x)...))$。前期的網路設計主要是模仿手工描述子的計算步驟,各個卷基層的操作與手工描述子並無二致。後期的主要是為了利用更多的影象資訊,彌補了手工描述子的不足。(這類網路的設計通常是將手工設計的特徵點圖塊作為訓練集,輸入到網路中進行訓練)。
>>不同點特徵的區別:
特徵點實際上包含兩種型別:
一種是只有關鍵點(interested point),典型的如fast這類角點;
還有一類就是基於角點的位置,利用其鄰域資訊對其進行描述,得到描述子,slam中常用的主要是這類描述子,比如sift, surf, orb等。
>>特徵提取的缺陷:
直接對影象提取特徵點,通常會出現特徵點扎堆的現象。顯然,對於影象紋理多的地方,特徵點自然會提取得多。這導致的結果便是,影象某一塊位置提取到的特徵點特別多,而其他區域提取到的點特別少,甚至是沒有。這在實際應用當中會導致估算相對姿態變換出現較大的偏差,影響定位精度。這是我們極力要避免的。
>>特徵提取的小技巧:
通過對影象進行分塊,對不同影象子塊提取特徵點,可以解決特徵點分布不均勻的問題。
以orb-slam中提取orb特徵點為例:
影象 $i$ 劃分成 $4$ 個區域 $$,對每個區域提取特徵點;
將子圖 $$ 各自劃分成 $4$ 個區域,現在我們總共有 $16$ 個子圖,將步驟 $1$ 中提取的特徵點按區域進行分配;
對於存在不止乙個特徵點的子圖,進一步進行劃分,直到限制的最小子圖時停止。若此時特徵點數量仍然較多,則根據響應值,取最大的特徵點;
若步驟 $1$ 中,各個子圖中提取的特徵點數量較少,則需要通過調整閾值條件,來提高特徵點的數量。
步驟 $1-3$ 可以通過不斷遞迴來完成。
ps: 筆者自己實現了乙個簡單的特徵提取函式,但是並沒有利用遞迴對影象進行更加精細的劃分。只是簡單的劃分成幾個區域,對各自區域進行提取。歡迎參考。
文字特徵 特徵提取(一)
本文的內容主要來自於quora上的乙個問題,這裡簡單的做一下總結,感興趣的可檢視原帖 為了使用機器學習方法處理文字資料,需要找到適合的文字表示形式,對於傳統機器學習方法而言,常用的一種表示方法是將文件轉換為文件 詞項矩陣 document term matrix 具體就是將多篇文件轉換為資料幀 da...
特徵工程 特徵提取
特徵提取 將任意資料 如文字或影象 轉換為可用於機器學習的數字特徵 注 特徵值化是為了計算機更好的去理解資料 字典特徵提取 作用 對字典資料進行特徵值化 dictvectorizer.get feature names 返回類別名稱 from sklearn.feature extraction i...
顏色特徵提取
顏色特徵是在影象檢索中應用最為廣泛的視覺特徵,主要原因在於顏色往往和影象中所包含的物體或場景十分相關。此外,與其他的視覺特徵相比,顏色特徵對影象本身的尺寸 方向 視角的依賴性較小,從而具有較高的魯棒性。面向影象檢索的顏色特徵的表達涉及到若干問題。首先,我們需要選擇合適的顏色空間來描述顏色特徵 其次,...