您的位置:首页 > 运维架构

【OpenCV】基于HOG与SVM的行人检测学习

2015-05-27 17:35 537 查看
最近听了关于HOG与SVM的报告,比较深刻的学习了算法原理与实现方式。这里根据一些资料作下总结,方便日后拾起:

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


将图像依次划分为检测窗口(window)、块(block)、胞元(cell)3个层次

大体流程:

逐像素计算方向梯度;

对cell中的像素根据梯度划分区间,给出统计直方图;

对于每个block中重叠的cell进行对比度归一化;

把所有直方图向量组成HOG特征向量。

HOG特征向量:



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描述子的


其特征向量维度即:



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行人检测(实例): /article/2151922.html

OpenCV HOGDescriptor 参数图解/article/2172925.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: