HOG简介和OpenCV HOGDescriptor的用法

HOG简介和OpenCV HOGDescriptor的用法

前言
本文是为另一篇博文A服务的,A还没写好.

正文

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

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: OpenCVSharp是一个开源计算机视觉库,它为.NET Framework提供了对OpenCV库的封装。HOG描述符是一种在目标检测中使用的特征描述符,对于识别行人、车辆和动物等对象非常有效。HOG描述符的构建基于梯度方向直方图,通过将图像分成小的细胞,计算每个细胞的梯度运算结果,并根据梯度方向量化到梯度方向直方图中,最终组合得到一个特征向量。 在OpenCVSharp中,HOG描述符提取可通过使用HOGDescriptor类来实现。该类提供了多个构造函数,可以设置图像块的大小、细胞的大小和区块的数量等参数。为了在目标检测中使用HOG描述符,我们需要将提取到的特征向量传递给SVM分类器进行训练和预测。OpenCVSharp也提供了SVM类来实现SVM分类器,我们可以使用SVM.Train和SVM.Predict方法来分别进行训练和预测。 HOG描述符在目标检测中有着广泛的应用,可用于从图像、视频流或摄像头实时流中检测行人和车辆等。通过使用OpenCVSharp中的HOGDescriptor和SVM类,我们可以轻松地实现HOG描述符的构建和使用,从而提高目标检测的准确率和效率。 ### 回答2: OpenCvSharp HogDescriptorOpenCvSharp库中的一个特征提取器,它利用方向梯度直方图(HOG)的方法进行特征提取。HOG是一种用于目标检测的特征提取方法,它通过计算图像局部梯度的方向直方图来描述图像的局部特征。HOG特征提取器可以把图像分成若干个小块,然后计算每个块内像素的梯度直方图特征,再进行归一化处理,最后把这些特征向量组合成一个完整的特征向量作为输入送到分类器中。 OpenCvSharp HogDescriptor提供了一系列函数来实现HOG特征提取器的操作,包括计算图像的HOG特征、设置HOG描述符参数、计算HOG描述符函数等。此外,OpenCvSharp HogDescriptor还支持多个窗口大小,方便用户根据目标大小和分辨率进行调整。HOG特征提取器在目标检测、行人识别、人脸检测等领域有广泛的应用。通过OpenCvSharp HogDescriptor,用户可以方便地实现HOG特征的提取和处理,为图像处理和目标检测提供强大的支持。 ### 回答3: opencvsharp hogdescriptor是一种基于图像处理库OpenCV的图像特征描述符。HoG即方向梯度直方图,它是一种用于物体检测、行人检测等任务的图像特征描述符。它的基本思想是将图像分成小的单元,计算每个单元内像素点的梯度方向和强度,并将这些信息以直方图的形式表示出来,从而形成特征描述符。 在OpenCV中,HOGDescriptor类提供了一些计算HoG特征的方法,其中包括计算图像梯度、构建单元、计算直方图、归一化等步骤。opencvsharp hogdescriptor则是将这些方法封装为一个C#库,方便使用C#开发者进行图像特征提取的工作。 通过使用opencvsharp hogdescriptor,开发者可以轻松实现基于HoG的物体检测、行人检测等任务。同时,它还支持多线程计算和GPU加速,提高了计算效率。另外,它还提供了一些参数可以供开发者进行调整,如窗口大小、像素步长等,以适应不同的应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值