HOG简介和OpenCV HOGDescriptor的用法
前言
本文是为另一篇博文A服务的,A还没写好.
正文
- HOG简介
HOG是 Histogram of Oriented Gradient 简称, 即 “方向梯度直方图”.
维基百科: https://en.wikipedia.org/wiki/Histogram_of_oriented_gradients
百度百科: https://baike.baidu.com/item/HOG/9738560?fr=aladdin - OpenCV HOG的使用
OpenCV doc 网址: https://www.docs.opencv.org/
HOGDescriptor的用法
下面是来自OpenCV文档的定义
struct CV_EXPORTS HOGDescriptor
{
enum { DEFAULT_WIN_SIGMA = -1 };
enum { DEFAULT_NLEVELS = 64 };
enum { DESCR_FORMAT_ROW_BY_ROW, DESCR_FORMAT_COL_BY_COL };
HOGDescriptor(Size win_size=Size(64, 128), Size block_size=Size(16, 16),
Size block_stride=Size(8, 8), Size cell_size=Size(8, 8),
int nbins=9, double win_sigma=DEFAULT_WIN_SIGMA,
double threshold_L2hys=0.2, bool gamma_correction=true,
int nlevels=DEFAULT_NLEVELS);
size_t getDescriptorSize() const;
size_t getBlockHistogramSize() const;
void setSVMDetector(const vector<float>& detector);
static vector<float> getDefaultPeopleDetector();
static vector<float> getPeopleDetector48x96();
static vector<float> getPeopleDetector64x128();
void detect(const GpuMat& img, vector<Point>& found_locations,
double hit_threshold=0, Size win_stride=Size(),
Size padding=Size());
void detectMultiScale(const GpuMat& img, vector<Rect>& found_locations,
double hit_threshold=0, Size win_stride=Size(),
Size padding=Size(), double scale0=1.05,
int group_threshold=2);
void getDescriptors(const GpuMat& img, Size win_stride,
GpuMat& descriptors,
int descr_format=DESCR_FORMAT_COL_BY_COL);
Size win_size;
Size block_size;
Size block_stride;
Size cell_size;
int nbins;
double win_sigma;
double threshold_L2hys;
bool gamma_correction;
int nlevels;
private:
// Hidden
}
这是它的构造函数 :
部分参数解析 :
win_size 是检测窗口的大小
在检测的时候即(使用 gpu::HOGDescriptor::detectMultiScale)的时候, 窗口是以步长 win_stride 沿着img图像滑动的.
block_size 是窗口中可滑动的块的大小
由于局部光照的变化以及前景-背景对比度的变化,使得梯度强度的变化范围非常大。这就需要对梯度强度做归一化。归一化能够进一步地对光照、阴影和边缘进行压缩。
作者采取的办法是:把各个细胞单元组合成大的、空间上连通的区间(blocks)。这样,一个block内所有cell的特征向量串联起来便得到该block的HOG特征。这些区间是互有重叠的,这就意味着:每一个单元格的特征会以不同的结果多次出现在最后的特征向量中。我们将归一化之后的块描述符(向量)就称之为HOG描述符。[1]
cell_size block中细胞单元的大小
nbins bins的数量
参考文献
[1] http://blog.csdn.net/zouxy09/article/details/7929348