OpenCV中HOG特征的提取实现_fanjiaxia的博客-程序员秘密_opencv提取hog特征

技术标签: hog  方向梯度直方图  opencv函数  OpenCV学习  

OpenCV版本2.3.1

hog头文件:opencv\modules\objdetect\include\opencv2\objdetect中的objdetect.hpp

hog实现文件:opencv\modules\objdetect\src中的hog.cpp

参考文献:Histograms of Oriented Gradients for Human Detection 作者 Navneet Dalal and Bill Triggs


关于hog中HOGDescriptor的参数。参考博文http://blog.csdn.net/raodotcong/article/details/6239431


窗口大小winSize


块大小blockSize


cellSize



winsize,blocksize,blockstride,cellsize的关系必须满足条件:

blockSize.width % cellSize.width == 0 &&
        blockSize.height % cellSize.height == 0

(winSize.width - blockSize.width) % blockStride.width == 0 &&
        (winSize.height - blockSize.height) % blockStride.height == 0

getDescriptorSize()中可以看到。


Hog的维数为:

nbins*

(blockSize.width/cellSize.width)*

(blockSize.height/cellSize.height)* 

((winSize.width - blockSize.width)/blockStride.width + 1)* 

((winSize.height - blockSize.height)/blockStride.height + 1)


hog.cpp中的实现函数


1、void HOGDescriptor::computeGradient(const Mat& img, Mat& grad, Mat& qangle,
                                    Size paddingTL, Size paddingBR) const

img为输入图片

grad为输出梯度(两通道)

qangle为输入弧度(两通道)

paddingTL和paddingBR默认值为Size()

2、void HOGCache::init(const HOGDescriptor* _descriptor,
        const Mat& _img, Size _paddingTL, Size _paddingBR,
        bool _useCache, Size _cacheStride)

HOGCache的初始化,无默认参数。

函数中调用descriptor->computeGradient(_img, grad, qangle, _paddingTL, _paddingBR);计算了输入图像img的梯度和角度,存储于HOGDCache结构体的成员变量grad和angle中。

为了提高运行效率。将数据结果缓存与HOGCache结构体的中的BlockData结构体和PixData结构体中。

初始化作用:制定了一个block模板,并规定了此模板中每个像素对各个cell的贡献程度,即权值。

次函数较为复杂。要详细理解此函数请参考:

图文解释

http://blog.csdn.net/ttransposition/article/details/11874285

代码注释

http://blog.csdn.net/ttransposition/article/details/11880425

3、const float* HOGCache::getBlock(Point pt, float* buf)

得到左顶点(LT)为pt坐标的block的按梯度大小权值计算的方向的直方图,输出到buf中。直方图经过normalizeBlockHistogram函数(见下面)归一化。

4、void HOGCache::normalizeBlockHistogram(float* _hist) const

直方图L2-Hys归一化。即先2范数归一化,然后限制在一定范围内如程序中的【0,0.2】,然后重新对限制后的直方图L2范数归一化。详情见论文。

Size HOGCache::windowsInImage(Size imageSize, Size winStride) const

得到输入图像中的窗口个数,返回值为size,分别代表x和y方向上的窗口个数。

Rect HOGCache::getWindow(Size imageSize, Size winStride, int idx) const

得到窗口在输入图像中的矩形范围。

5、void HOGDescriptor::compute(const Mat& img, vector<float>& descriptors,
                            Size winStride, Size padding,
                            const vector<Point>& locations) const

descriptors为输出的直方图。维数为locations.size()*getDescriptorSize()。可以不用为descriptors.resize.函数内重新resize了。

locations参数为图像中窗口的左上(LT)坐标。

6、void HOGDescriptor::detect(const Mat& img,
    vector<Point>& hits, vector<double>& weights, double hitThreshold, 
    Size winStride, Size padding, const vector<Point>& locations) const

检测。需要预先设置svmDetector的值

hists为输出,其为窗口的左顶点坐标值

weights为输出。其为对应的hists窗口的svm分类距离。也就是经过线性分类后的分类结果的数值。只要比较该数值就可以判断是不是特定物体。

locations参数为图像中窗口的左上(LT)坐标。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/fanjiaxia/article/details/19085141

智能推荐

嵌入式LINUX搭建arm环境,手把手教你嵌入式ARM开发环境搭建_Theellyence的博客-程序员秘密

原标题:手把手教你嵌入式ARM开发环境搭建 1. 安装,配置,启动FTP服务· 安装FTP: sudo apt-get install vsftpd· 修改vsftpd的配置文件/etc/vsftpd.conf,将下面两行的'#'去掉#local_enable=YES#write_enable=YES· 修改完成后执行以下命令重启此服务sudo /etc/init.d/vsftpd resta...

mtk8788 pwm频率及背光亮度调节_阿闷的博客-程序员秘密

=======pwm频率修改当前ALPS branch上,disp_pwmdriver采用的是turnkey code,不同芯片型号,或不同branch,disp_pwm频率设定可能会有差异,因此客户有时会遇到如下问题:(1)如何修改lk和kernel下disp_pwm频率?(2)如何修改disp_pwm clock source?(3)为什么修改dts无效?首先 介绍下pw...

Python UnitTest框架,尝试一下_python安装unittest_郑大钱呀的博客-程序员秘密

【郑大钱呀】【公】【众】【号】,我们一起交流,一起学习。文章目录单元测试什么是UnitTest框架?简单示例unittest的常用断言方法assertEqual(self,值1,值2,msg=None)assertNotEqual(self,值1,值2)assertIn(self, member,container)assertNotIn(self,member,container)assertTrue(self,expr, msg=None)assertFalse(self, expr, msg=Non

linux diff 详解_天天向上_好好学习的博客-程序员秘密

diff是Unix系统的一个很重要的工具程序。它用来比较两个文本文件的差异,是代码版本管理的基石之一。你在命令行下,输入:  $ diff diff就会告诉你,这两个文件有何差异。它的显示结果不太好懂,下面我就来说明,如何读懂diff。一、diff的三种格式由于历史原因,diff有三种格式:  * 正常格式(normal dif

ESP32 官方文档(八)Flash 加密_esp32 flash 加密_InfiniteYuan的博客-程序员秘密

Flash 加密Flash 加密功能用于加密 ESP32 连接的 SPI Flash 的内容。 启用 Flash 加密后,SPI Flash 的物理读取不足以恢复大多数 Flash 内容。Flash 加密与安全启动功能分开,您可以使用 Flash 加密而无需启用安全启动。 但是,我们建议将这两种功能一起用于安全的环境。 在没有安全启动的情况下,需要执行其他配置以确保 Flash 加密的有...

MATLAB中矩阵及其运算_矩阵冒号运算_翱翔云端的博客-程序员秘密

矩阵是MATLAB最基本、最重要的数据对象。单个数据(标量)可以看成是矩阵的特例。所有MATLAB中的矩阵数据都按列存放。一、矩阵的建立1.直接输入法  * 将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。  * 矩阵元素可以是运算表达式。  * 若“[  ]”中无元素表示空矩阵。

随便推点

PCL(Point Clouds Library)在windows下的环境配置与使用_chentingpc的博客-程序员秘密

(注:本文实验环境为windows7+VS2010)    PCL是3D的视觉与图形库,可以说是OpenCV的little sister,这个库好像是2011年年中才放出来的,所以相关的资料还比较少,绝大多数参考资料都只能从官网http://pointclouds.org获得。要进一步了解PCL能做什么,请访问其官网。    在讲如何配置使用PCL之前,先说说这个kinect——PCL的数

九州--中国史学入门_csdn11223的博客-程序员秘密

禹,可能是夏时人们所崇拜的神。在《尚书》中,有《禹贡》篇,这是战国人所作。这一篇讲地理,把天下分为九州:冀州--山西、河北;兖州--河北、山东;青州--山东东部;徐州--山东南部、江苏北部;扬州--江苏南部,浙江、江西;荆州--...

导入的jar包为什么要放在lib文件夹下,你知道么?_cherry_vincent的博客-程序员秘密

对于很多刚开始学习web的同学,你们是否对lib文件夹产生过疑问?为什么jar包一定放在lib文件夹下面,我换个地方就不行。这个其实如果你不是用服务器是没有任何问题的,但是当你使用了web服务器类似于tomcat这种,那么你就要小心了。jar包导入工作空间这个是由我们人为控制的,我导哪个空间就有哪个,我不导行不行,可以,编译器会自动去寻找他所需要的jar包,但是服务器就不会他只会去寻找lib文件夹下的jar包并将他们拷贝到服务器上(就是在你服务器的当前项目的lib文件夹),这个你是不能控制的,所以刚接...

vite从零搭建vue3全家桶+elementPlus_睿智哈的博客-程序员秘密

目录1.vite 搭建项目安装node.js安装vscode构建项目2.整合路由3.整合element-plus4.整合axios5.整合less5.扩展工具包1.vite 搭建项目安装node.jsnode官方下载地址Node 版本要求需要 Node.js v8.9 或更高版本 (推荐 v10 以上)。你可以使用 n,nvm 或 nvm-windows 在同一台电脑中管理多个 Node 版本。安装vscode官方下载地址vscode下载地址2下载安装之后 打开vscode安装vetur

回文日程序设计_小十七酱ovo_小十七酱好菜呀qwq的博客-程序员秘密

**回文日程序设计**害,今天是2020.02.28周五,因为疫情,所以我在家里上网课。这不面向对象程序设计布置的第一个代码作业来咯~拖了这么久2333我太懒辽,一条废鱼呜。废话不多说进入程序正题辽~要求回顾:什么是回文?“回文”是指正读反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。在数学中也有这样一类数字有这样的特征,成为回文数(pali...

idea报错:Failed to execute goal org.apache.maven.pluginsmaven-compiler-plugin3.1compile (default_普通网友的博客-程序员秘密

一、错误描述在使用maven工具进行项目打包时,报出了下面的错误:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project cloud-api-commons: Fatal error compiling二、解决办法我的jdk是1.8,下面以jdk1.8进行讲解首先,我创建的是一个springboot项目,一个父工程中包含.

推荐文章

热门文章

相关标签