【OpenCV】基於HOG與SVM的行人檢測學習


最近聽了關於HOG與SVM的報告,比較深刻的學習了算法原理與實現方式。這里根據一些資料作下總結,方便日后拾起:


A.方向梯度直方圖(HOG,Histogram of Gradient)

將圖像依次划分為檢測窗口(window)、塊(block)、胞元(cell)3個層次

大體流程:

  1. 逐像素計算方向梯度;
  2. 對cell中的像素根據梯度划分區間,給出統計直方圖;
  3. 對於每個block中重疊的cell進行對比度歸一化
  4. 把所有直方圖向量組成HOG特征向量。

HOG特征向量:

60e6e3d54ca9518b964b3&690

OpenCV對於HOG描述子(即特征向量)維度的計算:

size_t HOGDescriptor::getDescriptorSize() const
{
    CV_Assert(blockSize.width % cellSize.width == 0 &&
        blockSize.height % cellSize.height == 0);
    CV_Assert((winSize.width - blockSize.width) % blockStride.width == 0 &&
        (winSize.height - blockSize.height) % blockStride.height == 0 );
    return (size_t)nbins*
        (blockSize.width/cellSize.width)*
        (blockSize.height/cellSize.height)*
        ((winSize.width - blockSize.width)/blockStride.width + 1)*
        ((winSize.height - blockSize.height)/blockStride.height + 1);
}

如以下HOG檢測器:檢測窗口(64,128),塊尺寸(16,16),塊步長(8,8),cell尺寸(8,8),直方圖bin個數9

HOGDescriptor hog(Size(64,128),Size(16,16),Size(8,8),Size(8,8),9);//HOG檢測器,用來計算HOG描述子的

其特征向量維度即:clip_image002


 

B.支持向量機SVM(Support Vector Machine)

它是一個有監督的學習模型,通常用來進行模式識別、分類、以及回歸分析。

大體可以理解為:利用正負樣本(特征)學習,確定分割兩種訓練樣本的最佳超平面,從而用於新對象的分類、識別。這里便是提取正負樣本的HOG特征進行訓練,然后同樣根據待分類對象的HOG特征進行歸類或識別。


 

C.具體資料

支持向量機(SVM)介紹與實現: http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/ml/introduction_to_svm/introduction_to_svm.html

方向梯度直方圖(HOG)學習筆記: http://blog.sina.com.cn/s/blog_60e6e3d50101bkpn.html

訓練SVM分類器進行HOG行人檢測(實例): http://blog.csdn.net/pb09013037/article/details/41256945

OpenCV HOGDescriptor 參數圖解: http://blog.csdn.net/raodotcong/article/details/6239431


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM