这是本人本科做的毕业设计,根据opencv里面人体检测的HOG代码改写,加上了完整的注释(opencv里面是没有任何注释的),并且增加了样本的训练(代码中只提供了PCA50-HOG的检测算子,如有其它需要可以自行训练),线性检测时使用线性SVM优化,高斯检测时使用PCA的降维。同时对候选区域整合代码做了简化处理。
最后感谢网上的各位好心人提供的各类资源,在毕业设计过程中给予了我很大帮助。鉴于网上仍然还有若干未解决的问题,今天把我所做的也分享给大家,希望能给还在探索ing的朋友一些启发。如果有任何问题请留言或者email。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 115338 2012-06-05 00:40 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGcppHoG.cpp
文件 4132 2012-06-03 22:57 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGcppHoG.h
文件 4435 2012-06-04 21:51 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGcppHoG.vcproj
文件 1405 2012-04-16 17:13 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGcppHoG.vcproj.HP21.Administrator.user
文件 1415 2012-06-11 18:27 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGcppHoG.vcproj.lishan-pc.xiaoxiaolishan.user
文件 18307 2005-04-21 21:09 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGcrop_000001a.png
文件 19453 2012-04-18 21:59 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGcrop_000010a.png
文件 7360 2012-06-11 18:23 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGDebugBuildLog.htm
文件 663 2012-05-18 10:52 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGDebugcppHoG.exe.embed.manifest
文件 728 2012-05-18 10:52 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGDebugcppHoG.exe.embed.manifest.res
文件 621 2012-06-11 18:23 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGDebugcppHoG.exe.intermediate.manifest
文件 903269 2012-06-05 00:40 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGDebugcppHoG.obj
文件 197345 2012-06-11 18:23 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGDebugmainDetect.obj
文件 65 2012-06-11 18:23 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGDebugmt.dep
文件 789504 2012-06-11 18:23 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGDebugvc90.idb
文件 626688 2012-06-11 18:23 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGDebugvc90.pdb
文件 441474 2012-05-24 19:30 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGDebugwBlockCache.obj
文件 8043 2012-06-11 18:23 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGmainDetect.cpp
文件 3269 2012-05-18 11:01 cppHoG-raw-RBFcppHoG-raw-RBFcppHoG
ote.txt
文件 767 2012-04-23 18:11 cppHoG-raw-RBFcppHoG-raw-RBFcppHoG
esource.h
文件 32758 2012-05-24 19:30 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGwBlockCache.cpp
文件 1607 2012-03-28 11:23 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGwBlockCache.h
文件 18181120 2012-06-11 18:27 cppHoG-raw-RBFcppHoG-raw-RBFcppHoG.ncb
文件 884 2012-03-13 20:51 cppHoG-raw-RBFcppHoG-raw-RBFcppHoG.sln
..A..H. 72704 2012-06-11 18:27 cppHoG-raw-RBFcppHoG-raw-RBFcppHoG.suo
文件 302592 2012-06-11 18:23 cppHoG-raw-RBFcppHoG-raw-RBFDebugcppHoG.exe
文件 2876612 2012-06-11 18:23 cppHoG-raw-RBFcppHoG-raw-RBFDebugcppHoG.ilk
文件 2386944 2012-06-11 18:23 cppHoG-raw-RBFcppHoG-raw-RBFDebugcppHoG.pdb
文件 115622 2012-06-05 01:01 cppHoG-raw-RBF-PCAcppHoG-raw-RBFcppHoGcppHoG.cpp
文件 4132 2012-06-03 22:57 cppHoG-raw-RBF-PCAcppHoG-raw-RBFcppHoGcppHoG.h
............此处省略52个文件信息
#include “cppHoG.h“
#include “opencv2/highgui/highgui.hpp“
#include
#include
int iPosWindows =0; int iNegWindows=0;
//constructor
CcppHoG :: CcppHoG(Size sWinSizeSize sBlockSizeSize sBlockStrideSize sWinStrideSize sCellSizeint iBinsenGamacorrect enGammaCorstyleenBlockNormstyle enNormstylefloat fGaussSigmadouble dBlockThreshold)
{
this->sWinSize = sWinSize;
this->sBlockStride = sBlockStride;
this->sWinStride = sWinStride;
this->sBlockSize = sBlockSize;
this->sCellSize = sCellSize;
this->iBins = iBins;
this->enGammaCorstyle = enGammaCorstyle;
this->enNormstyle = enNormstyle;
m_fGaussSigma = fGaussSigma;
this->dBlockThreshold = dBlockThreshold;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
//compute the img‘s gradient
//this is not limited to the img of 64*158 size
//grad stores the gradient of each pixel
//angle means the angle of gradient
//paddingTL paddingBR is the padding scale which is mentioned in the paper
////////////////////////////////////////////////////////////////////////////////////////////////////////
void CcppHoG :: computeGradient(const Mat& mImg Mat& mGrad Mat& mAngle
Size sPaddingTL Size sPaddingBR) const
{
// assert the img is either 1 channel or 3 channel
uchar ucChannels =mImg.channels();
assert(ucChannels == 1 || ucChannels == 3);
// compute the size after padding
Size newSize(mImg.cols + sPaddingTL.width + sPaddingBR.width mImg.rows + sPaddingBR.height + sPaddingTL.height);
//both the mGrad and mAngle have two channels
mGrad.create(newSizeCV_32FC2);
mAngle.create(newSizeCV_8UC2);
// a vector contains the color scalar 0-255;
Mat_ _mScalar(1256);
const float *mScalar = &_mScalar(00);
//the following method is to make gamacorrection
//as you will see this is an efficiency algorithm
//e.g. if the pixel value is 36 and GamaSqrt is chosen
//the new value = _mScalar(old value);
//so much sqrt functions will be ignored.
if(enGammaCorstyle == GamaSqrt)
{
for(int i = 0; i < 256; i++)
_mScalar(0i) = std::sqrt(float(i));
}
else if(enGammaCorstyle == NoGama)
{
for(int j = 0; j < 256; j++)
_mScalar(0j) = (float)j;
}
//because of the padding we need two more variants iXmapiYMap.
//what‘s more when take the edge into account a new virtual edge will
//be used. here is a simple example help to understand better.
/*
suppose the img‘s matrix is the simple form
[123;
456;
789;]
and the paddings are 1and adding the virtual edge
the img‘s size should be 7*7
so the padded form should be as follows
[
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 115338 2012-06-05 00:40 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGcppHoG.cpp
文件 4132 2012-06-03 22:57 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGcppHoG.h
文件 4435 2012-06-04 21:51 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGcppHoG.vcproj
文件 1405 2012-04-16 17:13 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGcppHoG.vcproj.HP21.Administrator.user
文件 1415 2012-06-11 18:27 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGcppHoG.vcproj.lishan-pc.xiaoxiaolishan.user
文件 18307 2005-04-21 21:09 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGcrop_000001a.png
文件 19453 2012-04-18 21:59 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGcrop_000010a.png
文件 7360 2012-06-11 18:23 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGDebugBuildLog.htm
文件 663 2012-05-18 10:52 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGDebugcppHoG.exe.em
文件 728 2012-05-18 10:52 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGDebugcppHoG.exe.em
文件 621 2012-06-11 18:23 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGDebugcppHoG.exe.intermediate.manifest
文件 903269 2012-06-05 00:40 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGDebugcppHoG.obj
文件 197345 2012-06-11 18:23 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGDebugmainDetect.obj
文件 65 2012-06-11 18:23 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGDebugmt.dep
文件 789504 2012-06-11 18:23 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGDebugvc90.idb
文件 626688 2012-06-11 18:23 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGDebugvc90.pdb
文件 441474 2012-05-24 19:30 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGDebugwBlockCache.obj
文件 8043 2012-06-11 18:23 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGmainDetect.cpp
文件 3269 2012-05-18 11:01 cppHoG-raw-RBFcppHoG-raw-RBFcppHoG
ote.txt
文件 767 2012-04-23 18:11 cppHoG-raw-RBFcppHoG-raw-RBFcppHoG
esource.h
文件 32758 2012-05-24 19:30 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGwBlockCache.cpp
文件 1607 2012-03-28 11:23 cppHoG-raw-RBFcppHoG-raw-RBFcppHoGwBlockCache.h
文件 18181120 2012-06-11 18:27 cppHoG-raw-RBFcppHoG-raw-RBFcppHoG.ncb
文件 884 2012-03-13 20:51 cppHoG-raw-RBFcppHoG-raw-RBFcppHoG.sln
..A..H. 72704 2012-06-11 18:27 cppHoG-raw-RBFcppHoG-raw-RBFcppHoG.suo
文件 302592 2012-06-11 18:23 cppHoG-raw-RBFcppHoG-raw-RBFDebugcppHoG.exe
文件 2876612 2012-06-11 18:23 cppHoG-raw-RBFcppHoG-raw-RBFDebugcppHoG.ilk
文件 2386944 2012-06-11 18:23 cppHoG-raw-RBFcppHoG-raw-RBFDebugcppHoG.pdb
文件 115622 2012-06-05 01:01 cppHoG-raw-RBF-PCAcppHoG-raw-RBFcppHoGcppHoG.cpp
文件 4132 2012-06-03 22:57 cppHoG-raw-RBF-PCAcppHoG-raw-RBFcppHoGcppHoG.h
............此处省略52个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)