https://m.toutiao.com/is/Dd6w2vG/ 在計算機視覺領域,特征提取是一種常見的技術,用于從圖像或視頻中提取出有用的信息。以下全文通過介紹特征提取常用的算法進行介紹: 特征提取 是指從原始數據中提取出有用的特征,以便于進行后續的處理和分析,特征提取一般包含特征點檢測和描述子計算兩個過程。 特征點檢測 ![]() 是計算機視覺中的一個重要步驟,它是指在圖像中檢測出具有顯著變化的位置,如角點、邊緣等,這些位置被稱為特征點。特征點檢測廣泛應用到目標匹配、目標跟蹤、三維重建等應用中,在進行目標建模時會對圖像進行目標特征的提取,常用的有顏色、角點、特征點、輪廓、紋理等特征。 描述子 ![]() 是計算機視覺中的一種特征提取方法,用于描述圖像中的特征點。描述子是一種向量,可以用來表示圖像中的一個局部區域,通常用于目標檢測、圖像匹配等任務。描述子可以分為浮點型和二進制型兩類,前者的優點是更精確,后者的優點是速度更快。 常見的特征提取算法 主成分分析(PCA) 線性判別分析(LDA) 尺度不變特征變換(SIFT) 加速穩健特征(SURF) 方向梯度直方圖(HOG) 局部二值模式(LBP) 高斯混合模型(GMM) 小波變換(Wavelet Transform) BRIEF描述子 主成分分析(PCA) ![]() 是一種降維的統計方法,它借助于一個正交變換,將其分量相關的原隨機向量轉化成其分量不相關的新隨機向量,這在代數上表現為將原隨機向量的協方差陣變換成對角形陣,在幾何上表現為將原坐標系變換成新的正交坐標系,使之指向樣本點散布最開的p個正交方向,然后對多維變量系統進行降維處理,使之能以一個較高的精度轉換成低維變量系統,再通過構造適當的價值函數,進一步把低維系統轉化成一維系統。 應用場景 主成分分析(PCA)有很多應用場景,例如: 加速機器學習算法 對數據進行預處理 用于分類問題和回歸問題 根據方差自主控制特征數量 優缺點 主成分分析(PCA)是一種常用的數據降維方法,它可以將高維數據轉換為低維數據,同時保留原始數據的大部分信息。 主成分分析的優點包括: ①可以減少數據的冗余性,提高數據的處理效率; ②可以消除不同變量之間的相關性,避免多重共線性問題; ③可以發現數據中的主要特征,便于后續的建模和分析; ④可以降低噪聲對數據分析的影響。 主成分分析的缺點包括: ①主成分的解釋其含義往往具有一定的模糊性,不如原始變量的含義那么清楚、確切; ②貢獻率小的主成分往往可能含有對樣本差異的重要信息,也就是可能對于區分樣本的類別(標簽)更有用; ③特征值矩陣的正交向量空間是否唯一有待討論; ④無監督學習。 如何實現 基于特征值分解協方差矩陣實現PCA算法和基于SVD分解協方差矩陣實現PCA算法。其中,基于特征值分解協方差矩陣實現PCA算法的步驟如下: 去平均值(即去中心化),即每一位特征減去各自的平均值。 計算協方差矩陣。 求出協方差矩陣的特征值及對應的特征向量。 將特征向量按對應特征值大小從上到下按行排列成矩陣,取前k行組成矩陣P。 Y=PX即為降維到k維后的數據。 線性判別分析(LDA) ![]() 是一種監督學習的降維技術,也就是說它的數據集的每個樣本都是有類別輸出的,這點與PCA(無監督學習)不同。LDA試圖找到兩類物體或事件的特征的一個線性組合,以能夠特征化或區分它們。 LDA是對費舍爾的線性鑒別方法的歸納,使用統計學、模式識別和機器學習方法。 LDA可以用于分類、降維等領域。 應用場景 LDA在模式識別領域(比如人臉識別,艦艇識別等圖形圖像識別領域)中有非常廣泛的應用。 此外,LDA還可以用來識別大規模文檔集或語料庫中潛藏的主題信息 優缺點 LDA是一種線性判別分析方法,它可以用于數據預處理,以減少特征的數量,就像PCA一樣降維,顯著降低了計算成本。LDA也可以非常有效地處理多個分類問題。 LDA算法的主要優點有: 在降維過程中可以使用類別的先驗知識經驗,而像PCA這樣的無監督學習則無法使用類別先驗知識。LDA在樣本分類信息依賴均值而不是方差的時候,比PCA之類的算法較優。 LDA算法的主要缺點有: LDA不適合對非高斯分布樣本進行降維,PCA也有這個問題。LDA降維最多降到類別數k-1的維數,如果我們降維的維度大于k-1,則不能使用LDA。 如何使用 如果你想使用LDA, 你需要先安裝Python和一些必要的庫,例如numpy、pandas、matplotlib和scikit-learn。 接下來,你需要導入數據集并將其分為訓練集和測試集。 然后,你可以使用scikit-learn庫中的LDA類來擬合模型并進行預測。 尺度不變特征變換(SIFT) ![]() SIFT算子是一種用于圖像特征提取的算法,全稱為尺度不變特征變換(Scale-invariant feature transform,SIFT)。它在尺度空間中尋找極值點,并提取出其位置、尺度、旋轉不變量,此算法由 David Lowe 在1999年所發表,2004年完善總結。 應用場景 SIFT算子的應用場景包括物體辨別、機器人地圖感知與導航、影響拼接、3D模型建立、手勢識別、影像追蹤等。 其中,物體辨別是SIFT算法最常用的應用之一,它可以在不受光照變化和尺度變化的情況下,對物體進行辨別。 優缺點 SIFT算子的優點 特征穩定,對旋轉、尺度變換、亮度保持不變性,對視角變換、噪聲也有一定程度的穩定性; SIFT算子的缺點 實時性不高,并且對于邊緣光滑目標的特征點提取能力較弱,不夠優化。如果您需要更快速的算法,可以考慮使用SURF算法。 如何使用 SIFT算法的主要步驟包括:尺度空間極值檢測、關鍵點定位、方向確定、關鍵點描述和匹配。 SIFT算子與SURF算子 SIFT算子和SURF算子都是計算機視覺中的特征點檢測算法。 SIFT算法是一種尺度不變的特征檢測算法,對于旋轉、尺度變換、亮度保持不變性,對視角變換、噪聲也有一定程度的穩定性;缺點是實時性不高,并且對于邊緣光滑目標的特征點提取能力較弱,不夠優化。 SURF算法是SIFT算法的增強版,它的計算量小,運算速度快,提取的特征與SIFT幾乎相同 SURF算子(Speeded-Up Robust Features) ![]() 是一種穩健的局部特征點檢測和描述算法,是對SIFT算法的改進。SURF算法在保持SIFT算法優良性能特點的基礎上,同時解決了SIFT計算復雜度高、耗時長的缺點,對興趣點提取及其特征向量描述方面進行了改進,且計算速度得到提高。 應用場景 SURF算法的應用場景包括圖像匹配、物體識別、三維重建、運動跟蹤等。 SURF算法在保持SIFT算法優良性能特點的基礎上,同時解決了SIFT計算復雜度高、耗時長的缺點,提升了算法的執行效率,為算法在實時計算機視覺系統中應用提供了可能。 如何使用 SURF算子的使用步驟如下: 定義SURF對象:cv2.xfeatures2d.SURF_create() 檢測關鍵點:detector.detect(img,None) 計算描述符:kp,des = detector.compute(img,kp) 可視化關鍵點:cv2.drawKeypoints(img,kp,img,color=(255,0,255)) 其中,第一步是定義SURF對象,第二步是檢測關鍵點,第三步是計算描述符,第四步是可視化關鍵點。 HOG特征提取算法 ![]() 是一種圖像特征提取算法,全稱為方向梯度直方圖(Histogram of Oriented Gradient),發表于2005年的CVPR。它是一種用于表征圖像局部梯度方向和梯度強度分布特性的描述符,用于解決人體目標檢測的圖像描述子。 HOG特征描述算法主要用于物體檢測和行人檢測等任務。HOG特征結合SVM分類器已經被廣泛應用于圖像識別中,尤其在行人檢測中獲得了極大的成功。除此之外,HOG特征也被應用于人臉檢測、車輛檢測、手勢識別等領域。 應用場景 行人檢測:由于HOG特征能夠反映人體的輪廓,并且它對圖像中的人體的亮度和顏色變化不敏感,在其檢測方面有優良的性能; 車輛檢測:由于HOG特征對光照的不敏感、即使存在部分遮擋也可檢測出來,在各種復雜的交通路和停車場所,有很好的魯棒性; 跟蹤:HOG特征在跟蹤具有明顯邊沿輪廓的運動目標時表現良好。 優缺點 優點: 對圖像幾何和光學形變都保持良好的不變性; 對于剛性物體的特征提取就有良好的特性;可以忽略細微的動作而不影響檢測效果。 缺點: 特征維度大(63x128圖片的特征維度有3780個); 計算量大; 無法處理遮擋。 如何使用 HOG特征提取算法的主要步驟包括: 將輸入樣本縮放為:64 x 128,把樣本圖像分割為8 x 8像素的單元(cellsize),把梯度方向平均劃分為9個區間(bin),在每個單元里面對所有像素的梯度方向在各個方向區間進行直方圖統計,得到一個9維的特征向量,每相鄰的4個單元構成一個塊(blocksize),把一個塊內的特征向量聯起來得到36維的特征向量,用塊(blocksize)對樣本圖像進行掃描,掃描步長(blockstride)為一個單元(cellsize)。 LBP算法 ![]() 是一種用來描述圖像局部特征的算子,具有灰度不變性和旋轉不變性等顯著優點。LBP常應用于人臉識別和目標檢測中,在OpenCV中有使用LBP特征進行人臉識別的接口。 應用場景 LBP算法是一種用來描述圖像局部特征的算子,常應用于人臉識別和目標檢測中。LBP特征提取結果還是大小相同的一幅圖像,一般都不將LBP圖譜作為特征向量用于分類識別,而是采用LBP特征譜的統計直方圖作為特征向量用于分類識別。 優缺點 LBP算子的優點包括: 一定程度上緩解光照變化帶來的問題 具有旋轉不變性 特征維度低,計算速度快 LBP算子的缺點包括: 如果光照不均勻,那么LBP值就不能反映真實的紋理特征 對方向敏感 如何使用 LBP算法的使用步驟如下: 計算圖像的LBP特征圖像,一般采用3×3的矩形塊,有1個中心像素和8個鄰域像素分別對應9個灰度值。以中心像素的灰度值為閾值,將其鄰域的8個灰度值與閾值比較,大于中心灰度值的像素用1表示,反之用0表示。然后根據順時針方向讀出8個二進制值。 將LBP特征圖像進行分塊,OpenCV中默認將LBP特征圖像分成8行8列64塊區域。 計算每塊區域特征圖像的直方圖cell_LBPH,將直方圖進行歸一化,直方圖大小為1* numPatterns。 將上面計算的每塊區域特征圖像的直方圖按分塊的空間順序依次排列成一行,形成LBP特征向量,大小為1 * (numPatterns*64)。 用機器學習的方法對LBP特征向量進行訓練,用來檢測和識別目標1。 高斯混合模型(GMM) ![]() 是一種聚類算法,它使用了高斯分布作為參數模型,并使用了期望最大(Expectation Maximization,簡稱EM)算法進行訓練。高斯混合模型(GMM)是單一高斯概率密度函數的延伸,能夠平滑地近似任意形狀的密度分布。高斯混合模型種類有單高斯模型(Single Gaussian Model, SGM)和高斯混合模型(Gaussian Mixture Model, GMM)兩類 應用場景 高斯混合模型(GMM)有很多應用場景,例如異常檢測、推薦系統、高斯詞向量、Fisher Vector等。 GMM已經在數值逼近、語音識別、圖像分類、圖像去噪、圖像重構、故障診斷、視頻分析、郵件過濾、密度估計、目標識別與跟蹤等領域取得了良好的效果 優缺點 GMM的優點包括: GMM使用均值和標準差,簇可以呈現出橢圓形,優于k-means的圓形。 GMM是使用概率,故一個數據點可以屬于多個簇。 GMM訓練速度快,聲學模型較小,容易移植到嵌入式平臺。 GMM的缺點包括: 對大規模數據和多維高斯分布,計算量大,迭代速度慢。 如果初始值設置不當,收斂過程的計算代價會非常大。 容易收斂到局部最優解 如何使用 高斯混合模型(GMM)是一種概率模型,可以用于聚類和密度估計。GMM的基本思想是假設數據集中的每個樣本都是由多個高斯分布隨機生成的,而這些高斯分布的參數是未知的。GMM的目標是通過觀測數據來估計這些參數,從而得到一個最優的高斯混合模型。 使用GMM的步驟如下: 初始化高斯分布的數量和參數。 使用EM算法來估計高斯分布的參數。 使用估計出來的高斯分布來對數據進行聚類或密度估計 BRIEF描述子 ![]() 是一種二進制特征描述子,主要是通過比較中心像素點p任意鄰域內的256對像素之間的差值來生成二進制描述子的 應用領域 BRIEF描述子可以應用于圖像匹配、目標跟蹤、三維重建等領域 優缺點 優點: 對已檢測到的特征點進行描述,摒棄了區域灰度直方圖描述特征點的傳統方法,加快特征描述子建立速度,降低特征匹配時間。 在旋轉程度較小的圖像中,使用BRIEF特征描述子的匹配質量非常高,測試的大多數情況都超過了SURF,但是在旋轉大于30°后,BRIEF特征描述子的匹配率快速降到0左右。 如何使用 使用BRIEF描述子的步驟如下: 在圖像中檢測出特征點。 對于每個特征點,計算其周圍像素的灰度值,然后根據這些灰度值生成一個二進制描述子。 對于兩幅圖像中的特征點,使用漢明距離計算它們的相似度。 ORB算法 ![]() 是一種基于FAST特征檢測與BRIEF特征描述子匹配實現的算法。它在FAST特征檢測的基礎上,通過積分圖像來進行平滑,進一步增強描述子的抗噪能力。在特征點的31x31鄰域內,ORB算法產生隨機點對,并以隨機點為中心,取5x5的子窗口。比較兩個隨機點的子窗口內25個像素的大小進行編碼(而不僅僅是兩個隨機點了)。 應用場景 ORB算法的應用場景包括圖像匹配、物體識別、三維重建、運動跟蹤等。 優缺點: 優點包括:魯棒性好,計算速度快,可擴展性強 缺點包括:對遮擋敏感,對光照變化敏感,對噪聲敏感。 具體來說,ORB算法在圖像中檢測特征點時,對于部分遮擋的區域會出現漏檢的情況,影響檢測效果。在圖像的光照變化比較明顯時,可能會出現特征點數量不穩定的情況,影響檢測效果。此外,ORB算法對于圖像中存在的噪聲比較敏感,可能會將噪聲誤判為特征點,影響檢測效果。 這些算法各有優缺點和應用場景。例如,LBP算法適用于人臉識別、紋理分類等領域;HOG特征提取算法適用于行人檢測、車輛檢測等領域;SIFT算子適用于圖像匹配、物體識別等領域;SURF算子適用于圖像匹配、物體識別等領域;BRIEF描述子適用于實時目標跟蹤、圖像拼接等領域。 |
|
來自: 山峰云繞 > 《機器學習視覺訓練模式識別攝像頭搜索原理》