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

最近聽了關於HOG與SVM的報告,比較深入的學習了算法原理與實現方式。這裏根據一些資料做下總結,方便往後拾起:html


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

將圖像依次劃分爲檢測窗口(window)、塊(block)、胞元(cell)3個層次算法

大致流程:ide

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

HOG特徵向量:學習

60e6e3d54ca9518b964b3&690

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

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.net

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

其特徵向量維度即:clip_image0023d


 

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

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

大致能夠理解爲:利用正負樣本(特徵)學習,肯定分割兩種訓練樣本的最佳超平面,從而用於新對象的分類、識別。這裏即是提取正負樣本的HOG特徵進行訓練,而後一樣根據待分類對象的HOG特徵進行歸類或識別。htm


 

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

相關文章
相關標籤/搜索